ming's blog
m1芯片安装docker-mysql

m1芯片安装docker-mysql

自己平时是不喜欢直接在机器上安装mysql的,因为碎片文件比较多,删除mysql的时候会非常麻烦,得不厌其烦的寻找并删除碎片文件。直到我遇到了docker,我才觉得找到了答案,直接在docker上启动一个mysql服务,用可视化工具做远程连接就好,删除也没有负担,随时随地都可以重新准备就绪。

但是最近我在新电脑上启动docker-mysql时发现docker官方容器并不支持apple m1芯片,找了很长时间才找到一个由mysql官方维护的容器是支持的,于是就开始尝试使用这个容器。

在使用过程中,我发现一个问题就是我的DataGrid怎么也连不上mysql服务,一直提示 [HY000][1130] null, message from server: "Host '172.17.0.1' is not allowed to connect to this MySQL server".。研究了很长时间,发现原因是该容器是mysql-server,可以理解为运行着mysql的服务器,所以本地连接的时候相当于远程访问,也就是说需要进容器内打开mysql的远程登录,并授予用户远程登录权限。

具体操作如下:

  1. 启动mysql-server容器(可以加-v将宿主机卷空间挂载进去,用于备份数据库)

    docker run --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql/mysql-server
  2. 使用改表法为用户增加访问权限docker exec进容器内,找到mysql库下的user表,将其hosts从localhost改成%或远程主机的IP(我这里是个人机器上使用就改root用户,具体请酌情考虑)

    mysql -uroot -proot
    
    mysql> use mysql;
    mysql> select host,user from user;
    mysql> update user set host="%" where user="root";
    mysql> select host,user from user;
  3. 上述内容修改完后,就可以退出容器里,最后重启容器即可

    docker restart mysql-server;

以上步骤都做完后,即可使用可视化工具远程访问mysql服务。最后需要注意的一点是,远程访问最好设置 useSSL=true,打开安全传输。