如何定义 MySQL 套接字文件的自定义路径?

Kir*_*rby 4 mysql configuration

我有以下配置

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql-socket/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
innodb_buffer_pool_size=64M
innodb_log_file_size=16M

[mysqld_safe]
log-error=/var/log/shared/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Run Code Online (Sandbox Code Playgroud)

因此,套接字文件有一个自定义路径/var/lib/mysql-socket/mysql.sock

MySQL 服务器工作,但我无法连接到它。

$ mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Run Code Online (Sandbox Code Playgroud)

但需要的文件存在。

$ ls /var/lib/mysql-socket/mysql.sock
/var/lib/mysql-socket/mysql.sock
Run Code Online (Sandbox Code Playgroud)

当套接字文件的路径是/var/lib/mysql/mysql.sock它工作正常。

Kár*_*agy 10

您的错误消息说它连接到错误的套接字:

ERROR 2002 (HY000): 无法通过 socket '/var/lib/mysql/mysql.sock' 连接到本地 MySQL 服务器 (2)

您可以在命令行中指定:

mysql -S /var/lib/mysql-socket/mysql.sock ...
Run Code Online (Sandbox Code Playgroud)

或者在客户端部分下的 my.cnf 文件中(这也可以在用户主目录中~/.my.cnf):

[client]
socket=/var/lib/mysql-socket/mysql.sock
Run Code Online (Sandbox Code Playgroud)