1

ОШИБКА 1045 (28000): доступ запрещен для пользователя 'root' @ 'localhost' (используя пароль: ДА) Debian.

mysqld слушает 3306 предположительно

Телнет до 3306 работает

Также попытался связать его конкретно с локальным хостом, а затем 127.0.0.1, который не имел значения

Тем не мение:

# netstat -ln | grep mysql
unix  2      [ ACC ]     STREAM     LISTENING     78993    /var/run/mysqld/mysqld.sock

# mysql -P3306 -ptest
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Вещи, которые я пробовал:

dpkg-reconfigure mysql-server-5.1  Doesn't help

http://www.debian-administration.org/articles/442 Не помогает

Эта команда (источник):

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;

На самом деле не помогает

Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0

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

Вот еще: во время работы # mysqld_safe --skip-grant-tables можно получить доступ к таблицам данных, только с действительными паролями! Таким образом, есть пользователи, и происходит некоторая аутентификация, следовательно, 0 rows affected выше.

Могут ли таблицы привилегий быть как-то повреждены и как я могу воссоздать / восстановить их, когда мой единственный способ получить консоль mysql - это пропустить их?

Могу ли я сэкономить мою переустановку MySQL? В любом случае я получил дамп БД теперь, когда смог войти в вышеупомянутый режим.

1 ответ1

1

В основном из https://stackoverflow.com/questions/1709078/how-can-i-restore-the-mysql-root-users-full-privileges

Я вошел в # mysqld_safe --skip-grant-tables открыл # mysql -u root

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';

Нормальный /etc/init.d/mysql start (после убийства специального экземпляра)

Снова # mysql -u root

затем UPDATE mysql.user SET Password=PASSWORD('yrpass') WHERE User='root';

Root имеет проход. То же самое для других пользователей MySQL, где это необходимо.

Я обнаружил, что не было никаких привилегий / грантов - независимо от --skip-grant-tables .

С MySQL Workbench было проще сделать root администратором базы данных, как это не было.

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

Также у меня было несколько root-пользователей на '%' 'localhost' '127.0.0.1' некоторые из них имели старый проход. без необходимости запускать специальный экземпляр с --skip-grant-tables я мог войти с пользователем debian-sys-maint , однако у него был другой пароль из-за импорта дампов из других систем! Я понял это, посмотрев на эту статью

Чем вызвано все это, во-первых, я не знаю, открыто для обсуждения.

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