Я изменил каталог данных MySQL и расположение сокета в /etc/my.cnf
следующим образом:
[mysqld]
#--default datadir
#datadir=/var/lib/mysql
#--new datadir
datadir=/data/lib/mysql
#--default socket
#socket=/var/lib/mysql/mysql.sock
#--new socket
socket=/data/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# slow log
log-slow-queries=/var/log/mysqld-slow.log
long-query-time=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
#--default socket
#socket=/var/lib/mysql/mysql.sock
#--new socket
socket=/data/lib/mysql/mysql.sock
После написания my.cnf, как указано выше, я перезапустил mysqld с помощью /etc/init.d/mysqld restart
.
Я могу подключиться к моему MySQL через свой терминал, используя mysql -uroot -ppassword
, и мои данные существуют правильно, так что здесь нет никаких проблем.
Но когда я пытаюсь подключиться к MySQL с помощью простого index.php следующим образом:
<?
$link = mysql_connect('localhost', 'root', 'password', TRUE);
echo $link;
?>
Я получаю сообщение об ошибке:
Warning: mysql_connect(): Can't connect to local MySQL server through socket
'/var/lib/mysql/mysql.sock' (2) in /var/ww/html/index.php on line 3
Я не могу понять, почему мой PHP пытается найти /var/lib/mysql/mysql.sock
, когда я, очевидно, изменил его на /data/lib/mysql/mysql.sock
.
Я использую обычный Apache v2.2.22, загружаю нормальный php5_module
.
Я перезапустил свой apache с обоими restart
и graceful
.
Кто-нибудь знает, что происходит?
Прошло некоторое время с тех пор, как я в последний раз возился с php, но вы можете попробовать
mysql_connect('localhost:/data/lib/mysql/mysql.sock', ........)
изменить: проверить http://php.net/manual/en/function.mysql-connect.php
Обычно это изменяется в вашем php.ini
Файл конфигурации.
В зависимости от используемого вами расширения php mysql настройка может немного отличаться. Если вы не установите эти свойства, ваше расширение mysql будет использовать значение по умолчанию, которое было настроено во время компиляции, что более чем вероятно /var/lib/mysql/mysql.sock
После того, как свойство, относящееся к используемому вами расширению, установлено правильно, нет необходимости изменять какой-либо код PHP.
Если вы используете pdo_mysql
расширение для подключения к вашему серверу MySQL, конфигурация, которую нужно искать:
pdo_mysql.default_socket = /data/lib/mysql/mysql.sock
Если вы используете mysql
расширение, настройте следующее:
mysql.default_socket = /data/lib/mysql/mysql.sock
Для mysqli
расширение, посмотрите:
mysqli.default_socket = /data/lib/mysql/mysql.sock