为什么我的 MySQL 远程连接失败(VLAN)?

为什么我的 MySQL 远程连接失败(VLAN)?

我再次遇到了我的特殊朋友 MySQL 的问题:D
我有两台服务器 - 一台数据库服务器和一台 Web 服务器 - 它们通过 VLAN 连接。

现在我想让 Web 服务器能够远程访问数据库服务器的 MySQL。因此我创建了用户用户mysql.用户

用户的主机是 xxx.yyy.zzz.9,它是 Web 服务器的内部 IP 地址。

xxx.yyy.zzz.0 是网络。我还创建了用户与主人

只要我在数据库服务器上使用 MySQL 并以以下身份登录用户,一切正常。但尝试以用户来自 xxx.yyy.zzz.9 使用

mysql -h xxx.yyy.zzz.8 -u user -p

(其中 xxx.yyy.zzz.8 是数据库服务器的内部 IP),我得到

ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.yyy.zzz.8' (110)  

所以我尝试在 my.cnf 文件中激活Bind-Address。好吧,如果我使用 xxx.yyy.zzz.8,什么都不会改变。但如果我尝试 xxx.yyy.zzz.9 并尝试重新启动 MySQL,我会得到

mysql stop/waiting
start: Job failed to start

我检查了日志文件,什么也没有。数据库服务器的 MySQL 甚至没有注册,Web 服务器尝试远程连接。

我的想法是,也许我没有正确配置 VLAN,尽管我问了一个真正了解这些事情的人,而他告诉我我做的一切都是正确的。

我写的内容/etc/networking/interfaces是:

#The VLAN
auto eth1
iface eth1 inet static
address xxx.yyy.zzz..8
netmask 255.255.255.0
network xxx.yyy.zzz.0
broadcast xxx.yyy.zzz.255
mtu 1500

ifconfig返回

eth1      Link encap:Ethernet  HWaddr xxxxxxxxxxxxxx  
          inet addr:xxx.yyy.zzz.8  Bcast:xxx.yyy.zzz.255  Mask:255.255.255.0
          inet6 addr: xxxxxxxxxxxxxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:241146 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9765 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:17825995 (17.8 MB)  TX bytes:566602 (566.6 KB)
          Memory:fb900000-fb920000 

对于 eth1,我配置了什么。(这是针对数据库服务器的,Web 服务器看起来类似)。

ethtool eth1返回:

Settings for eth1:

    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                                1000baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 100Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: Unknown
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000003 (3)
                           drv probe
    Link detected: yes

(这是针对数据库服务器的,网络服务器看起来类似)。

Bind-Address它不起作用之后我在 my.cnf 中将其注释掉了。

答案1

我得到了它!

psa-firewall由 Plesk 激活和配置的服务正在运行。它拒绝所有传入的 MySQL 请求。

我通过 Plesk 重新配置了它,允许它让 MySQL 请求通过。我不知道我是否也可以在 shell 中做到这一点,但停用它肯定有帮助!但我认为这可能有点危险。

答案2

Mysql 默认只监听 loopback 接口。因此,即使用户拥有正确的权限,您也无法远程访问 mysql 服务器。此外,bind-address 选项并非专门用于授予对某个主机的访问权限,而是用于指定要监听的接口。

因此,首先检查你的 mysql 是否正在监听环回接口

netstat -tnl | grep 3306

你会看到类似的东西

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN

如果正确,你必须更改mysql配置文件

sudo nano /etc/mysql/my.cnf

然后搜索该行:

bind-address = 127.0.0.1

然后将 替换127.0.0.10.0.0.0。你将获得以下行:

bind-address = 0.0.0.0

重启Mysql即可生效

/etc/init.d/mysql restart

结束检查 Mysql 是否正在监听所有接口

netstat -tnl | grep 3306

您应该看到:

tcp        0      0 0.0.0.0:3306          0.0.0.0:*               LISTEN

相关内容