2009-08-19

ERROR 1045 (28000) Access denied for user 'root'@'localhost'

ERROR 1045 (28000) Access denied for user 'root'@'localhost'

Вот такая ошибка вылезла, при попытке зайти в MySQL в рамках работы с одной программкой. При установке MySQL обычно предлагается установить пароль root'а MySQL, который позже забывается, и в нужный момент мы оказываемся не в лучшем положении. Решение нашел тут, но чуть пришлось скорректировать (в листинге могут перемешаны команды FreeBSD (кое-что скопировано по ссылке) и Linux, на что можно не обращать внимание, главное - смысл):
sudo /etc/init.d/mysqld stop
sudo /usr/bin/mysqld_safe --skip-grant-tables &
Starting mysqld daemon with databases from /var/db/mysql
mysql -u mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.83 Linux port: mysql-server-5.0.83

mysql> update mysql.user set password=password('password')where user='root'and host='localhost';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> \q;
Bye

sudo /etc/init.d/mysqld stop
Stopping mysql.
Waiting for PIDS: 71151STOPPING server from pid file /var/db/mysql/srv.pid
090705 18:41:09 mysqld ended

.
[1] + Done mysqld_safe --skip-grant-tables

sudo /etc/init.d/mysqld start
Starting mysql.
mysql -u root -p

Теперь вводим установленный нами пароль, и заходим без проблем :)