ubuntu-community!
Опять у меня проблема с моим специальным другом MySQL: D
У меня есть два сервера - сервер базы данных и веб-сервер - которые подключены через VLAN.
Теперь я хочу, чтобы веб-сервер имел удаленный доступ к MySQL сервера базы данных. Поэтому я создал пользователя user в mysql.user .
Хост пользователя - это xxx.yyy.zzz.9, который является внутренним IP-адресом веб-сервера.
xxx.yyy.zzz.0 - это сеть. Я также создал пользователя с помощью Host % .
Пока я использую 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)
Поэтому я попытался активировать Bind-Address
в файле my.cnf. Хорошо, если я использую xxx.yyy.zzz.8, ничего не изменится. Но если я попробую xxx.yyy.zzz.9 и попробую перезапустить MySQL, я получу
mysql stop/waiting
start: Job failed to start
Я проверил файлы журнала и не нашел - ничего. MySQL сервера базы данных даже не регистрируется, что веб-сервер пытается подключиться удаленно.
Моя идея заключается в том, что, возможно, я не настраивал свойства 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, что я настроил. (Это для сервера базы данных, веб-сервер выглядит аналогично).
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
(Это для сервера базы данных, веб-сервер выглядит аналогично).
1135 На самом деле, я думаю, все правильно, но все равно не работает. Есть кто-то с идеей?
РЕДАКТИРОВАТЬ: Я прокомментировал ou Bind-Address
в my.cnf после того, как он не работал.
Я понял!
Служба psa-firewall
, которая активируется и настраивается Plesk, работает. Он отклонял все входящие MySQL-запросы.
Я перенастроил его через Plesk, позволяя пропустить MySQL-запросы. Я не знаю, смог бы я сделать это и в оболочке, но деактивация тоже помогла! Тем не менее, я думаю, это может быть опасно.
Спасибо, Оливер, за попытку помочь мне!
Тогда увидимся!
Mysql слушает по умолчанию только на интерфейсе обратной связи. Таким образом, даже имея пользователя с соответствующими правами, вы не сможете получить удаленный доступ на своем сервере 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.1
на 0.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