Docker安装Mysql多版本
Mysql5.7
下载镜像
> docker pull mysql:5.7
# 下载需要一定时间
# 下载完成后可以使用以下命令查看镜像
> docker images
创建并运行容器
docker run -di --name mysql5.7 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 使用一下命令可以查看当前运行的容器
docker ps
--name mysql5.7
:代表容器的名字-p
:代表端口映射,格式为宿主机映射端口:容器运行端口-e
:代表添加环境变量,MYSQL_ROOT_PASSWORD是root用户的登陆密码mysql:5.7
:表示使用的镜像以及版本号
连接Mysql
使用命令行连接
mysql -uroot --host 127.0.0.1 --port 33306 -p123456
使用上面的命令能直接连接成功。
使用MySQLWorkbench连接
也能连接成功:
总结
使用mysql:5.7版本的docker镜像,创建并启动容器后可以直接使用,默认在启动的Mysql中已经添加了'root'@'%'
用户,并具有所有权限。
Mysql8
下载镜像
> docker pull mysql:8.0
# 下载需要一定时间
# 下载完成后可以使用以下命令查看镜像
> docker images
创建并运行容器
docker run -di --name mysql8.0 -p 33307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
# 使用一下命令可以查看当前运行的容器
docker ps
连接Mysql
使用命令行连接
mysql -uroot --host 127.0.0.1 --port 33307 -p123456
使用上面的命令能直接连接成功。
使用MySQLWorkbench连接
但是连接不成功:
使用刚刚的命令行登录到mysql中,或者使用下面的命令行直接登录到docker容器中,然后登录到mysql中
docker exec -it mysql8.0 /bin/bash
然后使用下面的SQL语句修改'root'@'%'
用户的验密方式:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
执行完成后,MysqlWorkbench也能连上Mysql了。
总结
使用mysql:8.0版本的docker镜像,创建并启动容器后可以直接使用Mysql命令行连接成功,但是因为Mysql8更换了验密方式,所以需要做进一步处理才能让其他客户端工具连接成功。