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

标签 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

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

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

最佳答案

正在运行的 MySQL 服务器实例的套接字文件应该可以使用以下 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 是常见默认位置的几个示例。

关于MySQL 5.6 - 数据库正在运行,但没有套接字文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36950006/

相关文章:

php - 无法使用 PHP 打印数据库值

linux - 使用 shell 命令将数据汇集到守护进程的非守护进程中

linux - RHEL 6.5 上的扭矩安装

python - 如何在 Linux RHEL 6.6 上安装 docker-compose?

java - Table.getItem 仅在 RHEL6 中返回错误的项目

php - 需要通过 css 将颜色添加到 html 表格

mysql - 两个选择 SQL 语句的结果划分

mysql - 对大数据进行排序的最佳数据存储是什么

java - 自制的 SocketImplFactory 导致空指针

c++ - 套接字通过并发FTP传输接收到错误的数据