docker pull mysql:[版本号]
当前安装mysql8.0,执行docker pull mysql:8.0
docker images
这里由于8.0和5.6配置文件目录有所不同,可能会发生
通过docker logs命令查看,是由于缺少/etc/mysql/conf.d目录,启动失败.需要先查看目录结构,再做判断.
此处不绑定端口,只用于查看文件目录,和拷贝配置,也不会后续创建的容器发生端口冲突:
docker run -d -e MYSQL_ROOT_PASSWORD=123456 --name mysql8.0_test mysql:8.0
进入容器中,查看对应/etc/下的mysql配置文件:
docker exec -it mysql8.0_test /bin/bash
此处可以看到存在my.cnf,my.cnf.d,mysql.
此处可以推断,挂载时保留目录conf.d
docker run -d -p 3306:3306 -v [本地目录]:[容器目录] -e MYSQL_ROOT_PASSWORD=[设置密码] --name [设置容器名] mysql:[拉取的镜像版本号]
docker run -d -p 3306:3306 -v /root/docker_mount/mysql_8.0/node_01/conf:/etc/mysql/conf.d -v /root/docker_mount/mysql_8.0/node_01/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql8.0_node01 mysql:8.0
docker ps
docker exec -it [容器名] /bin/bash
1.进入容器内
docker exec -it mysql8.0_node01 /bin/bash
2.登录mysql
mysql -u root -p, 此时提示输入密码,输入密码即可进入
3.开启远程连接
use mysql;
select Host,User from user;
此时查看到存在Host允许为任意ip访问root用户。
如果没有则需要以下命令赋予权限:
GRANT ALL PRIVILEGES ON . TO ‘root’@‘%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
FLUSH PRIVILEGES;