我使用以下命令:
mysql -u root -h 127.0.0.1 -p
错误信息是:
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 中,如果在文件中找不到,请bind-address
在my.cnf
文件中查找/etc/mysql/mysql.conf.d/mysqld.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
如果您在非默认端口上运行,您可以尝试使用--port=<port num>
提供--skip-networking
的 isnot enabled.
您需要在 MySQL 配置文件( my.ini或my.cnf )中将 bind-address 参数更改为 127.0.0.1或使用其中定义的参数。
如果这不起作用,您应该检查 MySQL 服务是否实际运行。
我也面临同样的问题。
以下帮助我解决了问题
转到控制面板→管理工具→服务。在这里面你肯定会看到 MySQL 服务:右键单击并说启动(强制启动)。
检查它是否打开了 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
对于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
。
如果您已经尝试了以上所有方法,但仍然无法正常工作。检查防火墙。
我试图从 Windows 机器连接到安装在带有 CentOs7 的 VirtualBox 机器上的 MySql Server 5.7.32。我已经尝试了所有方法,但它无法正常工作,即使我可以 ping 无法连接到 MySql 服务器的机器。
在 CentOs7 上检查防火墙的命令是:
第 1 步:检查防火墙服务的状态:
systemctl status firewallid.service
步骤 2:禁用防火墙服务
systemctl stop firewallid.service
我在重新安装时更改了安装目录,它可以工作。
我刚刚重新启动了我的 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