LINUX.ORG.RU
ФорумAdmin

mysql коннект к базе на другом сервере.


0

1

Приветствую!Есть сервер с сайтом,на котором база с мускулом не пашет.С бэкапа восстановил базу на другом сервере,открыл к базе доступ для нужного пользователя с нужного ip.В каталоге сайта есть файлик с параметрами соединения

<?php

//MYSQL SETTINGS

$dbhost = «192.168.0.2»;

$dbuser = «user»;

$dbpass = «pass»;

$dbname = «db»;

$dbprefix = «db»;

$lang = «ru»;

Сайт не стартует.Подрубаюсь с этими же данными через mysql workbench,коннектится нормально.В логах записей никаких нет. Подскажите,как правильно организовать такую связку сайта на одной машине и мускульной базы на другой?


Подрубаюсь с этими же данными через mysql workbench

Тоже через сеть, или с локалхоста ?
Если через сеть, начинать tcpdump-ом смотреть, что куда бегает.

AS ★★★★★
()

Попробуйте посмотреть error_log на сервере с сайтом или выведите

die("Error: " . mysql_error());
сразу после mysql_connect()

XAMeLeOH
()
Ответ на: комментарий от den777

tcpdump -i eth2 host 192.168.0.2

listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes

12:24:13.271674 IP 192.168.0.3.43267 > 192.168.0.2.mysql: Flags , seq 712373963, win 5840, options [mss 1460,sackOK,TS val 36683822 ecr 0,nop,wscale 6], length 0

12:24:13.271859 IP 192.168.0.2.mysql > 192.168.0.3.43267: Flags [S.], seq 3394957052, ack 712373964, win 14480, options [mss 1460,sackOK,TS val 23584630 ecr 36683822,nop,wscale 4], length 0

12:24:13.271894 IP 192.168.0.3.43267 > 192.168.0.2.mysql: Flags [.], ack 1, win 92, options [nop,nop,TS val 36683822 ecr 23584630], length 0

12:24:18.286503 ARP, Request who-has 192.168.0.3 tell 192.168.0.2, length 46

12:24:18.286514 ARP, Reply 192.168.0.3 is-at 00:13:21:7c:98:77 (oui Unknown), length 28

Кусок вывода tcpdump,помогите расшифровать,пожалуйста.

den777
() автор топика
Ответ на: комментарий от den777

Кусок вывода tcpdump,помогите расшифровать,пожалуйста.

Это только заголовки TCP и IP.

Нужно tcpdump -s0 -w /tmp/tcpdump.bin ...

А потом смотреть wireshark'ом, например.

XAMeLeOH
()
Ответ на: комментарий от drBatty

mysql --user=user --host=192.168.0.2 --password db

Enter password:

ERROR 1044 (42000): Access denied for user 'user'@'%' to database 'db'

Странно,у юзера user есть grant all priveleges на эту базу.

den777
() автор топика
Ответ на: комментарий от den777

Странно,у юзера user есть grant all priveleges на эту базу.

наверное у 'user'@'localhost' есть такие привилегии, а вам нужно создать пользователя 'user'@'192.168.0.3' или 'user'@'%' на худой конец.

XAMeLeOH
()
Ответ на: комментарий от XAMeLeOH

Именно так'user'@'192.168.0.3' и создавал пользователя. С другой машины в сети через mysql workbench подцепляюсь к базе с этим пользователем.

den777
() автор топика
Ответ на: комментарий от den777

С другой машины в сети через mysql workbench подцепляюсь к базе с этим пользователем.

А машина на которой web крутится с каким IP-адресом?

Пользователь должен быть именно с этим адресом. Сделайте для начала 'user'@'%', это универсальный подход. Как заработает, будете уже гайки закручивать.

XAMeLeOH
()
Ответ на: комментарий от XAMeLeOH

Спасибо!Помогло 'user'@'% создал,к базе подключаюсь!Щас дальше буду пробовать.

den777
() автор топика
Ответ на: комментарий от den777

Странно,у юзера user есть grant all priveleges на эту базу.

привилегия зависит от хоста (это то, что после собаки). Вангую, что привилегиями обладает user@localhost, и потому вход с других хостов невозможен. Вам следует наделить привилегиями user@%, здесь процент значит «любой».

drBatty ★★
()
Ответ на: комментарий от drBatty

Вангую, что привилегиями обладает user@localhost

Там наверное 3 тачки:

  • mysql
  • web
  • workbench

Думаю, 192.168.0.3 это машина с workbench, а web наверное на 192.168.0.1.

XAMeLeOH
()
Ответ на: комментарий от den777

А в плане безопасности оправдано использование пользователя 'user'@'%'?

Для тестирования в локалке вполне, если извне доступ невозможен (вы сидите за рутером с натом). Если сервера с внешними IP-адресами, то это, конечно не комильфо, надо закрываться.

XAMeLeOH
()
Ответ на: комментарий от XAMeLeOH

Тут есть разные способы. Вообще не очень хорошо держать mysql открытым во вне. Если файрволом закроете ото всех нехороших людей, кроме web-сервера, то можно использовать и так.

Тем не менее правильнее указывать конкретный IP-адрес. У вас все еще проблема не разрешилась?

XAMeLeOH
()
Ответ на: комментарий от XAMeLeOH

Всё заработало!Спасибо большое!Сервер с мускулом у меня за натом,получается что к нему обращается только веб-сервер,по внутреннему адресу.Попробую позже указать ip адрес,щас нет возможности экспериментировать,сайт в продакшене.

den777
() автор топика
Ответ на: комментарий от den777

А в плане безопасности оправдано использование пользователя 'user'@'%'?

конечно нет. Лучше заменить его на user@192.168.0.2. Ну и ещё лучше конечно на localhost, но сам понимаешь…

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.