O PHP não pode se conectar ao MySQL depois de alterar o datadir

2

Eu alterei meu datadir do MySQL e o local do soquete no meu /etc/my.cnf da seguinte forma:

[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

Depois de escrever meu my.cnf como acima, reiniciei meu mysqld com /etc/init.d/mysqld restart .

Eu consigo me conectar ao meu MySQL através do meu terminal usando mysql -uroot -ppassword , e meus dados existem cooretamente, então não há problema.

Mas quando eu tento conectar ao MySQL em um simples index.php da seguinte forma:

<?
$link = mysql_connect('localhost', 'root', 'password', TRUE);
echo $link;
?>

Eu recebo o erro:

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

Não consigo descobrir por que meu PHP está tentando procurar /var/lib/mysql/mysql.sock , quando eu obviamente mudei para /data/lib/mysql/mysql.sock .

Estou executando um Apache v2.2.22 normal carregando um php5_module normal.

Eu reiniciei meu apache com restart e graceful .

Alguém sabe o que está acontecendo?

    
por ashiina 15.03.2013 / 11:23

2 respostas

1

Isso geralmente é alterado no arquivo de configuração php.ini .

Dependendo da extensão php mysql que você está usando, a configuração é um pouco diferente. Se você não definir essas propriedades, sua extensão mysql usará o padrão que foi configurado em tempo de compilação, que é mais do que provavelmente /var/lib/mysql/mysql.sock

Uma vez que a propriedade relativa à extensão que você está usando está corretamente definida, não há necessidade de alterar qualquer código PHP.

pdo_mysql

Se você estiver usando a extensão pdo_mysql para se conectar ao seu servidor MySQL, a configuração a ser procurada é:

pdo_mysql.default_socket = /data/lib/mysql/mysql.sock

mysql

Se você estiver usando a extensão mysql , configure o seguinte:

mysql.default_socket = /data/lib/mysql/mysql.sock

mysqli

Para a extensão mysqli , veja:

mysqli.default_socket = /data/lib/mysql/mysql.sock
    
por 15.03.2013 / 11:59
1

Já faz algum tempo desde a última vez que mexi com o php, mas você pode tentar

mysql_connect('localhost:/data/lib/mysql/mysql.sock', ........)

edit: confira o link

    
por 15.03.2013 / 11:39