Access denied for user

Словил офигенный случай при работе с MySQL.

# mysql -u 'kikimor' -p
Enter password:
ERROR 1045 (28000): Access denied for user 'kikimor'@'localhost' (using password: YES)

Каждый нормальный человек скажет — неправильно вводишь логин/пароль, либо для данного пользователя не разрешен hostname, с которого идет подключение. Но нет, в моем случая я успешно подключался с этими же логином и паролем с другого компьютера (с удаленного). Кроме того, с локалхоста коннект не проходил ни под одним логином/паролем, которые есть в базе. И тут я решил попробовать коннектнуться без пароля. Результат меня очень удивил — я подключился. Дальнейшие тестирования показали, что я могу указать произвольный логин (даже которого не существует) и подключение пройдет успешно.

Как оказалось, такое происходит, если в таблице mysql.user существует строка, в которой поле User = » (пустая строка). После удаления такой строки — все пришло в норму.

Сначала я подумал, что меня похакали, но потом посмотрел /var/log/mysql/mysqld.err:

131129  4:12:44  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Last MySQL binlog file position 0 947859907, file name ./mysqld-bin.000008
131129  4:12:49  InnoDB: Started; log sequence number 0 3344617434
131129  4:12:49 [Note] Recovering after a crash using mysqld-bin
131129  4:13:21 [Note] Starting crash recovery...
131129  4:13:21 [Note] Crash recovery finished.
131129  4:13:21 [Note] Event Scheduler: Loaded 3 events
...

Оказалось, что сервак ребутнулся и база немного убилась. При старте MySQL попытался восстановить таблицы, но сделал это не очень удачно.

Оставить комментарий


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>