2016-04-30 63 views
0

我能够连接到mysql数据库并进行查询。但是,我无法找到套接字文件。MySQL 5.6 - 数据库正在运行,但没有Socket文件

$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版本。我有我的旧自定义脚本,它使用套接字文件连接到数据库。

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

+0

你可以在mysql数据库目录下找到套接字文件 –

+1

'sudo lsof -a -U -p $(pgrep -d,-f/usr/sbin/mysqld)'提供任何有用的信息吗? –

+0

@ Michael-sqlbot是的,我确实看到/ var/lib/mysql中创建的套接字文件。但是,为什么套接字文件不符合conf文件中的'套接字'参数? '-sh-4.1 $ lsof -a -U -p $(pgrep -d,-f/usr/sbin/mysqld)命令PID用户FD类型大小/关闭名称mysqld 5042 mysql 20u unix 0t0/var/lib/mysql/mysql.sock' – vins

回答

1

为MySQL服务器的运行实例的套接字文件应是一种可以用这个shell命令中找到:

须藤lsof的-a -U -p $(p纤ep -d,-f /路径/到/ your/running/mysqld)

无法找到套接字文件的一个可能原因是在服务器启动后它已被删除。在这种情况下,上述命令应该可以工作,并在路径后显示类似(deleted)的内容。

这是我对这个问题的原始假设......但这里的问题是配置监督。 “默认文件”通常被称为my.cnf包含多个部分。 [client]部分配置客户端实用程序,如mysqlmysqldump,而[mysqld]部分配置服务器守护进程。如果socket指令不在适当的部分,则服务器(和/或客户端实用程序)将默认查找编译的位置,其中/tmp/mysql.sock/var/lib/mysql/mysql.sock是常见默认位置的一些示例。

相关问题