Menu Close

MariaDB-ERROR 2002 (HY000): Can’t connect to local MySQL server through socket

1. 环境描述与出错说明

操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo)
MariaDB数据库:10.5.22-MariaDB-log
出错说明:数据库启动正常,但在本地客户端登录时提示错误,无法登录上数据库。

2. 错误截图与错误内容

file

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/studydb/tmp/mysql.sock' (2)

检查过目录 /studydb/tmp/ 的权限都是mysql。

当时在文件中 /etc/my.cnf.d/mysql-clients.cnf中配置了如下内容:
file

3. 解决方案

建立软连接,即使用服务器运行的mysql.sock,命令如下:

]# ln -s /studydb/socket/mysql.sock ./tmp/mysql.sock

或者直接将文件/etc/my.cnf.d/mysql-clients.cnf中的socket中路径修改为数据库服务中的socket路径。

4. 回顾总结

Mysql有两种连接方式:

  1. TCP/IP
  2. socket

对mysql.sock来说,其作用是 mysql客户端程序 mysql与 mysql服务器端程序 mysqlserver处于同一台机器,发起本地连接时可用 。例如你无须定义连接host的具体IP得,只要为空或localhost就可以。在此种情况下,即使你改变mysql的外部port也是一样可能正常连接。因为 你在my.ini中或my.cnf中改变端口后,mysql.sock是随每一次 mysql server启动生成的。已经根据你在更改完my.cnf后重启mysql时重新生成了一次,信息已跟着变更。

那么对于外部连接,必须是要变更port才能连接的。