首先,下载镜像:
docker pull mysql:8.0
创建/data/soft/mysql8.0/conf目录,在conf文件夹内创建 my.cnf:
[mysqld] datadir=/usr/local/mysql/data default_authentication_plugin=mysql_native_password #使用mysql8以前的密码插件,以便navicat等工具能够正常连接 default-storage-engine=INNODB character_set_server=utf8mb4 secure_file_priv=/var/lib/mysql [mysqld_safe] character_set_server=utf8mb4 [mysql] default-character-set=utf8mb4 [mysql.server] default-character-set=utf8mb4 [client] default-character-set=utf8mb4
然后,运行容器:
docker run --restart=always -d --name mysql8.0Instance -v /data/soft/mysql8.0/conf/my.cnf:/etc/mysql/my.cnf -v /data/soft/mysql8.0/data:/usr/local/mysql/data -v /data/soft/mysql8.0/log:/var/log/mysql -p 3311:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8.0
容器运行后,查看目录变化:
[root@tlzs mysql8.0]# cd /data/soft/mysql8.0/ [root@tlzs mysql8.0]# ll 总用量 12 drwxr-xr-x. 2 root root 4096 5月 2 11:34 conf drwxr-xr-x. 7 polkitd root 4096 5月 3 09:48 data drwxr-xr-x. 2 root root 4096 5月 3 09:22 log
接着,进入容器内部:
[root@tlzs mysql8.0]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d5fcc7e69e12 mysql:8.0 "docker-entrypoint.s…" 9 hours ago Up 9 hours 33060/tcp, 0.0.0.0:3311->3306/tcp, :::3311->3306/tcp mysql8.0Instance 13fab3c9b874 mysql:5.7 "docker-entrypoint.s…" 2 days ago Up 2 days 33060/tcp, 0.0.0.0:3309->3306/tcp, :::3309->3306/tcp mysql5.7Instance [root@tlzs mysql8.0]# docker exec -it d5 bash root@d5fcc7e69e12:/#
修改docker.cnf的内容:
echo skip-grant-tables >> docker.cnf
然后退出容器,执行如下命令:
docker exec -it d5 mysql -uroot -proot
进行root远程登录设置:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'XXXXXXXX'; flush privileges;
然后重启mysql,
docker restart d5
即可远程root连接!!!
创建新用户,并赋予远程连接权限(%代表匹配所有host):
mysql> select Host,User,authentication_string from mysql.user
查询数据库用户
创建新用户,并赋予远程连接权限(%代表匹配所有host)
mysql> CREATE USER 'root1'@'%' IDENTIFIED BY 'root1';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root1'@'%' WITH GRANT OPTION;
mysql> flush privileges;



