01拉取镜像
docker pull mysql:5.7.24
01查看镜像
docker images
03创建持久化存储目录
mkdir -p /home/mysql/{conf,data,log}
04配置文件my.cnf
touch /home/mysql/conf/my.cnf
vim /home/mysql/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
server-id = 1
log-bin=mysql-bin
expire_logs_days=30
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
max_connections=1000
symbolic-links=0
05授权
chmod 777 /home/mysql/data/ /home/mysql/log
chmod 644 /home/mysql/conf/my.cnf
06docker run
docker run -p 3306:3306 --restart=always --name mysql-server --privileged=true -v /home/mysql/log:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.24 --lower-case-table-names=1
- -p:主机端口:容器端口。
- -d:启动的镜像名称。
- –name:设置容器名称。
- –privileged=true:赋予容器权限修改宿主文件权利。
- -restart=always:设置docker启动时,容器跟随自启。
- –lower-case-table-names=1:用于指定表名是否进行大小写不敏感的处理。
- -e MYSQL_ROOT_PASSWORD=123456:设置MySQL的root用户的密码。
- -v /home/mysql/log:/var/log/mysql:挂载容器日志到宿主,方便查看日志。
- -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf:挂载容器配置文件到宿主,方便修改配置文件。
- -v /home/mysql/data:/var/lib/mysql:挂载容器存储文件到宿主,避免因不小心卸载容器或者容器损坏导致数据丢失不可找回风险。
06检查
docker ps -a
docker exec -it mysql-server bash
mysql -uroot -proot
show databases;
use mysql;
show tables;
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
07防火墙放行端口
firewall-cmd --list-ports
firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld