linux上mysql.sock文件的正确位置是什么

时间:2015-10-27 20:46:44

标签: mysql linux

我有一个mysql.ock文件位于:

/tmp/mysql.sock

但my.cnf指向这个位置:

插座=的/ var / lib中/ MySQL的/的mysql.sock

这是对的吗?

2 个答案:

答案 0 :(得分:17)

套接字声明应位于[mysqld]的{​​{1}}下。如果你已经在那里声明了它并仍然指向另一个地方,例如my.cnf,那么当你启动mysql或者有另一个tmp覆盖时,你正在编辑的my.cnf文件没有被读取你正在编辑的那个。这种情况也可能是在同一个my.cnf文件中有第二个Socket声明覆盖了您期望在mysql开始时读取的声明。

您可以通过登录mysql并运行:

来检查其绝对路径
my.cnf

答案 1 :(得分:0)

在Linux上没有用于保存套接字的正确或错误的地方,除了可以随时卸载的外部设备或不时清空的文件夹。您需要配置要放置的位置。

对于MySQL控制台客户端,还有更多需要考虑的事项:客户端似乎使用[client]中提供的套接字配置值,而不是[mysqld]。如果您有多个MySQL服务器设置(如我的设置(4.1、5.5、5.7)),则可能要对每个不同的服务器使用[--defaults-extra-file“选项,并在[client]部分中编写套接字。套接字必须与服务器上使用的my.cnf [mysqld]部分中定义的套接字相同。 这是一个defaults-extra-file.cnf示例,请记住根据您的需要更改用户,密码和套接字-并保留其访问权限400(毕竟存储了密码):

[client]
user = guardian
password = I-4m.Gr00t!
host = localhost
socket = /var/run/mysqld/mysqld-5.6.sock

这仅在您将“ localhost”用作“ host”的值时才适用。如果您有多个本地地址(127.0.0.2、127.0.0.3),则需要在“ localhost”上保留“ host”的配置变量,以使用配置的套接字。否则,客户端将使用TCP连接到服务器。

这已在我的Debian 9.5服务器上使用MySQL 4.1.22、5.5.49和5.7.19及其各自的客户端进行了测试。