SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.09.2007 11:25:10

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Проблемы при коннекте к удаленной БД

Всем привет. Ситуация такая. Есть машина в моей локалке, на ней Fedora 4, Apache 2, php5, mysql4. Инет комп видит, если я захожу через терминал, то соединяется с удаленной базой без проблем.

Код:

mysql -h*** -u*** -p*** --port=3306 -D***

А вот когда пытаюсь из php законнектиться - "Can't connect to MySQL server".
Самое интересное, что когда я коннекчусь к localhost, то коннект проходит, а вот когда к 127.0.0.1 - "Can't connect to MySQL server".
Файл My.cnf

Код:

[mysqld] 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock 
old_passwords=1 
default-character-set=cp1251 
skip-bdb 
port = 3306 

set-variable = innodb_buffer_pool_size=2M 
set-variable = innodb_additional_mem_pool_size=500K 
set-variable = innodb_log_buffer_size=500K 
set-variable = query_cache_size=16M 
set-variable = read_buffer_size=2M 

log-slow-queries=/var/log/mslow.log 

[mysql.server] 
user=mysql 
basedir=/var/lib 

[mysqld_safe] 
err-log=/var/log/mysqld.log 
pid-file=/var/run/mysqld/mysqld.pid 
skip-bdb 

set-variable = innodb_buffer_pool_size=2M 
set-variable = innodb_additional_mem_pool_size=500K 
set-variable = innodb_log_buffer_size=500K 

[client] 
port = 3306

Подскажите, куда копать?

Неактивен

 

#2 18.09.2007 11:32:59

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблемы при коннекте к удаленной БД

Боюсь, что "Can't connect" - это слишком общая ошибка. У Вас может,
например, не хватать прав для соединения под учетной записью из PHP,
или, например, может стоять новый пароль (если MySQL 4.1) при том, что
PHP использует старую библиотеку libmysql.

Попробуйте подключиться с той же машинки, на которой крутится PHP, с
теми же правами, но с помощью клиента mysql.

P.S. Когда вы соединяетесь с localhost - Вы используете UNIX socket, а
когда 127.0.0.1 - TCP/IP.

Неактивен

 

#3 18.09.2007 11:41:27

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Re: Проблемы при коннекте к удаленной БД

paulus написал:

Попробуйте подключиться с той же машинки, на которой крутится PHP, с
теми же правами, но с помощью клиента mysql.

Да, я же писал, с локальной машины через коммандную строку коннект к удаленной БД проходит без проблем.

paulus написал:

P.S. Когда вы соединяетесь с localhost - Вы используете UNIX socket, а
когда 127.0.0.1 - TCP/IP.

Да, это я понимаю. Получается, что невозможно законнектиться по TCP\IP из php. Ведь коннект к 127.0.0.1 тоже не проходит, в то время как с localhost коннектится без вопросов.

paulus написал:

У Вас может, например, не хватать прав для соединения под учетной записью из PHP

Подскажите, пожалуйста, как это проверить? У меня доступ к серверу на уровне root.

paulus написал:

может стоять новый пароль (если MySQL 4.1) при том, что
PHP использует старую библиотеку libmysql.

MySQL у меня 4.1.20. На удаленной машине такой же. А как узнать версию библиотеки libmysql?

Неактивен

 

#4 18.09.2007 12:48:35

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблемы при коннекте к удаленной БД

Слушает ли сервер порт TCP/IP вообще (netstat -an | grep 3306)?
Не закрыт ли он firewall (telnet <host> 3306 с удаленной машины)?
Настроен ли обратный DNS? При отсутствии доступа к DNS при соединении
локально по socket, Ваша учетная запись будет user@localhost, а при
соединении по TCP/IP - user@127.0.0.1.

Неактивен

 

#5 18.09.2007 13:08:43

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Re: Проблемы при коннекте к удаленной БД

paulus написал:

Слушает ли сервер порт TCP/IP вообще (netstat -an | grep 3306)?

Да

Код:

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN

paulus написал:

Не закрыт ли он firewall (telnet <host> 3306 с удаленной машины)?

Как я понимаю, не закрыт - после выполнения команды начинают выдаваться всякие кракозябры, значит соединение есть.

paulus написал:

Настроен ли обратный DNS? При отсутствии доступа к DNS при соединении
локально по socket, Ваша учетная запись будет user@localhost, а при
соединении по TCP/IP - user@127.0.0.1.

Как проверить наличие доступа к DNS?

Когда я на локальной машине набираю

Код:

mysql -h<УДАЛЕННЫЙ host>. -u*** -p*** --port=3306 -D***

то пользователь '<user>'@'<ip>'

Неактивен

 

#6 18.09.2007 13:10:51

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Re: Проблемы при коннекте к удаленной БД

Хм, попробовал выполнить

Код:

mysql -h127.0.0.1 -u*** -p*** --port=3306 -D***

Выдал: <b>ERROR 1130 (00000): #HY000Host 'fedora' is not allowed to connect to this MySQL server</b>
Значит, где-то настраиваются имена разрешенных хостов?

Неактивен

 

#7 18.09.2007 13:16:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблемы при коннекте к удаленной БД

Это означает, что у Вас нет ни одного разрешения (GRANT) на доступ к MySQL
с этого хоста. Попросту, надо написать что-то типа

Код:

GRANT ALL ON *.* TO root@fedora IDENTIFIED BY 'root_password';

Скорее всего, у Вас в /etc/hosts прописано

Код:

127.0.0.1 fedora

Вообще говоря, лучше таких строк не допускать, т.к. 127.0.0.1 зарезервировано
под localhost.

Неактивен

 

#8 18.09.2007 13:26:45

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Re: Проблемы при коннекте к удаленной БД

paulus написал:

Это означает, что у Вас нет ни одного разрешения (GRANT) на доступ к MySQL
с этого хоста. Попросту, надо написать что-то типа

Код:

GRANT ALL ON *.* TO root@fedora IDENTIFIED BY 'root_password';

Скорее всего, у Вас в /etc/hosts прописано

Код:

127.0.0.1 fedora

Вообще говоря, лучше таких строк не допускать, т.к. 127.0.0.1 зарезервировано
под localhost.

У меня в host написано

Код:

127.0.0.1 fedora localhost localhost.localdomain

Убрал. Из терминала соединение прошло, а вот из php коннект к 127.0.0.1:3306 все равно не проходит

На удаленном сервере у меня прописан доступ для юзера <user>@<ip> - под которыми я пытаюсь соединяться. Да и раз через коммнадную строку могу соединиться, значит дело где-то в связке php-mysql

Неактивен

 

#9 18.09.2007 13:32:36

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблемы при коннекте к удаленной БД

А что говорит PHP? Полный текст ошибки можете написать? Например,
вывод вот этого:

Код:

<?php

mysql_connect ('host', 'user', 'password');
print mysql_error();

?>

Неактивен

 

#10 18.09.2007 13:37:35

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Re: Проблемы при коннекте к удаленной БД

paulus написал:

А что говорит PHP? Полный текст ошибки можете написать?

Легко smile

Код:

Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '127.0.0.1' (13) in /var/www/vhosts/realto.ru/httpdocs/_remote.php on line 4
Can't connect to MySQL server on '127.0.0.1' (13)

Неактивен

 

#11 18.09.2007 14:35:16

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблемы при коннекте к удаленной БД

Код:

$ perror 13
OS error code  13:  Permission denied

SELinux?

Неактивен

 

#12 18.09.2007 14:47:25

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Re: Проблемы при коннекте к удаленной БД

paulus написал:

Код:

$ perror 13
OS error code  13:  Permission denied

SELinux?

Fedora 4 (Red hat)

Я, в принципе, подозреваю, что что-то с правами, но толбко где это смотреть\править?

Неактивен

 

#13 18.09.2007 14:51:45

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблемы при коннекте к удаленной БД

Посмотрите файл /etc/selinux/config на наличие строчки SELINUX=disabled

Неактивен

 

#14 18.09.2007 14:51:50

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблемы при коннекте к удаленной БД

Боюсь, что тут Вам прийдется смотреть настройки своей системы самостоятельно.
Я бы начал с того, что запустил тестовый скрипт локально без апача:

Код:

$ php test.php

Если он нормально соединяется, значит, ограничения лежат на апаче. Если не
соединяется - значит, где-то на более глубоком уровне.

Неактивен

 

#15 18.09.2007 14:59:40

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Re: Проблемы при коннекте к удаленной БД

rgbeast написал:

Посмотрите файл /etc/selinux/config на наличие строчки SELINUX=disabled

В нем SELINUX=enforcing

paulus написал:

Я бы начал с того, что запустил тестовый скрипт локально без апача

О! Точно! Спасибо. Скрипт отработал как надо, соединился и выдал инфу. Получается, что в настройках apache. Что может влиять на работу TCP/IP?

Upd: Возможно, за это отвечает один из модулей Apache? У меня практически все отключены для экономии памяти.

Отредактированно Magz (18.09.2007 15:02:03)

Неактивен

 

#16 18.09.2007 15:02:55

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблемы при коннекте к удаленной БД

У Вас включен SELinux, который запрещает Apache соединяться с портом
3306 на удаленном компьютере. Настройте SELinux или выключите его smile

Неактивен

 

#17 18.09.2007 15:03:38

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблемы при коннекте к удаленной БД

SELINUX=enforcing это некая политика безопасности. Смотрите описание от SELINUX, возможно она Вам мешает. Это не настройки апача, а настройки системы, которые запрещают апачу определенные действия. А SELINUX точно нужна? Если нет, то заменить на disabled и перезагрузиться

Неактивен

 

#18 18.09.2007 15:17:47

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Re: Проблемы при коннекте к удаленной БД

ААААА! smile))) Точно, поставил disable и все заработало!!! Ура! Огромное спасибо! Жаль, не придумали еще виртуального пива smile)))

P.S. Это мой первый опыт установки юникса. Решил сделать тестовый сервер один в один с боевым. В принципе, не жалею. Узнал столько нового и интересного smile
P.P.S. Вы - единственный ресурс на котором взялись решить мою проблему! Респект!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson