ERROR 2003(HY000) : 无法连接到“127.0.0.1”(111)上的 MySQL 服务器

我使用以下命令:

mysql -u root -h 127.0.0.1 -p

错误消息是:

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

我该怎么补救?

569200 次浏览

您需要在 MySQL 配置文件(我的小妹妹我的)中将 bind-address 参数更改为127.0.0.1,或者使用在该配置文件中定义的绑定地址参数。

如果这不起作用,您应该检查 MySQL 服务是否正在实际运行。

如果您在非默认端口上运行,您可以尝试使用 --port=<port num>,前提是 --skip-networkingnot enabled.

尝试 本地主机而不是 127.0.0.1连接或在您的 connection-config。它为我工作的 Debian 6.0(挤压)服务器。

如果你正在使用 Ubuntu,你必须使用以下步骤来避免这个错误(如果没有启用复制) :

  1. 运行命令 vim /etc/mysql/my.cnf
  2. 使用 # 符号注释 bind-address = 127.0.0.1
  3. 重新启动 MySQL 服务器一次。

在步骤1中,如果在 my.cnf文件中找不到 bind-address,请在 /etc/mysql/mysql.conf.d/mysqld.cnf文件中查找它。

启用 MySQL 复制时更新

尝试在文件 我的中而不是 本地主机127.0.0.1中绑定 MySQL 服务器的 IP 地址上连接 MySQL 服务器。

在我的案例中(远程连接) ,它帮助关闭了服务器上的防火墙:

service iptables stop

我刚刚重启了我的 MySQL 服务器,问题就解决了。

在 Windows 上,net stop MySQL,然后是 net start MySQl

Ubuntu(Linux)上: sudo service start mysql

我也面临着同样的问题。

以下内容帮助我解决了这个问题

转到 控制面板管理工具服务。在这里面你肯定会看到 MySQL 服务: 右击并说开始(强制启动)。

我只是有这个问题... 在 Windows 7和 WAMP服务器上运行... 在 看这个之后。

我发现是防病毒防火墙导致了这个问题。

我在重新安装时更改了安装目录,它工作了。

在 Windows 上,可能会出现此问题,因为您的 MySQL 服务器没有安装和运行。

为此,以管理员身份启动命令提示符并输入命令:

"C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin\mysqld" --install

如果您得到“服务成功安装”消息,那么您需要启动 MySQL 服务。要做到这一点: 转到 服务窗口 (任务管理器服务公开服务)。 从顶部导航栏搜索 MySQL 和 开始。 然后,如果尝试打开 Mysql.exe,它将工作。

如果在连接数据库之前忘记启动数据库,就会发生这种情况:

mysql.server start

然后

mysql -u root -p -h 127.0.0.1

看看 my.cnf文件。如果它包含一个 [client]节,并且 port不是真正的侦听端口(默认为3306) ,那么您必须使用一个显式参数 -P 3306连接服务器,例如。

mysql -u root -h 127.0.0.1 -p -P 3306

对于 多克用户 -当尝试使用 mysql -u root -h 127.0.0.1 -p连接到本地 SQL 数据库服务器并且您的数据库在 多克容器中运行时,请确保 MySQL 服务已经启动并运行(使用 docker ps验证并且也检查您是否在正确的端口中)。如果容器停止运行,就会出现连接错误。

最佳实践是在计算机上设置 /etc/hosts中的 IP 地址:

127.0.0.1 db.local

通过 mysql -u root -h db.local -p运行。

检查是否是打开端口3306(更多 给你) :

nmap -p3306 127.0.0.1

如果你收到这样的东西:

Starting Nmap 7.92 ( https://nmap.org ) at 2022-01-07 11:55 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000082s latency).


PORT     STATE  SERVICE
3306/tcp closed mysql


Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

然后打开3306端口:

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

如果使用 UFW,则为 sudo ufw allow 3306

检查: netstat -lnp | grep mysql你应该得到这样的东西:

cp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      2048/mysqld
tcp6       0      0 :::33060                :::*                    LISTEN      2048/mysqld
unix  2      [ ACC ]     STREAM     LISTENING     514961   2048/mysqld          /var/run/mysqld/mysqld.sock
unix  2      [ ACC ]     STREAM     LISTENING     514987   2048/mysqld          /var/run/mysqld/mysqlx.sock

请确保您的 MySQL 服务器在本地主机上运行。

在 Linux 上

检查 MySQL 服务器是否正在运行:

sudo service mysql status

运行 MySQL 服务器:

sudo service mysql start

在视窗上

检查 MySQL 服务器是否正在运行:

net start

如果 MySQL 不在列表中,则必须启动/运行 MySQL。

运行 MySQL 服务器:

net start mysql

如果你已经尝试了以上所有的方法,但仍然不能工作。请检查防火墙。

我试图从 Windows 机器连接到安装在带 CentOs7的 VirtualBox 机器上的 MySql Server 5.7.32。我尝试了所有的方法,但是都没有用,即使我可以 ping 机器,但是我不能连接到 MySql 服务器。

在 CentOs7上,检查防火墙的命令如下:

步骤1: 检查防火墙服务的状态:

systemctl status firewallid.service

步骤2: 禁用防火墙服务

systemctl stop firewallid.service

如果您在这里使用了相同的错误消息并且使用了 多克-请尝试使用数据库服务的名称作为主机。

services:
app:
blablabla
db:
blablabla

而不是:

127.0.0.1 or localhost

用途:

db

当我试图连接到 Docker 容器中的 MySQL 服务器时遇到了这个问题

我按照下面的步骤 修好了

  1. 进入容器:
docker exec -it mysql bash
  1. 运行以下命令:
echo "bind-address           = 0.0.0.0" >> /etc/mysql/conf.d/mysql.cnf
  1. 从集装箱里出来
exit
  1. 重启容器
docker restart mysql
  1. 到集装箱里面去
docker exec -it mysql bash
  1. 连接到 MySQL 服务器,并输入密码
mysql -u root -p

确保您的密码不包含“@”字符。例如,如果您的密码是 Jane@123,那么将显示以下错误。

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on '123@localhost' ([Errno -2] Name or service not known)")

如果您通过 WSL (Linux 的 Windows 子系统)运行 Ubuntu并希望连接到主机上的 MySQL 实例,则需要使用主机的 IPv4地址,例如 192.X.X.X,而不是 127.0.0.1localhost

$ mysql -u <user> -h 127.0.0.1 -p -P 3306


ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1:3306' (111)
$ mysql -u <user> -h 192.X.X.X -p -P 3306


Welcome to the MySQL monitor...Server version: 8.0.26 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql>

要检查 IPv4地址,请转到 Settings-> Network $ Internet-> Properties-> IPv4 address

我在为 apache airflow配置 MySQL URI 时出现了以下错误:

mysql+mysqlconnector://<user>:<password>@localhost:3306/<database>


(mysql.connector.errors.DatabaseError) 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (111)

或者

mysql+mysqlconnector://<user>:<password>@127.0.0.1:3306/<database>


(mysql.connector.errors.DatabaseError) 2003 (HY000): Can't connect to MySQL server on '127.0.0.1:3306' (111)

修正了将 URI 配置为:

mysql+mysqlconnector://<user>:<password>@192.X.X.X:3306/<database>

在我的情况下,与 Centos 8MYSQL 8.0.26。我通过打开防火墙的端口修复了它。如果[3306]是 MySQL 端口,[ public ]是活动区域(默认配置) ,则可以运行以下命令

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

另外,我查找了 bind-address=127.0.0.1,但是没有在 configation./etc/my.cnf /etc/my.cnf.d/*中的任何地方进行配置

当数据库的存储容量用完时,连接到 AWS 上的 RDS 时会发生这种情况。您必须增加可用的存储容量来解决这个问题。