报错 ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061)
表示客户端无法连接到本地的 MySQL 服务器。
这个错误通常与以下几个原因有关:
1. MySQL 服务器未启动(常见原因
)
MySQL 服务器可能没有启动。可以通过以下命令检查 MySQL 服务器的状态并尝试启动:
-
Windows: 打开命令提示符,输入以下命令:
net start mysql
或者使用
MySQL Notifier
或Services
查看并启动服务。-
如果提示:
-
解决办法:
1. 确认 MySQL 是否安装
检查 MySQL 是否正确安装,并查看已安装的服务列表。可以通过以下命令查看系统上所有服务的名称:
sc query type= service state= all
查找与 MySQL 相关的服务名称,如
MySQL
、MySQL80
、MariaDB
等。
通过查询服务器名称为
MySQL80
。2. 查找 MySQL 的具体服务名称
如果 MySQL 正确安装但服务名不是
mysql
,你可以通过服务管理器 (services.msc
) 来查看:-
按下
Win + R
,输入services.msc
并回车。 -
在服务列表中找到与 MySQL 相关的服务,通常名称可能是
MySQL80
或MySQL57
等,确认服务名后,使用该名称启动服务。例如:net start MySQL80
启动成功
。 -
Linux / macOS: 使用以下命令检查 MySQL 是否在运行:
sudo systemctl status mysql
如果未运行,启动 MySQL:
sudo systemctl start mysql
-
-
2. 端口号错误
-
Linux/Unix 系统:
默认情况下,MySQL 运行在端口3306
上。如果该端口被其他程序占用或端口被更改,需要确认 MySQL 使用的端口。- 查看 MySQL 配置文件
my.cnf
(Linux/macOS)或my.ini
(Windows),确认[mysqld]
部分的端口号是否为3306
。 - 还可以通过以下命令查看 MySQL 的端口:
sudo netstat -tlnp | grep mysql
- 查看 MySQL 配置文件
-
Windows 系统:
在 Windows 上想查看 MySQL 是否正在监听端口3306
,可以使用以下替代方法:-
1. 使用
netstat
查看端口在 Windows 上,可以使用以下命令检查 MySQL 是否监听
3306
端口:netstat -ano | findstr :3306
这条命令会显示所有使用端口
3306
的进程。如果 MySQL 正在运行,应该能够看到类似以下输出:TCP 127.0.0.1:3306 0.0.0.0:0 LISTENING 1234
其中,
1234
是 MySQL 服务的进程 ID (PID)。可以通过任务管理器 (Task Manager
) 查找该进程的名称,验证是否为 MySQL。
-
2. 通过任务管理器检查 MySQL 进程
你可以打开任务管理器,查看 MySQL 服务是否正在运行:
- 按
Ctrl + Shift + Esc
打开任务管理器。 - 在“进程”或“服务”选项卡中,查找名为
MySQL
或mysqld
的进程。
- 按
-
3. 防火墙问题
防火墙可能阻止了端口 3306
的访问,检查并开放此端口:
- Windows:通过“防火墙和网络保护”设置中,检查是否阻止了端口
3306
。 - Linux:
sudo ufw allow 3306 sudo ufw reload
4. 配置文件错误
MySQL 配置文件可能设置错误,导致 MySQL 不接受本地连接。检查配置文件中的 bind-address
是否设置为 127.0.0.1
,确保 MySQL 接受本地连接:
- 编辑
my.cnf
或my.ini
文件:bind-address = 127.0.0.1
5. Socket 问题
MySQL 客户端可能在连接时使用错误的 socket 文件。可以通过指定正确的 socket 文件来连接:
mysql --socket=/path/to/mysql.sock
6. 数据库用户权限问题
检查当前用户是否有权限访问 MySQL:
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;