Mysql
Centos 6;移動 mysql.sock 後 phpMyAdmin ‘無法登錄到 MySQL 伺服器’
我最近將我的 mysql
datadir
從安裝在新硬碟驅動器上的/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