Главная > Программы > База данных > MySQL MySQL: Восстановление пароля root
В процессе перенос этого блога на другой сервер. Бекап с файлами залит, архив распакован. Осталось всего чуть-чуть: создать базу на MySQL и скормить ей дамп. - Ага: Не тут то было. Я кажется не помню root пароль к базе - пришло в голову: Пароль я действительно забыл (ну с кем не бывает?), а тот человечек, который его вероятнее всего помнит, уже скорее всего отдыхает и звонить ему в столь поздний час как-то невежливо. Когда-то давно, когда я только только узнал, что такое сервер базы данных MySQL приключилась аналогичная история. Тогда я проблему решил достаточно быстро. Я просто прибил полностью папку с системной базой mysql: # rm -rf /var/db/mysql/mysql и заново создал системные базы. Но этот способ однозначно жестокий, а главное, глупый. Есть решение куда более аккуратное и красивое. Итак: Останавливаем сервер MySQL: # /usr/local/etc/rc.d/mysql-server.sh stop Запускаем mysqld с параметром -skip-grant-tables, указав стартовать от имени пользователя mysql (или от другого непривелигерованного юзера - но никак не от root'а), иначе mysql сославшись на пункт Security в мануале, пошлет Вас в сад: # /usr/local/libexec/mysqld -user mysql -skip-grant-tables 080114 21:55:24 InnoDB: Started; log sequence number 0 94091855 080114 21:55:24 [Note] /usr/local/libexec/mysqld: ready for connections. Version: '5.1.22-rc' socket: '/tmp/mysql.sock' port: 3306 FreeBSD port: mysql-server-5.1.22 Все. Дальше подключаемся к серверу, говорим use mysql, и рихтуем таблицу user, очищая в ней поле Password для пользователя root@localhost. Пароль снесли. Перезапускайте mysql сервер (у меня иначе как через killall -9 mysqld перезапуститься не получилось:) и входите пользователем root@localhost, устанавливайте такой пароль, который Вы больше не забудете. Материал взят с сайта: http://live.daemony.orgКак в MySQL поменять утерянный пароль rootОстанавливаем MySQL: /usr/local/etc/rc.d/mysql-server.sh stop Запускаем с параметром: mysqld --skip-grant-tables Отправляем в фон. Для этого нажимаем Ctrl-z и выполняем команду bg Заходим без пароля делаем команды: use mysql; UPDATE user SET Password=PASSWORD('mynewpassword') WHERE User='root'; FLUSH PRIVILEGES; Останавлием mysql и запускаем нормально: kill %1 /usr/local/etc/rc.d/mysql-server.sh start 1. Делаем DROP DATABASE `mysql`; тем самым убив всех юзеров и все права. Можно наверное и без этого, но второй шаг у меня с уже готовой таблицей не заработал (наверное из-за разных версий mysql до и после переноса БД mysql). 2. Запускаем из консоли mysql_install_db который эту самую табличку создаёт. 3. Заходим mysql -u root и выполняем
4. Рестартуем: service mysql restart (если не получается, то killall mysqld && service mysql start) 5. PROFIT! Главная > Программы > База данных > MySQL |