010-Docker安装MySQL5.7
一、拉取MySQL5.7镜像
$ docker pull mysql:5.7
# 等待镜像拉取完成
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 5107333e08a8 5 months ago 501MB
二、快速启动一个MySQL容器
$ docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
812f56f8f239 mysql:5.7 "docker-entrypoint.s…" 4 seconds ago Up 4 seconds 33060/tcp, 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp mysql
三、挂载数据卷方式启动MySQL容器
1.创建数据挂载目录
$ mkdir -p /opt/software/mysql/mysql-01/conf
$ touch /opt/software/mysql/mysql-01/conf/my.cnf
$ mkdir -p /opt/software/mysql/mysql-01/data
$ mkdir -p /opt/software/mysql/mysql-01/logs
2.编写my.cnf配置文件
[mysqld]
#skip-grant-tables
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
symbolic-links=0
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
3.挂载启动容器
$ docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /opt/software/mysql/mysql-01/logs:/var/log/mysql \
-v /opt/software/mysql/mysql-01/data:/var/lib/mysql \
-v /opt/software/mysql/mysql-01/conf/my.cnf:/etc/my.cnf \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -itd mysql:5.7
4.查看容器状态,测试链接
$ docker ps
$ docker logs mysql-01
$ docker exec -it mysql-01 mysql -uroot -p123456
5.MySQL无法登录问题
"Host '106.6.72.227' is not allowed to connect to this MySQL server.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
将my.cnf
配置文件中的#skip-grant-tables
取消注释后重启容器
docker restart mysql
重启后登录mysql执行以下操作
use mysql;
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
exit;
再将my.cnf
配置文件中的skip-grant-tables
注释后重启容器
Last modified: 11 October 2024