navicat2002 - Can't connect to server on localhost' (10061)
时间: 2025-05-24 17:08:59 浏览: 30
### 解决 Navicat 连接本地服务器失败的问题
错误代码 `10061` 表明客户端尝试连接到目标主机上的服务端口时被拒绝。这通常是因为 MySQL 服务未运行、防火墙阻止了连接请求,或者配置文件中的绑定地址不正确。
以下是可能导致此问题的原因以及解决方案:
#### 1. **MySQL 服务未启动**
如果 MySQL 数据库服务未运行,则无法建立连接。可以通过以下命令检查 MySQL 是否正在运行:
```bash
sudo systemctl status mysql
```
如果没有运行,可以使用以下命令启动它:
```bash
sudo systemctl start mysql
```
#### 2. **防火墙设置**
如果系统启用了防火墙并阻止了 MySQL 的默认端口号(通常是 3306),则需要允许该端口通过防火墙规则。例如,在 Linux 上可以执行以下命令来开放端口:
```bash
sudo ufw allow 3306/tcp
```
对于 Windows 防火墙,需手动添加入站规则以允许 TCP 流量通过 3306 端口[^1]。
#### 3. **bind-address 设置**
在 MySQL 配置文件 (`my.cnf`) 中,默认情况下可能设置了 `bind-address=127.0.0.1` 或其他特定 IP 地址。这意味着 MySQL 只监听来自本机的连接。如果是这种情况,而 Navicat 使用的是外部网络访问方式,则需要修改为 `bind-address=0.0.0.0` 来接受所有接口的连接请求。编辑 `/etc/mysql/my.cnf` 文件并将相关内容更改为如下形式:
```ini
[mysqld]
bind-address = 0.0.0.0
```
完成更改后重新启动 MySQL 服务以使更改生效。
#### 4. **socket 文件路径问题**
有时会遇到由于 socket 文件丢失或路径不对而导致的连接失败情况。这种情形下可参照软链接方法重建正确的 sock 路径指向实际存在的位置[^2]:
```bash
ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
```
#### 5. **验证用户名密码及权限**
确认用于登录数据库的账户具有足够的权限,并且其密码输入无误。可通过进入 MySQL 命令行界面测试账号有效性:
```sql
SELECT User, Host FROM mysql.user;
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
```
以上措施应该能够有效解决大部分关于 Navicat 和 MySQL Server 之间的连接问题。
```python
# 示例 Python 脚本检测远程 MySQL 连接状态
import pymysql.cursors
connection = None
try:
connection = pymysql.connect(host='localhost',
user='root',
password='your_password',
database='test_db')
except Exception as e:
print(f"Error connecting to the MySQL server: {e}")
finally:
if connection is not None and connection.open:
connection.close()
```
阅读全文
相关推荐


















