我最近将我的 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文件中需要更改的两行是:
不要伪造重启httpd: