2016-04-30 9 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 

Это версия MySQL 5.6, установленная через RPM на RHEL 6.5. У меня есть мои старые пользовательские сценарии, которые используют файл сокета для подключения к базе данных.

Итак, мне интересно, как я могу использовать файл сокета для подключения к базе данных? Почему файл сокета не создается по умолчанию?

+0

вы можете найти файл сокета в каталоге базы данных mysql –

+1

Использует ли 'sudo lsof -a -U -p $ (pgrep -d, -f/usr/sbin/mysqld)' любую полезную информацию? –

+0

@ Michael-sqlbot Да, я вижу файл сокета, созданный в/var/lib/mysql. Но почему файл сокета не подчиняется моему параметру «socket» в файле conf? '-sh-4.1 $ lsof -a -U -p $ (pgrep -d, -f/usr/sbin/mysqld) COMMAND PID USER FD TYPE SIZE/OFF ИМЯ mysqld 5042 mysql 20u unix 0t0/var/lib/mysql/mysql.sock' – vins

ответ

1

Файл сокета для запущенного экземпляра сервера MySQL должен быть чем-то, что можно найти с помощью этой команды оболочки:

Судо Lsof -a -U -p $ (pgrep -d, -f/путь/к/your/running/mysqld)

Возможна одна из причин невозможности найти файл сокета, если он был удален после запуска сервера. В этом случае вышеприведенная команда должна работать и показать что-то вроде (deleted) после пути.

Это было мое первоначальное предположение по этому вопросу ... но здесь проблема заключалась в контроле конфигурации. «Файл по умолчанию», обычно называемый my.cnf, содержит несколько разделов. Раздел [client] настраивает клиентские утилиты, такие как mysql и mysqldump, а раздел [mysqld] настраивает серверный демон. Если директива socket не находится в соответствующем разделе, сервер (и/или клиентские утилит) будет выглядеть в месте, скомпилированном по умолчанию, с /tmp/mysql.sock или /var/lib/mysql/mysql.sock, представляющим собой пару примеров обычных местоположений по умолчанию.