连接本地和服务器 MySQL 时出现 2003

连接本地 MySQL 时出现 2003-Can’t connect to MySQL server on ‘localhost’(10061) 错误,如何解决?

在日常的 MySQL 开发或运维中,经常会遇到连接 MySQL 数据库时出现 2003 - Can't connect to MySQL server on 'localhost' (10061) 错误。这类问题不仅仅出现在特定操作系统或 MySQL 版本下,也可能由多种因素导致。为了帮助开发者或运维人员快速解决这个问题,我们将从不同的操作系统环境、MySQL 版本、配置问题等多个维度进行详细分析,并列出可能的解决方案,并给出对应的解决方案优先级。

一、错误原因分析

首先,我们需要了解该错误的原因。2003 - Can't connect to MySQL server on 'localhost' (10061) 错误通常表明客户端无法在指定的端口上与 MySQL 服务建立连接,可能的原因包括:

  • MySQL 服务没有启动或崩溃。
  • 防火墙阻止了端口访问。
  • MySQL 配置文件中设置了错误的绑定地址(bind-address)。
  • 客户端和 MySQL 服务器之间的网络问题。
  • MySQL 端口被其他程序占用。
  • 服务器上的某些网络设置或安全策略限制了连接。

二、MySQL 版本分析

1. MySQL 5.7

MySQL 5.7 是一个比较稳定的版本,但在安装和配置过程中,如果没有正确配置某些选项,可能会遇到 2003 错误。

解决方案:

检查 MySQL 服务是否启动:使用以下命令查看 MySQL 服务是否正常运行:

代码语言:javascript代码运行次数:0运行复制
sudo service mysql status

如果没有启动,请使用以下命令启动:

代码语言:javascript代码运行次数:0运行复制
sudo service mysql start

检查 bind-address 设置:MySQL 5.7 默认可能将 bind-address 设置为 127.0.0.1,如果你的 MySQL 服务器配置文件(myfmy.ini)中 bind-address0.0.0.0 或正确设置为 localhost,确保它没有被错误配置为某个不正确的地址:

代码语言:javascript代码运行次数:0运行复制
bind-address = 127.0.0.1

查看防火墙设置:检查防火墙是否阻止了 MySQL 的端口(默认为 3306):

代码语言:javascript代码运行次数:0运行复制
sudo ufw allow 3306

MySQL 用户权限:确保 MySQL 用户具有从 localhost 连接的权限。如果需要,可以使用以下命令授予权限:

代码语言:javascript代码运行次数:0运行复制
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password';
解决方案权重: