使用 Docker 安装 Mysql
实验环境
- OS:CentOS7.6
- Docker:20.10.5
- Mysql:8.0.23
- (可选)Navicat
实验步骤
1. 拉取 mysql 官方的最新镜像
$ docker pull mysql:latest
2. 查看本地镜像
$ docker images
3. 运行 mysql 容器
$ docker run -itd --name mysql-test -p 33060:3306 -e MYSQL_ROOT_PASSWORD=root mysql
- -d: 后台运行容器,并返回容器id;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- -name:容器名称;
- -p 33060:3306 :映射容器服务的 3306 端口到宿主机的 33060 端口,外部主机可以直接通过 宿主机ip:33060 访问 mysql 的服务;
- MYSQL_ROOT_PASSWORD=root:设置 mysql 服务 root 用户的密码;
4. 查看容器运行情况
$ docker ps
5.测试 mysql 连接
本机可以通过 root 和密码 root 访问 mysql 服务,连接成功!
$ mysql -h127.0.0.1 -P33060 -u root -p
(可选)Mysql 配置 Navicat 远程连接
打开 navicat 连接 mysql 数据库,会出现报错:Authentication pligin ‘caching_sha2_password’ cannot be loaded;
这是因为 mysql 8.0+ 的默认认证方式改用sha2了,而 navicat 没有sha2的插件,所以报错;
解决方法:
本地连接 mysql,查看用户的身份验证器插件;
// 登录Mysql $ mysql -h127.0.0.1 -P33060 -u root -p // 选择数据库 > use mysql // 查看plugin设置 > select host, user, plugin from user;
修改用户 root 的身份验证器插件;
// 修改 root 身份验证器插件 > ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; // 刷新权限,使修改生效 > FLUSH PRIVILEGES; // 查看plugin设置,验证修改结果 > SELECT Host, User, plugin from user; // 退出 > exit
修改成功!
- 再次使用 navicat 连接 mysql 服务,连接成功