8
  • 服务器ip:172.16.1.169
  • mysql用户名:root
  • 密码:xxxxxxxxx
  • 数据库名称:示例

我正在尝试从客户端(ip 172.16.0.114)访问数据库。服务器和客户端都运行 Linux 的 Fedora 发行版。需要为服务器和客户端配置哪些设置,以及它们应该设置为什么?如何访问特定数据库(此处为“示例”)?我试过但我得到一个错误:

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

4

4 回答 4

9

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

有多种可能的原因:

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 版本 >= 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)在不同的网络地址上,检查服务器是否侦听您正在连接的网络地址:在文件中/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
于 2011-08-01T11:17:17.803 回答
2
  1. 打开 MySQL 配置文件

    须藤 vim my.cnf

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

    #skip-external-locking

    #skip-networking

    #绑定地址 = xx.xx.xx.xx

    保存并退出

  3. 重启mysql服务

于 2013-06-07T11:16:14.453 回答
1

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

保存并重启mysql服务。

于 2016-05-12T07:23:47.570 回答
0

I think the destination mysql server might use a different port. You have to find the correct port first.

Once you get the correct port you can connect to that mysql server by using this command:

mysql -h 172.16.1.169 -P (port) -u root -p (password)
于 2013-07-30T14:50:43.303 回答