大约以下几个步骤 :
安装 docker的 gui
申请阿里的 docker加速服务 https://cr.console.aliyun.com
Mac 里配置preferences -> Registry Mirrors里增加自己申请的加速服务地址.
命令行就可以运行 docker search mysql 找到官方的,然后
拉下镜像 docker pull mysql:5.7.27
最关键的启动命令,我在自己的 home 下创建了 docker 的数据目录
/Users/我的用户名/docker_home/mysql57
,然后把下方的命令,存为 startMysql57.sh1
2
3
4
5
6docker 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 下来那个.给刚才的sh 增加运行权限,
chmod +x startMysql57.sh
运行
./startMysql57.sh
,目录下就多了几个上方配置的文件夹了.
顺利的话,此处可以直接 navicat 链接了.注意此处端口是33060
如果是 windows ,上方步骤应该差不多.下方的注意下.
遇到的坑:
- 阿里的那个入口貌似不怎么好找?
- 加速地址要更换下顺序,把自己的放到第一位,否则似乎还是很慢
- 如果 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'
如果是 mysql8 遇到授权问题,参考
https://blog.csdn.net/AFishhhhhh/article/details/80368927如果使用 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 创建后就正常了?