navicat 连接mysql报错2002-Cant‘t connect to server on “your IP“(10061)

一 查看防火墙状态 #systemctl status firewalld
开启和关闭防火墙:#systemctl start/stop firewalld
二查看开放端口 #firewall-cmd --list-ports
开启3306端口 # firewall-cmd --add-port=3306/tcp-permanent
# firewall-cmd --reload
三安装开启SSH
安装 #sudo apt-get install openssh-server 启动 #sudo service shh start 验证 #service sshd status 配置sshd-config文件#sudo vim /etc/ssh/sshd-config
添加代码 useDNS NO
addressfamily inet
syslogfacility AUTHPRIV
permitRootlogin yes
passwordAuthentication yes 再启动SSH #service ssh restart #reboot

四 .进入mysql 创建新账号mysql.test

CREATE USER ‘mysql.test’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘password’;
2.赋权限给账号(指定权限)
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on . TO ‘mysql.test’@‘%’ WITH GRANT OPTION;
赋权限给账号(所有权限)
GRANT ALL PRIVILEGES ON . TO ‘mysql.test’@‘%’ WITH GRANT OPTION;

FLUSH PRIVILEGES;
查看 MySQL 所有账号
SELECT DISTINCT CONCAT(‘User: ‘’’,user,‘’‘@’‘’,host,‘’‘;’) AS query FROM mysql.user;

3.我们把 ‘mysql.test’@‘localhost’ 这个账号改为可远程登录的账号。我们把这个账号 host 改为任意主机(%)或者是固定主机 ip 。可以使用 RENAME USER 命令来实现

RENAME USER ‘mysql.test’@‘localhost’ TO ‘mysql.test’@‘%’;

4.在服务器中使用命令 vim /etc/mysql/mysql.conf.d/mysqld.cnf 打开mysqld.cnf文件。
输入 i 进入编辑模式,然后修改bind - address的值。
默认情况下, bind - address 的值为 127.0.0.1 ,现在给他改成0.0.0.0,允许所有IP访问。也可以输入指定ip。
接下来按Esc返回命令模式,使用 :wq! 保存退出。
这里重启一下mysql服务再尝试连接
使用命令 service mysql restart

### Navicat 连接 MySQL 出现错误 2002 的原因分析 当用户尝试通过 Navicat 连接到本地主机上的 MySQL 数据库时,如果遇到错误 `2002` 或者提示 `Can't connect to server on 'localhost' (10061)`,这通常表明客户端无法成功建立到服务器的网络连接[^1]。 以下是可能导致此问题的原因以及解决方案: #### 1. **MySQL服务未启动** 如果 MySQL 服务没有运行,则任何试图访问数据库的操作都会失败。可以通过以下方法确认并解决问题: - 在 Windows 上,打开命令提示符输入 `net start mysql` 来检查 MySQL 是否正在运行。 - 对于 Linux 用户,可以执行 `sudo systemctl status mysql.service` 命令来验证状态。 若发现服务停止,可使用相应的命令重新启动它:Windows 使用 `net start mysql`;Linux 则采用 `sudo systemctl start mysql`[^2]。 #### 2. **端口配置不匹配** 默认情况下,MySQL 监听的是 3306 端口。然而,在某些安装过程中可能会更改默认设置或者防火墙阻止了该端口的数据传输。 解决办法包括两方面: - 验证 Navicat 中填写的目标地址是否正确指定为 `127.0.0.1:3306` 而非仅写成 `localhost`,因为后者可能被解析为 Unix socket 文件而非 TCP/IP 地址。 - 查看操作系统层面是否有启用针对 3306 端口的安全策略限制,并适当调整允许外部程序访问权限[^3]。 ```bash # 检查 MySQL 当前监听的端口号 netstat -an | grep 3306 ``` #### 3. **Host Name 设置不当** 错误也可能源于 Host 字段设定有误。“Localhost” 和 “127.0.0.1”的处理方式存在差异,具体取决于底层实现机制。建议优先测试 IP 形式的定义以排除歧义性影响[^4]。 #### 4. **Socket文件路径缺失或错位** 对于基于 UNIX/Linux 平台部署的情况而言,还需留意是否存在有效的 mysqld.sock 文件及其确切位置是否与预期一致。如果不相符的话就需要手动修正链接指向关系或者是修改 my.cnf 配置文档中的相关内容项[^5]。 ```ini [mysqld] socket=/var/run/mysqld/mysqld.sock ``` --- ### 总结 综上所述,Navicat 报告出来的 Error Code 2002 主要是由于目标机器不可达所引起的一系列连锁反应所致。按照上述几个角度逐一排查应该能够定位根本所在进而采取针对性措施加以修复。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值