1. 环境描述与出错说明
操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo)
MariaDB数据库:10.5.22-MariaDB-log
出错说明:数据库启动正常,但在本地客户端登录时提示错误,无法登录上数据库。
2. 错误截图与错误内容
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
中配置了如下内容:
3. 解决方案
建立软连接,即使用服务器运行的mysql.sock,命令如下:
]# ln -s /studydb/socket/mysql.sock ./tmp/mysql.sock
或者直接将文件/etc/my.cnf.d/mysql-clients.cnf
中的socket中路径修改为数据库服务中的socket路径。
4. 回顾总结
Mysql有两种连接方式:
- TCP/IP
- socket
对mysql.sock来说,其作用是 mysql客户端程序 mysql与 mysql服务器端程序 mysqlserver处于同一台机器,发起本地连接时可用 。例如你无须定义连接host的具体IP得,只要为空或localhost就可以。在此种情况下,即使你改变mysql的外部port也是一样可能正常连接。因为 你在my.ini中或my.cnf中改变端口后,mysql.sock是随每一次 mysql server启动生成的。已经根据你在更改完my.cnf后重启mysql时重新生成了一次,信息已跟着变更。
那么对于外部连接,必须是要变更port才能连接的。