W przypadku przejmowania serwera baz danych bez otrzymania haseł administratorskich musimy umieć na nowo ustawić hasło administratora. Najprostszy sposób to zatrzymanie serwera baz danych, uruchomienie go z pominięciem kontroli praw dostępu, ustanowienie nowego hasła administratora i ponowne, normalne uruchomienie serwera. Przejdźmy do szczegółów.
Zatrzymanie serwera baz danych:
ebian:/etc/mysql# /etc/init.d/mysql stop Stopping MySQL database server: mysqld.
Uruchomienie go z pominięciem sprawdzania praw dostępu:
debian:/etc/mysql# mysqld --skip-grant-tables mysqld: ready for connections. Version: '4.0.18-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306
Połączenie się z bazą danych bez podawania hasła:
debian:~# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.0.18-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
I zmiana hasła dostępu dla adminstratora:
mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> UPDATE user set Password=PASSWORD('ziutus') where Host='localhost' and -> User="root"; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql>quit;
Z innej konsoli wydajemy polecenie zatrzymania serwera baz danych:
killall -15 mysqld
Wtedy proces serwera MySQLa zakończy swoje działanie:
040820 3:56:40 mysqld: Normal shutdown 040820 3:56:40 mysqld: Shutdown Complete
Ponowne uruchomienie baz danych:
debian:/etc/mysql# /etc/init.d/mysql start Starting MySQL database server: mysqld.
Mała uwaga: Gdybyśmy byli włamywaczami i chcieli uzyskać jakieś informacje z bazy danych, a mielibyśmy uprawnienia administratora systemu bazy danych, to pomijając punkt o zmianie hasła i zastępując go wybieraniem danych z baz danych moglibyśmy zrobić to prawie niezauważalnie (zauważalne byłyby tylko dwa restarty baz danych).