Ако имате достъп до 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
Източник: Основен