MAC上连接Docker下的最新版Mysql

Server 林涛 3704℃ 0评论

由于最新版Mysql采用了新的加密方式(例如 Mysql8),所以远程连接需要设置Mysql的配置。以下方法在Navicat上链接成功。

1. Mac上安装Docker和Mysql的Docker略去,见上一篇。

2. 运行镜像,设置root账号初始密码(123456),映射本地宿主机端口3306到Docker端口3306。

$ docker run -it –rm –name test_mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql

3. 查看已运行的容器:

$ docker ps -a

4. 进入test_mysql容器:

docker exec -it test_mysql bash

5. 在容器内登陆Mysql

mysql -uroot -p123456

6. 查看root等用户信息

mysql> select user,host,authentication_string from mysql.user;

7. 为root分配权限,以便可以远程连接:

mysql> grant all PRIVILEGES on *.* to root@‘%’ WITH GRANT OPTION;

8. 使用Navicat链接会提示链接失败。因为Mysql5.6以上的版本修改了Password算法,这里需要更新密码算法,操作步骤如下:

mysql> ALTER user ‘root’@‘%’ IDENTIFIED BY ‘123456’ PASSWORD EXPIRE NEVER;

mysql> ALTER user ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;

mysql> FLUSH PRIVILEGES;

9. 再次使用Navicat链接,提示成功。

10. 如果使用php链接

$mysqli = new mysqli("mysql的docker的ip", "root", "123456");

如需转载请注明: 转载自26点的博客

本文链接地址: MAC上连接Docker下的最新版Mysql

转载请注明:26点的博客 » MAC上连接Docker下的最新版Mysql

喜欢 (1)
发表我的评论
取消评论

表情
(2)个小伙伴在吐槽
  1. 博主您好,我在mac上安装了docker,docker里面也安装了mysql 5.8。 我可以使用Navicat连接docker里的mysql,使用phpstorm内置的数据库连接也可以。但是我在写php连接mysql的时候发现连接不上,用了您说的方法,我找到了docker的ip,实际情况是mac ping不通docker,端口映射是这样的:主机的3307映射docker的3306 php语句: $link = mysqli_connect('172.17.0.2','root','root','test','3306');//执行超时,连接不上 $link = mysqli_connect('localhost,'root','root','test','3307');//报错
    匿名2020-08-11 19:14 回复
    • php应该是没有在docker上吧,链接mysql用 127.0.01试试,端口是3307;172.17.0.2是docker之间的ip地址,可用理解为docke之间有个局域网,宿主机和docker之间是不能直接链接的;Navicat用的是ip地址吧~
      林涛2020-08-13 15:39 回复