背景:新买阿里云服务器,本想图省事docker一键安装mysql8.但是确遇到一坑,此处做个记录。
1.直接在安装了docker的linux服务器上运行
docker run \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=wnn.net168 \
-v /home/data/mysql/data:/var/lib/mysql:rw \
-v /etc/localtime:/etc/localtime:ro \
--name wnn_mysql \
--restart=always \
-d mysql:8.0
此过程1-2分钟这样,下载后自启动好即可。
2.正常启动
3.但是使用navicat连接失败。确认阿里云的安全组3306是已开放的。
4.解决方式
docker exec -it xxxx_mysql /bin/bash
进入docker-mysql容器内,然后进入mysql远程连接。
更新root用户,并指定登录密码"xxxxx.net168",可以在任何一台远程主机登录.然后刷新操作。
ALTER USER 'root'@'%' IDENTIFIED BY 'xxx.net168' PASSWORD EXPIRE NEVER;
5.原因
此种方式安装的mysql8中的mysql.user表中里,root用户只能本机(Host列是localhost)登录,navicat远程无法连接。
上述第四步骤增加root的host列为%,即可进行远程登录。