MySQL 5.6 - 数据库正在运行,但没有Socket文件

时间:2016-04-30 02:22:48

标签: mysql sockets rhel6 mysql-5.6 mysqladmin

我能够连接到mysql数据库并进行查询。但是,我无法找到套接字文件。

$ps -ef|grep mysql
mysql    31408 30874  0 18:46 pts/1    00:00:00 /bin/sh /usr/bin/mysqld_safe     --defaults-file=/mysql/admin/ofile/TEST1.cnf

mysql    31959 31408  0 18:46 pts/1    00:00:01 /usr/sbin/mysqld --defaults-    file=/mysql/admin/ofile/TEST1.cnf --basedir=/usr --    datadir=/mysql01data/TEST1/data --plugin-dir=/usr/lib64/mysql/plugin --log-    error=/mysql/admin/TEST1/errors/mysqld_safe.err --pid-    file=/mysql/admin/TEST1/run/mysqld_safe.pid

这是我在TEST1.cnf中的套接字文件条目:

$ cat /mysql/admin/ofile/TEST1.cnf|grep sock
socket                            = /mysql/admin/TEST1/run/TEST1.sock

相应的目录只包含pid文件。没有套接字文件。

-sh-4.1$ cd /mysql/admin/TEST1/run
-sh-4.1$ ls -lrt
total 4
-rw-rw---- 1 mysql mysql 6 Apr 29 18:46 mysqld_safe.pid

这是我在RHEL 6.5上通过RPM安装的MySQL 5.6版本。我有我的旧自定义脚本,它使用套接字文件连接到数据库。

所以,我想知道如何使用套接字文件连接数据库?为什么默认情况下不创建套接字文件?

1 个答案:

答案 0 :(得分:1)

运行MySQL Server实例的套接字文件应该可以通过以下shell命令找到:

sudo lsof -a -U -p $(pgrep -d,-f / path / to / your / running / mysqld)

无法找到套接字文件的一个可能原因是,如果在服务器启动后删除了该文件。在这种情况下,上述命令应该有效,并在路径后显示(deleted)之类的内容。

这是我对这个问题的最初假设......但这里的问题是配置疏忽。 "默认文件,"通常称为my.cnf的部分包含多个部分。 [client]部分配置客户端实用程序,如mysqlmysqldump,而[mysqld]部分配置服务器守护程序。如果socket指令不在相应的部分中,则服务器(和/或客户端实用程序)将查找默认编译的位置,/tmp/mysql.sock/var/lib/mysql/mysql.sock为常见默认位置的几个示例。