官方文档:https://hub.docker.com/_/mysql
配置和数据目录
docker使用数据卷的方式将docker容器内部的文件映射到外部的文件,达到持久化的目的
下列安装使用的 数据库data目录和配置文件
/home/mysql/data
/home/mysql/mysql.cnf
如需更换,自行替换下方的文件位置
修改配置的话,修改配置文件,停止再启动
安装
mkdir -p /home/mysql/data
cat > /home/mysql/mysql.cnf << EOF
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
max_allowed_packet = 20M
max_connections=1000
EOF
第一次启动,设置root的密码
docker run -e MYSQL_ROOT_PASSWORD=${password} -v /home/mysql/data:/var/lib/mysql -v /home/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf -p 3306:3306 -d mysql:5.7
* 密码不要加 !
-e 设置密码 仅第一次有效,后续即使修改执行语句中的${password}再执行也不会将密码修改,仍然是第一次的密码
正常启动
docker run -v /home/mysql/data:/var/lib/mysql -v /home/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf -p 3306:3306 -d mysql:5.7
停止
使用docker ps 找到对应的container id,执行,下面以${containerId}表示
docker stop -it e1747a419c93
进入mysql
进入Docker
docker exec -it ${containerId} /bin/bash
执行mysql -u -p 即可进入mysql
第一次进入需查看
mysql> show variables like "%character%";show variables like "%collation%";
字符集务必设置utf8,不能出现latin
执行exit退出docker
添加用户
添加远程登录用户
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
确认修改
FLUSH PRIVILEGES;
备份还原
备份数据
docker exec -it ${containerId} mysqldump -uroot -p${password} count > /home/count1.sql
还原数据
docker exec -i ${containerId} mysql -uroot -p${password} count < /home/count.sql