系统环境
- 操作系统:mac
- Docker版本:18.03.1-ce
- docker-compose版本:1.21.2
一、拉取镜像
docker pull mysql
二、编写 docker-compose.yml
文件
version: '2'
networks:
basic:
services:
mysql:
container_name: mysql
image: mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=admin
volumes:
- ./mysql:/var/lib/mysql
networks:
- basic
这里需要说明下:
- MYSQL_ROOT_PASSWORD 是设置mysql的登录密码,我们进入容器后登录mysql就得用这个密码。
- volumes 挂载把容器里面的
/var/lib/mysql
目录挂载到本地的mysql
目录下,如果这里不挂载到本地,那你重启容器时就会发现数据没了,这个很重要。 - ports 这里配置mysql对外开放的端口,我这里就用默认的3306。
最后的文件结构就是这样的:
三、启动
我们只需要cd
到这个目录下执行:
docker-compose -f docker-compose.yml up -d mysql
看到上面的输出,就说明启动成功了,当然我们也可以再用
docker ps -a
去验证下,是否已经启动成功了
四、连接mysql
在终端输入连接命令:
mysql -h 127.0.0.1 -uroot -p
会发现报这个错误:
Enter password:
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found
数据库查询user
表,发现新版使用的,caching_sha2_password
,可能我自己的终端不支持这种格式的密码。
解决方案:
1.进入mysql容器
docker exec -it mysql /bin/bash
2.进入mysql
mysql -uroot -padmin
3.修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
然后你再用root
密码连接下刚才的mysql,就OK了。
此时你再看下你本地目录下面的 mysql
目录,就会发现多出了很多文件: