Docker安装Mysql8.0实现远程连接

1. 安装Mysql

1.首先查看mysql版本:

docker search mysql

Docker安装Mysql8.0实现远程连接_第1张图片

2. 带有[ok]的版本是官方的,目前支持的版本有8.0.22、8.0、8、latest、5.7.32、5.7,5以下我们不考虑。

3. 我们安装mysql 8以上版本:

docker pull mysql:8

Docker安装Mysql8.0实现远程连接_第2张图片

4. 查看我们安装的镜像:

docker images

image-20201126130649467

5. 运行mysql:

docker run -itd --name docker-mysql -p 3307:3306 -e MYQSL_ROOT_PASSWORD=root mysql:8

image-20201126130837980

  • -d表示后台运行并开启bash命令, --name表示自定义的容器名称,-p 3307:3306表示将宿主机的3307端口映射到我们的
    容器中的3306端口,-e MYSQL_ROOT_PASSWORD=root设置root登录的密码,mysql:8表示镜像名:版本号。

6. 查看状态

docker ps -a

image-20201126134932934

2. 远程登录连接

1. 打开Navicat软件,进行远程登录:

Docker安装Mysql8.0实现远程连接_第3张图片

2. 点击连接测试

Docker安装Mysql8.0实现远程连接_第4张图片

3. 如果连接出现错误,我们需要授予远程登录权限:

  1. 以bash方式进入容器内部: docker exec -it docker-mysql bash
  2. 登录:mysql -u root -p
  3. 执行use mysql;
  4. 授予权限:grant all privileges on *.* to 'root'@'%';%表示host不受限制,如果是本机使用localhost
    • 网上很多是GRANT ALL PRIVILEGES ON *.* 'root'@'%' identified by '密码' WITH GRANT OPTION;
      有可能报错。
  5. 刷新权限:flush privileges;
  6. 重新测试下

4. 如果接着出现以下错误:

Docker安装Mysql8.0实现远程连接_第5张图片

1.原因是mysql 8以上默认使用的是caching_sha2_password身份验证机制,之前用的是mysql_native_password。
2. 从5.7升级到8.0不会改变现有用户的身份验证方式,但新用户会默认使用新的cacthing_sha2_password
3. 解决方式:
  1. 修改用户的密码加密方式:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
4. 再一次测试连接,发现成功了:

Docker安装Mysql8.0实现远程连接_第6张图片

你可能感兴趣的:(linux,docker,mysql,docker,mysql,数据库,linux,navicat)