macOS 上用 docker 运行 Mysql57 用 navicat 可以管理

大约以下几个步骤 :

  1. 安装 docker的 gui
  2. 申请阿里的 docker加速服务 https://cr.console.aliyun.com
  3. Mac 里配置preferences -> Registry Mirrors里增加自己申请的加速服务地址.
  4. 命令行就可以运行 docker search mysql 找到官方的,然后
  5. 拉下镜像 docker pull mysql:5.7.27
  6. 最关键的启动命令,我在自己的 home 下创建了 docker 的数据目录/Users/我的用户名/docker_home/mysql57,然后把下方的命令,存为 startMysql57.sh
docker run -p 33060:3306 --name mysql57 \
 -v $PWD/conf:/etc/mysql/conf.d \
 -v $PWD/logs:/logs \
 -v $PWD/data:/var/lib/mysql \
 -e MYSQL_ROOT_PASSWORD=123456 \
 -d mysql:5.7.27

上方命令解释:

-p 端口映射, 本地33060 访问容器的 3306
--name 起个名字
-v 挂载各种目录, $PWD 是当前目录. 左边是本机,右侧是容器暴露的 volume
-e 设置一些变量,此处改了默认密码
-d 用那个镜像,我这边用了刚才 pull 下来那个.
  1. 给刚才的sh 增加运行权限, chmod +x startMysql57.sh
  2. 运行 ./startMysql57.sh,目录下就多了几个上方配置的文件夹了.

顺利的话,此处可以直接 navicat 链接了.注意此处端口是33060

如果是 windows ,上方步骤应该差不多.下方的注意下.

遇到的坑:

  1. 阿里的那个入口貌似不怎么好找?
  2. 加速地址要更换下顺序,把自己的放到第一位,否则似乎还是很慢
  3. 如果 localhost 不能链接,不同平台会有不同的情况,尤其是 win 下,必须要找到虚拟机的 IP, 或者说 docker container 的 IP .docker 的 gui 看一眼有没有配置.
    如果是 win 下 , 可能要用 docker-machine 来查看 IP
    或者可能是 docker inspect --format '{{ .NetworkSettings.IPAddress }}'
    来查看 IP,具体情况具体考虑.

如果是通过以上方式,则需要进入 bash 设置 mysql root 的外部链接权限(MySQL 默认是 localhost 没问题,但是很显然这个地方不一定是 localhost)
docker exec -it mysql57 bash 进入.
数据库 use mysql 下 user 表:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'

  1. 如果是 mysql8 遇到授权问题,参考
    https://blog.csdn.net/AFishhhhhh/article/details/80368927

  2. 如果使用 docker exec -it 的时候报错:

OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "exec: \"hash\": executable file not found in $PATH": unknown

我也不知道为啥..然后 sudo再执行这条命令,然后就好了,不 sudo 也行.猜是路径问题, 普通用户无权限.sudo 创建后就正常了?

你可能感兴趣的:(macOS 上用 docker 运行 Mysql57 用 navicat 可以管理)