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

大约以下几个步骤 :

  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

    1
    2
    3
    4
    5
    6
    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

    上方命令解释:

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

  8. 运行 ./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 }}' <container-ID>
    来查看 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 的时候报错:

    1
    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 创建后就正常了?

由 Hexo 驱动 & 主题 Keep
本站由 提供部署服务
总字数 74.6k 访客数 访问量