Mysql

Centos 6;移動 mysql.sock 後 phpMyAdmin ‘無法登錄到 MySQL 伺服器’

  • May 4, 2020

我最近將我的 mysqldatadir從安裝在新硬碟驅動器上的/var/lib/mysql新目錄中移動。/home/mysql

tmpdir為了整潔起見,我認為將和socket放在這個新硬碟上會很好。

一切都按計劃進行,直到我移動了套接字文件。移動套接字文件會阻止 phpMyAdmin 登錄;我可以從命令行正常登錄並使用我的 Web 框架,但不能使用 phpMyAdmin。

工作配置與非工作配置之間的唯一區別在於我的my.cnf文件..

在職的:

[mysqld]
socket = /var/lib/mysql/mysql.sock 

...

[client]
socket = /var/lib/mysql/mysql.sock

不是:

[mysqld]
socket = /home/mysql/mysql.sock 

...

[client]
socket = /home/mysql/mysql.sock

假設這是一個權限錯誤,我檢查了每個位置的路徑:

drwxr-xr-x. root  root  var
drwxr-xr-x. root  root  lib
drwxr-xr-x  mysql mysql mysql
srwxrwxrwx  mysql mysql mysql.sock

drwxr-xr-x. root  root  home
drwxr-xr-x  mysql mysql mysql
srwxrwxrwx  mysql mysql mysql.sock

所以我猜他們沒問題。我猜錯了嗎?

我將 phpMyAdmin 配置為使用'localhost'我將 mysqlbind-address選項設置為伺服器的本地網路 IP (192.168.etc.)

在測試新配置時,我還重新啟動了httpd和伺服器。mysqld

我很高興將套接字文件留在原處,假設這不是安全/性能問題,但如果有人可以幫助闡明一些問題,我很想知道發生了什麼!

除非您使用內置的預設位置,否則 PHP 還需要在 php.ini 文件或連接字元串中顯式配置 MySQL 套接字文件的位置…

pdo_mysql.default_socket= /home/mysql/mysql.sock

或取決於您選擇的 API

mysqli.default_socket= /home/mysql/mysql.sock

正如ibennech在上面的評論中所建議的那樣,將套接字路徑設置為新位置即可。在我的情況下,連接類型的預設設置是**’tcp’。這也需要更改為‘socket’**。

因此, config.in.php文件中需要更改的兩行是:

$cfg['Servers'][$i]['socket'] = '/home/mysql/mysql.sock';
$cfg['Servers'][$i]['connect_type'] = 'socket';

不要偽造重啟httpd:

systemctl restart httpd

引用自:https://serverfault.com/questions/767047