Възстановяване на забравена root парола в MySQL

Некатегоризирани в останалите раздели статии.

Модератори: Freya, Kulu Ngile

Възстановяване на забравена root парола в MySQL

Мнениеот Kulu Ngile » Пон 09, Окт, 2006 11:51

За да промените root паролата на MySQL е банално, ако знаете текущата паролата, но ако не я помнете, има един малък трик.

Ако имате достъп до root потребителя, т.е. имате root паролата, може да я смените многo лесно
Код за потвърждение: Избери целия код
red@debian:~$ mysql --user=root --pass mysql
Enter password:

mysql> update user set Password=PASSWORD('new-password-here') WHERE User='root';
Query OK, 2 rows affected (0.04 sec)
Rows matched: 2  Changed: 2  Warnings: 0

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

mysql> exit
Bye


Ако нямате текущата парола за root потребителя, този достъп няма да сработи, т.е. вие трябва да се логнете за да стартирате, която и да е команда, но без парола, не можете да се логнете.

В този случай има много просто решение, като трябва да зададем на MySQL да се стартира с флаг, който да му казва да игнорира всички потребителски/паролни ограничения, които са му зададени. Веднъж направено, можем спокойно да обновим зарежданите детайли.

Сега трябва да стартирате MySQL във фонов (background) режим, чрез mysqld_safe командата:
Код за потвърждение: Избери целия код
root@debian:~# /usr/bin/mysqld_safe --skip-grant-tables &
[1] 6702
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6763]: started

Както виждате, имаме стартиран процес (номер 1) с PID (индентификация на процеса) 6702.

Сега услугата е стартирана с --skip-grant-tables флаг, което ви позволява да се свържете с нея без парола и можем да довърим задачата си:
Код за потвърждение: Избери целия код
root@debian:~$ mysql --user=root mysql
Enter password:

mysql> update user set Password=PASSWORD('new-password-here') WHERE User='root';
Query OK, 2 rows affected (0.04 sec)
Rows matched: 2  Changed: 2  Warnings: 0

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

mysql> exit
Bye


След като изпълните това, трябва да спрем сървъра така, че да можем отново да пуснем защитеният с пароли MySQL. Първо трябва да върнем сървъра, който стартирахме във фонов режим, в foreground (преден план), като изпълним командата fg, след което спираме процеса като натиснем ctrl+c.

Пускаме отново сървъра, като изпълняваме:
Код за потвърждение: Избери целия код
root@debian:~# /etc/init.d/mysql start
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..


Сега всичко трябва да е готово и трябва да си възвърнем достъпа до нашите MySQL database(s).
Трябва да проверим, дали паролата ни е сменена, като се вържем към сървъра с новата парола
Код за потвърждение: Избери целия код
root@debian:~# mysql --user=root --pass=new-password-here
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 5.0.24a-Debian_4-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> exit
Bye



Източник: Основен
Ако съдбата е срещу теб, толкова по-зле за нея.

Изображение
APT HOWTO
Kulu Ngile
Унуфри
 
Мнения: 1233
Регистриран на: Съб 04, Мар, 2006 1:04
Местоположение: София

Назад към Разни

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта

cron