Снова и снова я наблюдаю одну и ту же картину: mysqladmin: connect to
server at 'localhost' failed error: 'Access denied for user 'root'@'localhost'
(using password: YES)'. Если вы ищете быстрое решение проблемы по сбросу
пароля root, можете найте его в конце данного руководства.
mysqladmin - команда, при помощи которой меняется пароль root в
MySQL
Если вы никогда не устанавливали пароль root в MySQL, сервер не будет
требовать пароля root для подключения к вашим базам данных.
Метод 1. Установка пароля root в первый раз.
Чтобы
впервые установить пароль MySQL используйте в консоли команду mysqladmin
как показано далее:
$ mysqladmin -u root password newpass
где newpass будет пароль который вы устанавливаете.
Для изменения (обновления) пароля root воспользуйтесь следующей
командой:
$ mysqladmin -u root -p oldpassword newpass
где oldpassword - ваш старый пароль, а newpassword соотвественно
новый. Если же вы в ответ получили следующее сообщение:
mysqladmin: connect to server at 'localhost' failed error: 'Access
denied for user 'root'@'localhost' (using password: YES)'
то это означает, что пароль вы попросту забыли, либо его сменил
кто-то другой. Воспользуйтесь следующей инструкцией для восстановления
пароля к вашему MySQL.
Изменения пароля MySQL для других пользователей.
Для изменения пароля обычного пользователя введите следующую команду:
$ mysqladmin -u user-name -p oldpassword newpass
где user-name - имя пользователя для которого вы меняете пароль.
Метод 2 - Обновление или изменение пароля.
MySQL хранит имена пользователей и пароли в таблице пользователей
внутри базы данных. Вы можете обновить пароль используя следующий метод:
Залогиньтесь в MySQL и введите следующую команду:
$ mysql -u root -p /code>
2. Начните работу с базой данных. В качестве приглашения для ввода
команд вначале строки у вас должно быть mysql>
mysql> use mysql;
3. Смените пароль пользователя
mysql> update user set password=PASSWORD("newpass") where
User='ENTER-USER-NAME-HERE';
4. Перегрузите привелегии и отлогиньтесь
mysql> flush privileges;
mysql> quit
Этот метод применим в случае использования на вашем сервере PHP и
скриптов Perl.
Восстановление пароля root в MySQL.
Вы можете восстановить пароль от баз данных MySQL если повторите
следующие 5 шагов:
- Остановите демон MySQL.
- Запустите демон MySQL (mysqld) с опцией --skip-grant-tables,
т.к. в этом случае пароль не запрашивается .
- Подключитесь к серверу MySQL c root-привелегиями
- Введите новый пароль.
- Выйдите и перегрузите демон MySQL.
Далее приводятся команды, которые необходимо использовать для каждого
шага, при условии, что вы вошли в систему с root-привелегиями.
Останавливаем службу MySQL:
# /etc/init.d/mysql stop
Stopping MySQL database server: mysqld.
2. Запускаем службу с опцией --skip-grant-tables
# mysqld_safe --skip-grant-tables &
Должен быть следующий вывод:
[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started
3. Подключаемся с серверу MySQL при помощи клиента mysql:
# mysql -u root
Вывод:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
4. Вводим новый пароль для root:
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where
User='root';
mysql> flush privileges;
mysql> quit
5. Останавливаем сервер MySQL:
# /etc/init.d/mysql stop
Вывод:
Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+ Done mysqld_safe --skip-grant-table
Запускаем MySQL-сервер и логинимся с новым паролем:
# /etc/init.d/mysql start
# mysql -u root -p |