Почему я не могу остановить службу MySQL в Debian?


11

Я просто попытался перейти с debian squeeze на unstable, заменив 'squeeze' на 'unstable' в /etc/apt/sources.list. Обновление прошло гладко, за исключением MySQL, который не удался, потому что не мог остановить MySQL.

/etc/init.d/mysql stopпросто возвращает, что это не удалось, но если я пытаюсь получить статус с /etc/init.d/mysql statusним, я получаю эту ошибку:

me@debian:~$ sudo /etc/init.d/mysql status
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

MySQL работает нормально, и я проверил разрешения для debian-sys-maint в phpmyadmin, и ему разрешено делать все, но только из подключения localhost.

Ответы:


6

Попробуй это:

  1. sudo cat /etc/mysql/debian.cnfи искать пароль , перечисленный в обеих [client]и [mysql_upgrade]секциях

  2. mysql -u root -p password быть оригинальным паролем root MySQL

  3. GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '*the password obtained from step 1*';

  4. /etc/init.d/mysql restart

Это исправление, и это обоснование, если вам интересно.


Как упомянуто ниже, это должно бытьGRANT ALL PRIVILEGES ON *.*
Дейв

2

Обновление к ответу. На шаге 3 мне пришлось использовать

GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'the password obtained from step 1';

Вокруг периода после «ON» появляются звездочки. Работал на MySql 5.1


1

Справочное руководство MySQL говорит, что вы можете сделать это:

  1. Войдите в систему как пользователь Unix, от имени которого mysqldработает сервер (например, mysql).
  2. Найдите .pidфайл, содержащий идентификатор процесса сервера. Точное местоположение и имя этого файла зависят от вашего дистрибутива, имени хоста и конфигурации. Общие места являются /var/lib/mysql/, /var/run/mysqld/и /usr/local/mysql/data/. Как правило, имя файла имеет расширение .pidи начинается либо mysqldс имени хоста вашей системы.

Вы можете остановить сервер MySQL, отправив обычное kill (не kill -9) процессу mysqld, используя путь к файлу .pid в следующей команде:

    kill `cat /mysql-data-directory/host_name.pid`

Эта часть: cat /mysql-data-directory/host_name.pidвозвращает содержимое файла, который является идентификатором процесса.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.