2016-04-30 58 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是常見默認位置的一些示例。

相關問題