1: 安装mysql5.7(若是想使用最新版本mysql,不加标签版本号即可)
docker pull mysql/mysql-server:5.7
2: 查看镜像文件
docker image ls
3: 启动mysql容器
docker run --name=mysql1 -p 3306:3306 -p 33060:33060 --restart always --privileged=true -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -d mysql/mysql-server5.7
4: 查看运行的容器
[root@JD ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
145ff38857ce mysql/mysql-server:5.7 "/entrypoint.sh my..." 10 seconds ago Up 9 seconds (health: starting) 0.0.0.0:3306->3306/tcp, 0.0.0.0:33060->33060/tcp mysql1
5: 查看mysql容器启动日志
docker logs mysql1
6: 从日志中获取自动生成的密码
docker logs mysql1 2>&1 | grep GENERATED
7: 登录数据库进行mysql配置
#登录容器
docker exec -it mysql1 mysql -uroot -p
#修改root密码
alter user 'root'@'localhost' identified by '!qaz2wsX';
#添加远程mysql用户
create user 'root'@'%' identified by '!qaz2wsX';
#授权新建的用户
grant all privileges on *.* to 'root'@'%';
8: 此时可以使用远程用户连接数据库。
远程无法访问时
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
注意:防火墙,若是云服务器,需要配置用户组。
运行实例:
#使用宿主机上的配置文件和宿主机上指定目录存储数据
docker run --name=mysql1 -p 3306:3306 -p 33060:33060 --restart always --privileged=true -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -d mysql/mysql-server:5.7
#使用宿主机上指定目录存储数据
docker run --name=mysql -p 3306:3306 -p 33060:33060 --restart always --privileged=true -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='!qaz2wsX' -d mysql/mysql-server
#mysql镜像搭建,直接指定mysql root密码
docker run --name=custom-mysql -p 3306:3306 -p 33060:33060 \
--restart always --privileged=true \
-v /data/mysql/conf.d:/etc/mysql/conf.d \
-v /data/mysql/conf:/etc/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/log:/var/log \
-e MYSQL_ROOT_PASSWORD='!qaz2wsX' \
-d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci