MySQL 5.6 - 数据库是 运行,但没有套接字文件
MySQL 5.6 - Database is running, but no Socket file
我能够连接到 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
这是我通过 RPM 在 RHEL 6.5 上安装的 MySQL 5.6 版本。我有我的旧自定义脚本,它使用套接字文件连接到数据库。
所以,我想知道如何使用套接字文件连接到数据库?为什么默认不创建socket文件?
MySQL 服务器的 运行 实例的套接字文件应该是可以使用此 shell 命令找到的文件:
sudo lsof -a -U -p $(pgrep -d, -f /path/to/your/running/mysqld)
找不到套接字文件的一个可能原因是它在服务器启动后被删除了。在这种情况下,上面的命令应该可以工作,并在路径后显示类似 (deleted)
的内容。
这是我对这个问题的最初假设...但这里的问题是配置疏忽。 "defaults file," 通常称为 my.cnf
包含多个部分。 [client]
部分配置客户端实用程序,如 mysql
和 mysqldump
,而 [mysqld]
部分配置服务器守护程序。如果 socket
指令不在适当的部分,服务器(and/or 客户端实用程序)将在默认编译的位置查找,/tmp/mysql.sock
或 /var/lib/mysql/mysql.sock
几个常见默认位置的示例。
我能够连接到 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
这是我通过 RPM 在 RHEL 6.5 上安装的 MySQL 5.6 版本。我有我的旧自定义脚本,它使用套接字文件连接到数据库。
所以,我想知道如何使用套接字文件连接到数据库?为什么默认不创建socket文件?
MySQL 服务器的 运行 实例的套接字文件应该是可以使用此 shell 命令找到的文件:
sudo lsof -a -U -p $(pgrep -d, -f /path/to/your/running/mysqld)
找不到套接字文件的一个可能原因是它在服务器启动后被删除了。在这种情况下,上面的命令应该可以工作,并在路径后显示类似 (deleted)
的内容。
这是我对这个问题的最初假设...但这里的问题是配置疏忽。 "defaults file," 通常称为 my.cnf
包含多个部分。 [client]
部分配置客户端实用程序,如 mysql
和 mysqldump
,而 [mysqld]
部分配置服务器守护程序。如果 socket
指令不在适当的部分,服务器(and/or 客户端实用程序)将在默认编译的位置查找,/tmp/mysql.sock
或 /var/lib/mysql/mysql.sock
几个常见默认位置的示例。