MacBook M1芯片 docker 下部署MySQL

Posted 阿拉的梦想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MacBook M1芯片 docker 下部署MySQL相关的知识,希望对你有一定的参考价值。

下载MySQL镜像

若要下载最新版,在命令行中:
docker pull mysql

但是由于M1芯片的MacBook对此版本不适配,所以会报错:

$ docker pull mysql 
Using default tag: latest
latest: Pulling from library/mysql
latest: Pulling from library/mysql
no matching manifest for linux/arm64/v8 in the manifest list entries

这时,我们打开docker的镜像中心:

https://hub.docker.com

然后镜像搜索框输入MySQL,筛选项选ARM 64 :

然后拉取此镜像即可:

docker pull mysql/mysql-server

启动镜像容器

1. 首先查看下载后的镜像是否存在

# ccl @ bogon in ~ [14:28:34] 
$  docker images
REPOSITORY               TAG       IMAGE ID       CREATED       SIZE
redis                    latest    93f2223d3607   4 weeks ago   107MB
docker/getting-started   latest    720f449e5af2   4 weeks ago   27.2MB
mysql/mysql-server       latest    087c6f86492c   7 weeks ago   509MB

2. 启动mysql

方式1,命令启动:

 docker run --name=mysql1 -d mysql/mysql-server

方式2,窗口启动

启动后可以在这里查看,绿色图标的表示运行中

也可以通过命令看正在运行的容器:

docker ps 

登录并修改默认密码

1. 查看原密码

docker logs mysql
或
docker logs mysql | grep GENERATED

箭头处就是自动生成的默认密码,我们需要用这个密码登录并修改密码。

2. 登录

docker exec -it mysql mysql -uroot -p
输入上面的密码即可

3. 修改密码为root:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'

这样就可以用新密码登录了。

远程登录MySQL

经过上面的设置,MySQL是无法从远程登录的,就是说从桌面的Navicat无法连接到docker里的MySQL,会报拒接连接。

1. 首先,查看用户表信息

mysql> select user,host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| healthchecker    | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

发现所有用户只能在localhost上使用

2. 修改用户表的host

经过百度查询,大都说要这样授权,但我这里还是报错了:

mysql> GRANT ALL ON *.* TO 'root'@'%';
ERROR 1410 (42000): You are not allowed to create a user with GRANT

经查询,应当先改用户表:

mysql> update user set host = '%' where user = 'root' and host='localhost';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

查看用户表:
发现已经修改成功

mysql> select user,host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| healthchecker    | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

继续授权:

mysql> GRANT ALL ON *.* TO 'root'@'%';
ERROR 1410 (42000): You are not allowed to create a user with GRANT

还是报错。。。

不管了,先用Navicat连接试试,竟然成功了。

以上是关于MacBook M1芯片 docker 下部署MySQL的主要内容,如果未能解决你的问题,请参考以下文章

M1芯片的MacBook安装docker

MacBook Air M1 行动起来

MAC M1下 docker部署Mysql和Navicate连接docker数据库

MAC M1下 docker部署Mysql和Navicate连接docker数据库

MAC M1下 docker部署Mysql和Navicate连接docker数据库

MAC M1下 docker部署Mysql和Navicate连接docker数据库