连接到mysql服务器时出现问题:ERROR 2003(HY000)

  • 服务器IP:172.16.1.169
  • mysql用户名:root
  • passwd:xxxxxxxxxx
  • 数据库名称:例子

我试图从客户端访问数据库(IP 172.16.0.114)。 服务器和客户端都运行Linux的Fedora发行版。 服务器和客户端需要configuration哪些设置以及应该设置哪些设置? 如何访问特定的数据库(这里是“示例”)? 我试过,但我得到一个错误:

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

Solutions Collecting From Web of "连接到mysql服务器时出现问题:ERROR 2003(HY000)"

该错误消息是由客户端(而不是服务器)生成的,因为已尝试连接到服务器,但服务器无法到达。

有以下几种可能的原因:

1)检查服务器上是否正在运行mysqld:

ps -ef | grep mysqld 

应该返回类似于:

 root 2435 2342 0 15:49 pts/1 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/var/ --user=mysql mysql 2480 2435 0 15:49 pts/1 00:00:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/var/ --user=mysql ... 

运行守护进程服务,在redhat / fedora / centos上运行:

 service mysqld start 

或者Fedora release> = 16,这依赖于systemd:

 systemctl start mysqld.service 

并在系统启动时启用守护进程自动启动:

 systemctl enable mysqld.service 

2)检查服务器上运行mysqld的端口:

 netstat -lnp | grep mysql 

应该返回:

 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2480/mysqld unix 2 [ ACC ] STREAM LISTENING 8101 2480/mysqld /tmp/mysql.sock 

后者是本地连接的套接字,第一个是用于联网的tcp端口(默认为3306)。 如果端口不是默认端口,则必须在客户端上设置连接端口。 如果使用mysql客户端:

 mysql dbname -uuser -ppasswd -P<port> ... 

3)在不同的网络地址上,检查服务器是否在监听你正在连接的net addrees:在/etc/my.cnf文件中搜索该行:

 bind_address=127.0.0.1 

如果地址是127.0.0.1,则只允许本地连接; 如果是172.16.1.0,则不能从172.16.2.xxx连接

4)检查服务器上是否没有运行防火墙,并阻止连接到mysql端口(3306是默认端口); 如果是redhat / fedora / centos运行

 service iptables status 
  1. 打开MySQL配置文件

    sudo vim my.cnf

  2. 确保以下内容已被注释掉。

    #跳过外部锁定

    #跳过网络

    #bind-address = xx.xx.xx.xx

    保存并退出

  3. 重新启动mysql服务

我认为目标mysql服务器可能使用不同的端口。 你必须先找到正确的端口。

一旦你得到了正确的端口,你可以使用这个命令连接到该mysql服务器:

 mysql -h 172.16.1.169 -P (port) -u root -p (password) 

在MySQL配置文件(/etc/mysql/my.cnf)中注释'#bind-address = 127.0.0.1'

保存并重新启动mysql服务。