docker容器mysql5.7远程连接成功mysql8远程连接权限不够

问题

docker容器mysql5.7远程连接成功mysql8远程连接权限不够
在这里插入图片描述
docker容器mysql5.7远程连接成功mysql8远程连接权限不够_第1张图片

原因

百度才知道由于mysql8.0默认的密码加密方式是 caching_sha2_password,而目前大多数人使用的navicat版本是不支持的,因此需要在docker启动mysql的时候指定挂载服务器主机的my.cnf配置文件

解决步骤

在宿主机(虚拟机)创建持久化 mysql data 及mysql.cnf

mkdir -p /usr/local/mysqlData/test/conf
mkdir -p /usr/local/mysqlData/test/data
vi /usr/loal/mysqlData/test/cnf/mysql.cnf

添加操作权限

备注:挂载时权限验证(操作权限)

chmod 777 /usr/local/mysqlData/test/data

运行镜像,设置初始密码、本机与docker端口的映射与挂载本地数据盘 (启动msyql服务)

docker run -it -p 3307:3306 --name tensquare_mysql -v /usr/local/mysqlData/test/conf:/etc/mysql -v /usr/local/mysqlData/test/data:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 mysql

docker容器mysql5.7远程连接成功mysql8远程连接权限不够_第2张图片
在这里插入图片描述

进入容器设置权限(为root分配权限,以便可以远程连接)

docker exec -it tensquare_mysql bash
root@0faaac6a1edc:/# mysql -u root -p
mysql> grant all privileges on *.* to root@'%' with grant option;
mysql> alter user 'root'@'%' identified by '123456' password expire never;
mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
mysql> flush privileges;

docker容器mysql5.7远程连接成功mysql8远程连接权限不够_第3张图片
docker容器mysql5.7远程连接成功mysql8远程连接权限不够_第4张图片

解决!

docker容器mysql5.7远程连接成功mysql8远程连接权限不够_第5张图片

你可能感兴趣的:(Docker)