Я нахожусь на MacOS 10.12 и получаю знакомую ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' . Но я не думаю, что это один из обычных преступников.

Файл сокета /tmp/mysql.sock отсутствует, но mysqld запущен. На самом деле, похоже, что есть два процесса mysqld :

$ ps -axx | grep mysqld
  63 ??         0:00.02 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql
 109 ??         0:00.27 /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid
 267 ??         0:00.20 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/localhost.err --pid-file=/usr/local/mysql/data/Jonathans-iMac.pid

Я думаю, что я установил и удалил несколько версий mysql некоторое время назад. Так может быть, старый экземпляр болтается, мешает?

Я не могу найти старую установку, хотя. И я даже не могу убить второй второй процесс mysqld (я думаю, что это плохой процесс) без его немедленного перезапуска. Кажется, mysqld_safe просто перезапускает его.

Иногда перезагрузка всей системы волшебным образом заставляет все работать. Есть еще два процесса mysqld , но по крайней мере /tmp/mysql.sock создан, и я могу получить доступ к своим базам данных как обычно. В других случаях перезагрузка не помогает.

Я искал дополнительный файл .plist который мог бы отвечать за дополнительный процесс mysqld , но не повезло:

$ locate plist | grep mysql
/Library/LaunchDaemons/com.mysql.mysql.plist
/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
/private/var/db/receipts/com.mysql.launchd.plist
/private/var/db/receipts/com.mysql.mysql.plist
/private/var/db/receipts/com.mysql.prefpane.plist

Вот содержимое /Library/LaunchDaemons/com.mysql.mysql.plist:

<!--?xml version="1.0" encoding="UTF-8"?-->
<plist version="1.0">
  <dict>
<key>KeepAlive</key>
<true />
<key>Label</key>
<string>com.mysql.mysqld</string>
<key>ProgramArguments</key>
<array>
  <string>/usr/local/mysql/bin/mysqld_safe</string>
  <string>--user=mysql</string>
</array>

и /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>         
<string>com.oracle.oss.mysql.mysqld</string>
    <key>ProcessType</key>       <string>Interactive</string>
    <key>Disabled</key>          <false/>
    <key>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <true/>
    <key>SessionCreate</key>     <true/>
    <key>LaunchOnlyOnce</key>    <false/>
    <key>UserName</key>          <string>_mysql</string>
    <key>GroupName</key>         <string>_mysql</string>
    <key>ExitTimeOut</key>       <integer>600</integer>
    <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
    <key>ProgramArguments</key>
        <array>
            <string>/usr/local/mysql/bin/mysqld</string>
            <string>--user=_mysql</string>
            <string>--basedir=/usr/local/mysql</string>
            <string>--datadir=/usr/local/mysql/data</string>
            <string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
            <string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
            <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>

Есть идеи, как определить и исправить источник проблемы?

1 ответ1

1

Как вы уже заметили, похоже, что mysqld запускается дважды. Кажется, в какой-то момент вы запустили две разные версии инсталляторов, которые были установлены в разных местах и не подобраны друг к другу.

удаляя одно или другое из

$ locate plist | grep mysql 
/Library/LaunchDaemons/com.mysql.mysql.plist 
/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

Должен решить вашу проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .