本文翻译自:MySQL Docker Containers:Understanding the basics
1.下载MySQL镜像
docker pull mysql:5.6
如此便可以下载最新的MySQL镜像,通过查看下载的镜像列表查看验证
如果列表有显示,说明Docker已经下载了对应的MySQL镜像。
2.安装镜像
- --name:运行后Container的名称
- -e:环境变量(也写作-env)
- -d:后台运行不退出
- tag:版本号,此处为8.0(mysql),如果缺省则对应latest
docker run --name=mysqldb -p=3306:3306 --env="MYSQL_ROOT_PASSWORD=longtao" mysql:5.6
将Mysql配置文件映射到本机
docker run --name mysqldb -p : -v $PWD/conf/my.cnf:/etc/my.cnf.d/ -v $PWD/logs:/logs -v $PWD/data:/data -e MYSQL_ROOT_PASSWORD=longtao -d mysql:8.0
对于MySQL8.0以上的版本,报错:Authentication plugin 'caching_sha2_password' cannot be loaded ,解决办法:
docker run --name mysqldb -p : -v $PWD/conf/my.cnf:/etc/my.cnf.d/ -v $PWD/logs:/logs -v $PWD/data:/data -e MYSQL_ROOT_PASSWORD=longtao -d mysql:8.0 --default-authentication-plugin=mysql_native_password
MySQL默认编码方式不是UTF8,可以在安装时修改指令
docker run --name mysqldb3307 -p 3306:3306 -v $PWD/conf/my.cnf:/etc/my.cnf.d/ -v $PWD/logs:/logs -v $PWD/data:/data -e MYSQL_ROOT_PASSWORD=longtao -d mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
3.安装PostGreSQL
docker run --name=postgredb -p=: -env="POSTGRES_PASSWORD=longtao" -d postgres:11.1
4.常见错误
错误1:未设置环境变量
错误2:navicat无法连接
进入mysql容器
docker exec -it <63c9e29aelef(容器id)> bash
进入容器
mysql --user=root --password
然后根据密码提示输入mysql密码
然后输入下面的命令,注意修改密码(newpassword)
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'newpassword';
错误3:容器时区问题
docker exec -it <容器名> /bin/bash
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
docker restart <容器名>
参考
Docker MySql报2059错误: Authentication plugin 'caching_sha2_password' cannot be loaded