繁体   English   中英

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

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

我使用以下命令:

mysql -u root -h 127.0.0.1 -p

错误信息是:

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

我该如何解决?

如果您使用的是 Ubuntu,则必须使用以下步骤来避免此错误(如果未启用复制):

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

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

在启用 MySQL 复制的情况下更新

尝试在文件my.cnf而不是localhost127.0.0.1中绑定 MySQL 服务器的 IP 地址上连接 MySQL 服务器。

尝试使用localhost而不是127.0.0.1进行连接或在您的connection-config中。 它在Debian 6.0 (Squeeze) 服务器上为我工作。

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

mysql.server start

然后

mysql -u root -p -h 127.0.0.1

就我而言(远程连接),它有助于关闭服务器上的防火墙:

service iptables stop

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

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

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

如果您收到“服务安装成功”消息,那么您需要启动 MySQL 服务。 为此:转到服务窗口(任务管理器服务打开服务)。 搜索 MySQL 并从顶部导航栏启动它。 然后,如果尝试打开mysql.exe ,它将起作用。

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

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

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

services:
  app:
    blablabla
  db:
    blablabla

我的意思是,而不是:

127.0.0.1 or localhost

利用:

db

您需要在 MySQL 配置文件( my.inimy.cnf )中将 bind-address 参数更改为 127.0.0.1 或使用其中定义的参数。

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

我也面临同样的问题。

以下帮助我解决了问题

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

我只是遇到了这个问题...在 Windows 7 和WAMP服务器中运行...在阅读完此内容后。

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

对于Docker用户- 当尝试使用mysql -u root -h 127.0.0.1 -p连接到本地 SQL 数据库服务器并且您的数据库在Docker容器中运行时,请确保 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

或者sudo ufw allow 3306如果您使用UFW

检查: netstat -lnp | grep mysql 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

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

如果您已经尝试了以上所有方法,但仍然无法正常工作。 检查防火墙。

我试图从 Windows 机器连接到安装在带有 CentOs7 的 VirtualBox 机器上的 MySql Server 5.7.32。 我已经尝试了所有方法,但它无法正常工作,即使我可以 ping 无法连接到 MySql 服务器的机器。

在 CentOs7 上检查防火墙的命令是:

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

systemctl status firewallid.service

步骤 2:禁用防火墙服务

systemctl stop firewallid.service

当我尝试连接到 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.XXX ,而不是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但没有在配置中的任何位置进行配置。 /etc/my.cnf /etc/my.cnf.d/*

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

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

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

Ubuntu (Linux) 上: sudo service start mysql

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

请确保您的 MySQL 服务器在 localhost 上运行。

在 Linux 上

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

sudo service mysql status

运行 MySQL 服务器:

sudo service mysql start

在 Windows 上

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

net start

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

运行 MySQL 服务器:

net start mysql

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM