m1pro 芯片使用 docker 部署 mysql

CSDN 中文章不一定能及时更新,欢迎点击前往我的博客查看最新版本:许盛的博客

最近新电脑到了,要用 docker 在本地跑个 mysql 开发用一下,但是发现以前的常规套路不管用了,踩了不少坑才解决问题,记录一下以作备忘。

镜像问题

docker hub 中有一个 mysql 镜像,这是以前用的比较多的镜像,我到现在才知道原来这个镜像不是 mysql 官方的,而是 docker 官方的,这个镜像并没有提供 arm 版本的,如下:

Untitled

换成 mysql 官方提供的镜像 mysql/mysql-server 即可:

Untitled

docker-compose.yml 文件

本地跑这种基础服务类的容器时,我不太喜欢直接 docker run,使用 docker-compose 更加方便管理一点,准备 docker-compose.yml 文件如下:

version: '3.1'
services:
  mysql:
    image: mysql/mysql-server:8.0.27
    container_name: mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: root
    ports:
      - '3306:3306'
    volumes:
      - ./data:/var/lib/mysql

然后执行 docker-compose up -d 命令即可。

数据持久化问题

上面的 docker-compose.yml 文件中,有一个 volumes 配置,然后容器一直无法启动成功,这是因为这个挂载的宿主机目录, docker 可能并没有权限,需要设置一下。

Untitled

在设置中找到 FILE SHARING 部分,然后加入你希望挂载的宿主机目录即可。

mysql 访问问题

mysql 镜像不同, mysql-server 启动的容器默认只允许 [localhost](http://localhost) 访问,所以我们在容器外部连 mysql 会被拒绝,需要进容器修改一下。

# 进入容器
docker exec -it mysql bash

# 进入 mysql
mysql -uroot -p

使用 select host,user from mysql.user; 可以看到:

Untitled

如上所示,默认情况下 root 用户只允许 [localhost](http://localhost) 访问,修改修改就好了。

# 将 host 修改为 %
update user set host = '%' where user = 'root';

# 刷新
flush privileges;

此时在容器外部就可以访问了 💪🏻。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值