在阿里云服务器上用Docker安装Mysql 8并配置Navicat远程连接

文章目录

  • 具体过程
  • Navicat远程连接常见错误解决办法
    • 10060
    • 10038
    • Client does not support authentication protocol requested by server; consider upgrading MySQL client

具体过程

下载Mysql镜像

docker pull mysql 

启动Mysql镜像

docker run --name mysql02 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

--name:镜像别名
-p:服务器与docker的端口映射
-e MYSQL_ROOT_PASSWORD:设置mysql密码
-d:后台运行
最后的mysql是启动的镜像名

查询启动的镜像

docker ps

在这里插入图片描述
进入容器

 docker container exec -it mysql02 bash

这里的mysql02是取的别名,也可以通过id进入

登陆Mysql

 mysql -uroot -p123456

把123456换成你的密码

设置远程访问

grant all privileges on *.* to 'root'@'%';

Navicat远程连接常见错误解决办法

10060

确认自己有没有关闭防火墙,如果防火墙是关闭状态,则应该去mysql中再次设置远程访问,这是因为mysql一开始只会允许localhost的主机访问。

grant all privileges on *.* to 'root'@'%';

10038

该错误码意思是端口未开放。

首先检查自己在docker开启mysql的时候是否进行了端口映射-p 3306:3306

如果没问题,检查自己的服务器安全组配置。我用的是阿里云,这里给大家演示阿里云安全组的配置
在阿里云服务器上用Docker安装Mysql 8并配置Navicat远程连接_第1张图片
在阿里云服务器上用Docker安装Mysql 8并配置Navicat远程连接_第2张图片
在阿里云服务器上用Docker安装Mysql 8并配置Navicat远程连接_第3张图片

Client does not support authentication protocol requested by server; consider upgrading MySQL client

导致这个错误的原因是,目前,最新的mysql模块并未完全支持MySQL 8的caching_sha2_password加密方式。

解决方法是从新修改用户root的密码,并指定mysql模块能够支持的加密方式:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

接着

flush privileges;

上面的localhost改成%的话就是任意主机可访问

你可能感兴趣的:(web,mysql,docker,centos)