Password di mysql persa?

Inserito da il22 February 2011, 6766 visite totali

Chi lavora con server e database ha a che fare (volente o nolente) con dei DBMS.
Tra i DBMS più diffusi, almeno in ambito OSS, c’è mysql.
Per potersi collegare al demone mysql è solitamente necessario inserire un username ed una password.
Ma cosa succede se non si ricorda più la password di amministratore?
La risposta è semplice non si accede più al database e non si possono eseguire più le operazioni di manutenzione.
Come risolvere?
Prima cosa stoppare il demone mysqld

root@pennegaz:pennega # /etc/rc.d/mysqld stop

Ora avviare mysqld in safemode

root@pennegaz:pennega # /usr/bin/mysqld_safe --skip-grant-tables&
[1] 23658

Ora ci si può collegare a mysql senza inserire la password:

root@pennegaz:pennega # mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.9 Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

e procedere con il cambio della password per l’utente root.
Selezionare il database mysql

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> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
| user_info                 |
+---------------------------+
24 rows in set (0.00 sec)

Adesso si può cambiare la password con

mysql> update user set password = password('NUOVA_PASSWORD') where user = 'root' and  host='localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Prima di stoppare e riavviare mysql è necessario aggiornare i permessi sui DB:

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

mysql> quit;
Bye
root@pennegaz:pennega #

Fermare e riattivare mysqld

root@pennegaz:pennega # /etc/rc.d/mysqld stop
:: Stopping MySQL Server                                                                                     [BUSY] 110222 11:09:24 mysqld_safe mysqld from pid file /var/lib/mysql/pennegaz.pid ended
                                                                                                             [DONE] 
[1]+  Done                    /usr/bin/mysqld_safe --skip-grant-tables
root@pennegaz:pennega # /etc/rc.d/mysqld start
:: Starting MySQL Server                                                                                     [DONE] 
root@pennegaz:pennega # 

Bene ora il collegamento può avvenire con la nuova password.

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *