当遇到 "Can't connect to MySQL server on 'hostname' (10061)" 这类错误时,通常意味着应用程序无法连接到 MySQL 数据库服务器。错误代码 10061 通常表示连接拒绝,可能是因为服务器没有响应或者不允许来自该客户端的连接。以下是解决此类问题的一些步骤:
解决方法:
-
检查数据库服务器状态:
- 确认 MySQL 服务是否正在运行。可以通过命令行工具检查服务状态:
- 在 Windows 上使用
services.msc
或者命令net start
列出运行的服务,查找 MySQL 服务。 - 在 Linux 上使用
systemctl status mysql.service
或者service mysqld status
命令检查 MySQL 服务的状态。
- 在 Windows 上使用
- 确认 MySQL 服务是否正在运行。可以通过命令行工具检查服务状态:
-
确认数据库配置信息:
- 检查应用程序中的数据库连接配置文件(如
config.php
或database.php
),确保配置信息正确。 - 特别注意
hostname
(数据库服务器地址)、port
(端口号)、username
(用户名)和password
(密码)等信息是否正确。
- 检查应用程序中的数据库连接配置文件(如
-
检查网络连接:
- 如果数据库服务器不在本地主机上,确认网络连接是否正常。
- 使用
ping
命令测试与数据库服务器的连通性,例如ping hostname
。 - 使用
telnet
或nc
命令测试能否连接到数据库服务器的 MySQL 端口(通常是 3306),例如telnet hostname 3306
或nc -zv hostname 3306
。
-
检查防火墙设置:
- 确认服务器的防火墙没有阻止 MySQL 端口的连接请求。
- 如果有防火墙,确保 MySQL 服务的端口(通常是 3306)已经被开放。
-
检查 MySQL 配置文件:
- 如果是远程连接问题,检查 MySQL 的配置文件(如
my.cnf
或my.ini
),确保bind-address
设置为0.0.0.0
或者注释掉该行,以便允许远程连接。 - 重启 MySQL 服务使配置生效。
- 如果是远程连接问题,检查 MySQL 的配置文件(如
-
检查 MySQL 用户权限:
- 确认 MySQL 用户具有从客户端 IP 地址连接的权限。
- 可以使用
GRANT
命令给用户分配相应的权限,例如: sqlGRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
-
检查 MySQL 最大连接数:
- 如果数据库连接数达到上限,也会导致新的连接请求被拒绝。检查 MySQL 的最大连接数配置(
max_connections
),并根据需要调整。
- 如果数据库连接数达到上限,也会导致新的连接请求被拒绝。检查 MySQL 的最大连接数配置(
-
检查 MySQL 日志文件:
- 查看 MySQL 的错误日志文件,获取更详细的错误信息,以便进一步诊断问题。
-
检查操作系统级别限制:
- 确认操作系统的网络配置允许出站和入站的 TCP 连接。
- 检查系统级的网络限制,例如 SELinux 或 AppArmor 配置。
通过以上步骤,您可以逐步排查并解决 "Can't connect to MySQL server on 'hostname' (10061)" 的问题。如果问题依然存在,建议查看数据库和操作系统的日志文件,或者联系网络管理员或数据库管理员寻求进一步的帮助。
标签:10061,检查,数据库,hostname,server,MySQL,服务器,连接 From: https://www.cnblogs.com/hwrex/p/18421844