欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-25 14:30:40
...

具体过程

下载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安装Mysql 8并配置Navicat远程连接
进入容器

 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远程连接
在阿里云服务器上用Docker安装Mysql 8并配置Navicat远程连接
在阿里云服务器上用Docker安装Mysql 8并配置Navicat远程连接

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改成%的话就是任意主机可访问