![](/img/trans.png)
[英]ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1:3306' (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,则必须使用以下步骤来避免此错误(如果未启用复制):
vim /etc/mysql/my.cnf
bind-address = 127.0.0.1
在步骤 1 中,如果在/etc/mysql/mysql.conf.d/mysqld.cnf
文件中找不到bind-address
,请在my.cnf
文件中查找。
在启用 MySQL 复制的情况下更新
尝试在文件my.cnf而不是localhost或127.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.ini或my.cnf )中将 bind-address 参数更改为 127.0.0.1 或使用其中定义的参数。
如果这不起作用,您应该检查 MySQL 服务是否实际运行。
我也面临同样的问题。
以下帮助我解决了问题
转到控制面板→管理工具→服务。 在这里面你肯定会看到 MySQL 服务:右键单击并说启动(强制启动)。
对于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 服务器时遇到了这个问题
我按照以下步骤进行了修复。
docker exec -it mysql bash
echo "bind-address = 0.0.0.0" >> /etc/mysql/conf.d/mysql.cnf
exit
docker restart mysql
docker exec -it mysql bash
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.1
或localhost
。
$ 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 8
和MYSQL 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.