使用 Docker 安装 Mysql

实验环境

  • OS:CentOS7.6
  • Docker:20.10.5
  • Mysql:8.0.23
  • (可选)Navicat

实验步骤

1. 拉取 mysql 官方的最新镜像

$ docker pull mysql:latest

拉取 mysql 官方的最新镜像

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 用户的密码;

运行 mysql 容器

4. 查看容器运行情况

$ docker ps

查看容器运行情况

5.测试 mysql 连接

本机可以通过 root 和密码 root 访问 mysql 服务,连接成功!

$  mysql -h127.0.0.1 -P33060 -u root -p

连接mysql

(可选)Mysql 配置 Navicat 远程连接

打开 navicat 连接 mysql 数据库,会出现报错:Authentication pligin ‘caching_sha2_password’ cannot be loaded;

navicat报错

这是因为 mysql 8.0+ 的默认认证方式改用sha2了,而 navicat 没有sha2的插件,所以报错;

解决方法

  1. 本地连接 mysql,查看用户的身份验证器插件;

    // 登录Mysql
    $ mysql -h127.0.0.1 -P33060 -u root -p
    // 选择数据库
    > use mysql
    // 查看plugin设置
    > select host, user, plugin from user;
    

查看plugin配置

  1. 修改用户 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
    

修改身份验证器插件

修改成功!

  1. 再次使用 navicat 连接 mysql 服务,连接成功

连接成功