![my.cnf 的 [mysql] 部分和 [mysqld] 部分中指定的套接字之间有什么关系?](https://linux22.com/image/629225/my.cnf%20%E7%9A%84%20%5Bmysql%5D%20%E9%83%A8%E5%88%86%E5%92%8C%20%5Bmysqld%5D%20%E9%83%A8%E5%88%86%E4%B8%AD%E6%8C%87%E5%AE%9A%E7%9A%84%E5%A5%97%E6%8E%A5%E5%AD%97%E4%B9%8B%E9%97%B4%E6%9C%89%E4%BB%80%E4%B9%88%E5%85%B3%E7%B3%BB%EF%BC%9F.png)
我遇到了一个奇怪的问题,我确信这是套接字的问题。我无法在 my.cnf 配置的 mysqld 部分中指定套接字,如果我指定,服务器将无法启动。
我还有另一个更广泛的问题,在这里my.cnf 中的 MySQL Socket 配置问题但我觉得这就是问题的关键,所以我在这里特别询问 [mysql] 部分(客户端)中指定的套接字与守护进程部分 [mysqld] 中指定的套接字之间的关系。
它们必须匹配吗?如果我无法在那里指定套接字,这意味着什么?
谢谢。
答案1
是的,套接字设置需要匹配。套接字是进程之间的一种通信模式。服务器指定一个路径,例如电话号码或 IP 地址,它将监听请求/通信。客户端软件连接到套接字的路径。如果客户端和服务器的值不同,那么就像拨错号码或访问错误的 URL 一样。
如果在指定套接字后无法启动服务器,则可能是路径无效,或者您指向的位置由于某种原因服务器无法写入。修复该问题。如果您想要将其更改为服务器可以访问的其他位置,然后使用新路径更新客户端。
答案2
您应该确保 mysql.sock 文件所在的目录可由 MySQL 进程写入。目录中的其他文件仅归 mysql:mysql 所有是不够的。