После полного перезапуска мой сервер Apache PHP не подключается к Local MySQL (подключение через 127.0.0.1, потому что localhost по какой-то причине не всегда работает).

Итак, я сделал это сегодня:

➜  ~ mysqladmin shutdown -u root -p
Enter password:
➜  ~ mysqladmin shutdown -u root -p
Enter password:
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!

Что в основном означает, что мне удалось отключить MySQL. Но как только я это сделал - Apache PHP успешно подключился к MySQL, и мои локальные сайты работали без сбоев до следующего перезапуска.

Вот еще несколько деталей:(как вы можете сказать - я установил MySQL через brew)

➜  ~  sudo ps aux | grep mysql
N               4774   0.0  0.0  2432768    620 s000  S+    9:53AM   0:00.00 grep mysql
N               4772   0.0  2.6  3030168 440688   ??  S     9:51AM   0:00.29 /usr/local/Cellar/mysql/5.6.13/bin/mysqld --basedir=/usr/local/Cellar/mysql/5.6.13 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/5.6.13/lib/plugin --bind-address=127.0.0.1 --log-error=/usr/local/var/mysql/N.local.err --pid-file=/usr/local/var/mysql/N.local.pid
N               4686   0.0  0.0  2433432   1000   ??  S     9:51AM   0:00.01 /bin/sh /usr/local/opt/mysql/bin/mysqld_safe --bind-address=127.0.0.1
N               4362   0.0  2.7  3120276 458728   ??  S     9:47AM   0:00.45 mysqld


➜  ~  lsof -i | grep mysql
mysqld    4362    N   16u  IPv6 0x76959e40691f9f93      0t0    TCP *:mysql (LISTEN)

Это странная вещь:

➜  ~  killall -9 mysqld

MySQL мертв! Apache не подключается. Затем, когда я бегу:

➜  ~  sudo mysqladmin shutdown -u root -p
Enter password:

Apache (снова) может успешно подключаться к MySQL.

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

➜  ~  which mysqladmin
/usr/local/bin/mysqladmin
➜  ~  whence -p mysql
/usr/local/bin/mysql

Решение:

Шаг 1 из https://stackoverflow.com/questions/1436425/how-do-you-uninstall-mysql-from-mac-os-x

sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
vim /etc/hostconfig and removed the line MYSQLCOM=-YES-
rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*

1 ответ1

1

Я бы порекомендовал проверить, какие демоны запуска у вас есть в /Library /LaunchDaemons ...Я не уверен, что brew использует для настройки элементов автозагрузки, но в Mac OS X launchd является текущей рекомендацией. Если вы найдете что-то, связанное с MySQL, в /Library /LaunchDaemons, вы можете выгрузить его с помощью команды, подобной следующей:

sudo launchctl unload /Library/LaunchDaemons/com.example.plist

Предыдущие версии (10.5; 10.6) Mac OS X включали MySQL, который был установлен в папку /System /Library /LaunchDaemons:

sudo launchctl unload /System/Library/LaunchDaemons/org.mysql.mysqld.plist

Если вы установили версии MySQL из Oracle/Sun, у вас может быть MySQL StartupItem в /Library /StartupItems. Должна быть возможность остановить эту службу следующим образом:

sudo /Library/StartupItems/MySQLCOM/MySQLCOM StopService

Помимо этого, не должно быть много других мест, на которые вам нужно было бы посмотреть ...

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