URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5716
[ Назад ]

Исходное сообщение
"Can't connect to local MySQL server through socket"

Отправлено dench , 25-Апр-08 13:35 
Сервер Fedora Core 6. Установлен и запущен Mysql
mysqladmin version
mysqladmin  Ver 8.41 Distrib 5.0.45, for pc-linux-gnu on i686
Copyright (C) 2000-2006 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          5.0.45-log
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock

mysql -uroot
соединяется, работают запросы и все такое.
но вот из php соединиться не выходит:(

Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13) in /var/www/html/my.php on line 3

вроде как бы прав не хватает, но
[root@gw3 mysql]# ls -Z
srwxrwxrwx  mysql mysql user_u:object_r:mysqld_db_t:s0   mysql.sock

тут видна и метка от Selinux (user_u:object_r:mysqld_db_t:s0), вроде все правильно, поправьте пожалуйста, если тут другое должно быть. Чтобы отключить Selinux, потребуется перезагрузка сервера, а это крайне нежелательная вещь для данного сервера:(

вот что в лог записал
[root@gw3 mysql]# [root@gw3 data]# cat gw3.err
080425 14:32:37 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown

080425 14:32:37  InnoDB: Starting shutdown...
080425 14:32:40  InnoDB: Shutdown completed; log sequence number 0 43655
080425 14:32:40 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

080425 14:32:40  mysqld ended

080425 14:32:40  mysqld started
080425 14:32:41  InnoDB: Started; log sequence number 0 43655
080425 14:32:41 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.0.45-log'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL)

socket и в my.cnf и в php.ini равен '/var/lib/mysql/mysql.sock'
Вроде все...

Я в тупике.


Содержание

Сообщения в этом обсуждении
"Can't connect to local MySQL server through socket"
Отправлено angra , 25-Апр-08 15:49 
А файлик /var/lib/mysql/mysql.sock вообще доступен через php? Может selinux мешает, а может апач в чруте запущен. Также попробуйте соединится через tcp(127.0.0.1:3306), а не unix socket.

"Can't connect to local MySQL server through socket"
Отправлено dench , 28-Апр-08 07:37 
>А файлик /var/lib/mysql/mysql.sock вообще доступен через php? Может selinux мешает, а может
>апач в чруте запущен. Также попробуйте соединится через tcp(127.0.0.1:3306), а не
>unix socket.

Gsnfkcz b xthtp 127.0.0.1:3306, то же самое - Can't connect to MySQL server on '127.0.0.1' (13)

походу придется сервак перезапускать:(


"Can't connect to local MySQL server through socket"
Отправлено dench , 28-Апр-08 08:41 
В общем, проблема решена углубленным изучением политик selinux. но все оказалось просто.
остановил mysql и apache
установил audit и checkpolicy
запускаю audit.
запускаю apache
выполняю команду
   grep http /var/log/audit/audit.log | audit2allow -M apache
в текущей директории будут три файла apache.mod, apache.pp, apache.te
В консоль вывалится подсказка, что нужно выполнить комунду
   semodule -i apache.pp
выполняем её.

те же действия выполняем и для mysql.
   1.запускаем mysql.
   2.grep mysql /var/log/audit/audit.log | audit2allow -M mysql
   3.semodule -i mysql.pp

перезапускаем apache и mysql (может и не надо, но я сделал), и все работает


"Can't connect to local MySQL server through socket "
Отправлено Zork , 31-Мрт-13 01:34 
если, когда запускаеш с консоли php test.php все работает -- это точно selinux не пускает apache

лечение

setsebool httpd_can_network_connect_db 1