1. 环境信息 {#1- 环境信息}
- 服务器系统:Centos 7.6
- 服务器 MySQL 版本:8.0.25
- 本地系统:Windows10
- 本地客户端:navicat 15
2. 本地客户端连接远程服务器 MySQL 报错 {#2- 本地客户端连接远程服务器 MySQL 报错}
3. 错误描述 {#3- 错误描述}
"error 2003: can't connect to mysql server on '***' (10061)"
Google 翻译:错误 2003:无法连接到"**"上的 mysql 服务器(10061)
4. 解决过程 {#4- 解决过程}
-
Xshell 远程登陆服务器,用"ps aux|grep mysql"命令查看,MySQL 服务已启动:
-
用"vim my.cnf"命令查看 my.cnf 文件 (在 MySQL 安装目录下,我的位置是 /etc/my.cnf), 修改其对应的值并重启 MySQL。对应内容如下:
[mysqld]
bind-address=0.0.0.0 # 表示允许任何主机登陆 MySQL
port=3306 # 表示 MySQL 运行端口为 3306
- 用"mysql -uroot -p"命令,回车后输入密码"***"能正常登陆服务器 MySQL
mysql> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.00 sec)
- 查看 MySQL 权限配置
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
`Database changed
mysql`>` `select` host,user from user`;`
+-----------+------------------+
`|` `host` `|` user `|`
+-----------+------------------+
`|` % `|` root `|`
`|` % `|` zijing `|`
`|` localhost `|` mysql.infoschema `|`
`|` localhost `|` mysql.session `|`
`|` localhost `|` mysql.sys `|`
+-----------+------------------+
`5` rows `in` `set` `(0.00` sec`)
- 如果上述查询结果,root 用户对应的 host 不为 %,则修改用户权限、
- 此处需注意的是,修改权限时要带上密码 (IDENTIFIED BY 'password')。
- 修改完以上操作,我尝试链接 MySQL,但还是无法成功
我以为可能是防火墙原因,但之前已经将 3306 端口暴露出来了
- 已经开放了远程端口
- 目前所有可以尝试的办法都已经尝试过了,突然灵光一闪,我想起来之前 ecs 服务器是需要开放防火墙端口的,可能需要我去控制台开启 3306 的访问端口,于是我百度了轻量型应用服务器如何开启安全组
官网地址:传送门
- 当我开启了控制台的防火墙端口,感觉世界真的很美好了
- 使用 navicat 链接 MySQL
成功了,想起来前辈说的那句话,每次遇到一些莫名其妙的错误,怎么都排查不出来的时候,那个错误一定是个非常无脑的问题。