Сервер 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 licenseServer version 5.0.45-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sockmysql -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 shutdown080425 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 complete080425 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'
Вроде все...Я в тупике.
А файлик /var/lib/mysql/mysql.sock вообще доступен через php? Может selinux мешает, а может апач в чруте запущен. Также попробуйте соединится через tcp(127.0.0.1:3306), а не unix socket.
>А файлик /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)
походу придется сервак перезапускать:(
В общем, проблема решена углубленным изучением политик 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 (может и не надо, но я сделал), и все работает
если, когда запускаеш с консоли php test.php все работает -- это точно selinux не пускает apacheлечение
setsebool httpd_can_network_connect_db 1