Войти

Показать полную графическую версию : [решено] доступ к удаленному mysql


Surround
22-06-2010, 09:33
Добрый день!
Ситуация такая: есть два сервера: один - базы данных, второй - веб. Соответственно, используется Mysql и PHP. Коннект к базе должен происходить не на локалхост, а на другой сервер. Но дело в том, что скрипты пишут:
Can't connect to MySQL server on '192.168.15.135' (13)
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
файла mysql.sock, к слову сказать, нет вообще (на машине веб-сервера не установлен mysql-сервер). Но я так понимаю, что он пытается подключиться к локалхосту, когда не может найти удаленный хост. Так вот, запара в том, что не может найти удаленный.
Из командной строки подключение к удаленному mysql функционирует, сервер пинугется. Подскажите, пожалуйста, куда копать?

dmitryst
22-06-2010, 14:00
Подскажите, пожалуйста, куда копать? »
копать скрипты на предмет поиска строки, которая задает имя сервера для коннекта. Потребуется ввести имя удаленного хоста или его айпишник.

Surround
23-06-2010, 08:37
dmitryst, естественно, это указывается. Скрипт простейший:
define('MYSQL_SERVER', '192.168.15.135');
define('MYSQL_USER', '123');
define('MYSQL_PASSWORD', '123');
define('MYSQL_DATABASE', 'base');
mysql_connect(MYSQL_SERVER, MYSQL_USER, MYSQL_PASSWORD)or die(mysql_error());
mysql_select_db(MYSQL_DATABASE) or die (mysql_error());

dmitryst
23-06-2010, 17:28
Surround, юзер имеет право коннектиться удаленно? Если нет, только с локалхоста, то вроде такая ошибка и должна быть (давно не извращался, всегда оба сервера локально). проверьте его права доступа

Surround
23-06-2010, 19:21
таки как раз дело в том, что именно под этим пользователем я и захожу удаленно ('123'), он так и настроен.
Самое еще то, что в логах mysqld не зафиксировано вообще никаких обращений в случае запуска скрипта. То есть не пускает конкретно веб-сервер.. и не понятно, что может так избирательно действовать...

Surround
24-06-2010, 18:17
смотрел фаервол - все исходящие разрешены...

BuGfiX
25-06-2010, 12:23
php-mysql устанвлен ?
что выдает функция phpinfo() ?
что выдает grep -i mysql /etc/php.ini ?

Surround
25-06-2010, 14:52
BuGfiX,
стоит php-mysql-5.1.6-23.2.el5_3

php-инфо про mysql
Configure Command './configure' '--build=i686-redhat-linux-gnu' '--host=i686-redhat-linux-gnu' '--target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-expat-dir=/usr' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-kerberos' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--with-mime-magic=/usr/share/file/magic.mime' '--without-sqlite' '--with-libxml-dir=/usr' '--with-xml' '--with-system-tzdata' '--with-apxs2=/usr/sbin/apxs' '--without-mysql' '--without-gd' '--without-odbc' '--disable-dom' '--disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' '--disable-xmlwriter'

additional .ini files parsed /etc/php.d/dbase.ini, /etc/php.d/mysql.ini, /etc/php.d/mysqli.ini, /etc/php.d/pdo.ini, /etc/php.d/pdo_mysql.ini, /etc/php.d/pdo_sqlite.ini

mysqlMySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 5.0.77
MYSQL_MODULE_TYPE external
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_INCLUDE -I/usr/include/mysql
MYSQL_LIBS -L/usr/lib/mysql -lmysqlclient

mysqliMysqlI Support enabled
Client API library version 5.0.77
Client API header version 5.0.45
MYSQLI_SOCKET /var/lib/mysql/mysql.sock

grep -i mysql /etc/php.ini:

extension=mysql.so
extension=mysqli.so
[MySQL]
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
; Default port number for mysql_connect(). If unset, mysql_connect() will use
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
; at MYSQL_PORT.
mysql.default_port =
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
mysql.default_socket =
; Default host for mysql_connect() (doesn't apply in safe mode).
mysql.default_host =
; Default user for mysql_connect() (doesn't apply in safe mode).
mysql.default_user =
; Default password for mysql_connect() (doesn't apply in safe mode).
; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[MySQLi]
mysqli.max_links = -1
; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
; at MYSQL_PORT.
mysqli.default_port = 3306
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
mysqli.default_socket =
; Default host for mysql_connect() (doesn't apply in safe mode).
mysqli.default_host =
; Default user for mysql_connect() (doesn't apply in safe mode).
mysqli.default_user =
; Default password for mysqli_connect() (doesn't apply in safe mode).
; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
mysqli.default_pw =
mysqli.reconnect = Off

BuGfiX
25-06-2010, 16:07
с виду все нормально.. попробуйте включить
mysql.trace_mode = On
и попробовать снова

dmitryst
25-06-2010, 16:49
смотрел фаервол - все исходящие разрешены... »
ещё можно поставить iftop и посмотреть им, идут ли запросы откуда надо и куда надо или всё-таки не идут (можно и tpcdump-ом)

Surround
28-06-2010, 15:02
я так полагаю, что проблема в SELinux, нашел метод (http://www.cyberciti.biz/faq/howto-disable-httpd-selinux-security-protection/) его отключения путем внесения флага httpd_disable_trans=1 в /etc/selinux/targeted/booleans. Однако такого файла у меня нет, вместо него есть /etc/selinux/targeted/policy/policy.21, в котором присутствует данный флаг, однако, файл имеет несколько бинарный формат, то есть вида: httpd_disable_trans<97>^@^@^@^@^@^@^@^R^@^@^@ и далее следующий параметр. Чем править в таком случае?

Surround
29-06-2010, 09:06
спасибо! проблема была именно в SELinux, отключи ее для веб-сервера - все встало на свои места!




© OSzone.net 2001-2012