159

我使用以下命令:

mysql -u root -h 127.0.0.1 -p

错误信息是:

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

我该如何解决?

4

17 回答 17

241

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

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

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

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

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

于 2013-04-23T08:21:27.930 回答
17

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

于 2012-12-14T19:59:13.360 回答
10

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

mysql.server start

然后

mysql -u root -p -h 127.0.0.1
于 2016-04-01T19:30:45.363 回答
8

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

service iptables stop
于 2013-11-08T11:42:28.290 回答
6

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

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

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

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

于 2015-05-24T06:40:59.353 回答
6

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

mysql -u root -h 127.0.0.1 -p -P 3306
于 2016-05-24T10:55:30.820 回答
1

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

services:
  app:
    blablabla
  db:
    blablabla

我的意思是,而不是:

127.0.0.1 or localhost

利用:

db
于 2021-09-18T18:19:26.427 回答
0

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

于 2011-06-10T08:44:04.923 回答
0

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

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

于 2009-11-04T12:41:29.053 回答
0

我也面临同样的问题。

以下帮助我解决了问题

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

于 2013-12-19T07:10:34.823 回答
0

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

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

于 2013-12-26T12:27:06.863 回答
0

检查它是否打开了 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你应该得到这样的东西:

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
于 2019-12-26T23:37:01.460 回答
0

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

最佳做法是/etc/hosts在您的机器上设置 IP 地址:

127.0.0.1 db.local

并运行它mysql -u root -h db.local -p

于 2019-09-24T11:03:42.213 回答
0

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

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

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

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

systemctl status firewallid.service

步骤 2:禁用防火墙服务

systemctl stop firewallid.service
于 2020-11-03T05:59:35.223 回答
-3

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

于 2014-07-24T22:53:39.287 回答
-3

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

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

Ubuntu (Linux) 上:sudo service start mysql

于 2013-11-12T04:00:16.453 回答
-3

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

在 Linux 上

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

sudo service mysql status

运行 MySQL 服务器:

sudo service mysql start

在 Windows 上

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

net start

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

运行 MySQL 服务器:

net start mysql

于 2020-03-31T04:15:33.893 回答