Zaboravljena MySQL root lozinka
Nedavno smo na helpdesku pomogli korisniku koji je zaboravio administratorsku (root@localhost) lozinku za MySQL. Rješenje problema je da se MySQL pokrene bez tzv. GRANT tablica, odnosno da se zaobiđu tablice s dozvolama. To se radi opcijom --skip-grant-tables.
Prvo zaustavimo MySQL:
# /etc/init.d/mysql stop
Stopping MySQL database server: mysqld
Zatim ga dignemo bez GRANT tablica, slijedećom naredbom:
# mysqld_safe --skip-grant-tables --skip-networking &
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[7754]: started
Sada možemo pristupiti MySQL poslužitelju bez autentikacije, te izvršimo naredbe:
mysql -e "UPDATE mysql.user SET Password = PASSWORD('novipassword')
WHERE User = 'root'"
mysql -e "FLUSH PRIVILEGES;"
Za novije inačice MySQL-a (5.7.6+) i MariaDB-a (10.1.20+) rabi se naredba ALTER USER
:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'novipassword';
FLUSH PRIVILEGES;
Napomena: Ako naredba 'ALTER USER' ne radi, vjerovatno se radi o nekom većem problemu. U svakom slučaju, još možete probati upotrijebiti narebu "UPDATE ... SET":
UPDATE mysql.user SET authentication_string = PASSWORD('novipassword') WHERE User='root' AND Host='localhost';
Još nam ostaje restart MySQL-a:
# /etc/init.d/mysql restart
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[8310]: ended
Starting MySQL database server: mysqld.
Checking for crashed MySQL tables in the background.
Za novije Debiane naravno, rabit ćemo naredbu systemctl:
# systemctl restart mariadb
Provjerimo da li je sve u redu:
mysql -e "select now();" -p
Enter password:
+---------------------+
| now() |
+---------------------+
| 2006-01-27 19:37:09 |
+---------------------+
I to je to!
- Inačica za ispis
- Logirajte se za dodavanje komentara
- PDF version