MySQLInitConf » Cronologia » Versione 20
« Precedente |
Versione 20/25
(diff)
| Successivo »
Simone Piccardi, 10-02-2014 22:11
Configurazione di base per MySQL¶
La configurazione di base di MySQL eseguita da Debian subito dopo l'installazione del pacchetto consente l'accesso database con l'utente di amministrazione root senza password. Per questo motivo il primo passo da fare, immediatamente dopo l'installazione, è impostare una password per root; questo si fa con il comando:
/usr/bin/mysqladmin -u root password NuovaPassword
Se invece si è persa la password di root del database il precedente comando non funziona in quanto una volta impostata detta password questa diventa necessaria per poterlo utilizzare. Per questo per poterla recuperare (o meglio resettare) occorre seguire la seguente procedura. Il primo passo è fermare il database e farlo ripartire senza meccanismi di controllo di autenticazione, questo si fa con i comandi:
/etc/init.d/mysql stop /usr/bin/mysqld_safe --skip-grant-tables --skip-networking &
a questo punto ci si potrà collegare al database direttamente con:
mysql -u root
ottenendo una shell SQL con privilegi di amministrazione; qui si potrà modificare la password impostata per l'utente root tramite le seguenti istruzioni:
use mysql; UPDATE user SET Password=PASSWORD("NuovaPassword") WHERE User="root"; exit
fatto questo la passord di root è stata modificata e si potrà fermare il database e riavviarlo con:
/etc/init.d/mysql stop /etc/init.d/mysql start
Dopo di che si potrà verificare che l'accesso è possibile con la nuova password con:
server:~# mysql -u root -p Enter password: Welcome to the [[MySQL]] monitor. Commands end with ; or \g. Your [[MySQL]] connection id is 9 to server version: 4.0.24_Debian-5-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; +-------------+ | Database | +-------------+ | mysql | | test | +-------------+ 2 rows in set (0.00 sec) mysql> \q Bye server:~#
Qualora invece si debba ricreare da zero l'utente root nel caso di errata cancellazione, sarà necessario reimpostare manualmente tutti i privilegi con qualcosa del tipo:
INSERT INTO mysql.user SET user = 'root', host = 'localhost', password = Password('passwordlungaecomplicata'), super_priv = 'y', select_priv = 'y', insert_priv = 'y', update_priv = 'y', delete_priv = 'y', create_priv = 'y', drop_priv = 'y', reload_priv = 'y', shutdown_priv = 'y', process_priv = 'y', file_priv = 'y', grant_priv = 'y', references_priv = 'y', index_priv = 'y', alter_priv = 'y', show_db_priv = 'y', create_tmp_table_priv = 'y', lock_tables_priv = 'y', execute_priv = 'y', repl_slave_priv = 'y', repl_client_priv = 'y', create_view_priv = 'y', show_view_priv = 'y', create_routine_priv = 'y', alter_routine_priv = 'y', create_user_priv = 'y';
Si tenga presente infine che le ultime versioni del pacchetto Debian non richiedono più un intervento manuale per abilitare l'ascolto su localhost
in quanto la riga:
bind-address = 127.0.0.1
è già presente in /etc/my.cnf
; occorrerà eventualmente modificarla qualora si debba invece abilitare il raggiungimento del server da altre macchine, in tal caso occorrerà inserire qualcosa del tipo:
bind-address = 0.0.0.0
Fatto questo si potrà passare alla creazione di un proprio database con il comando:
mysqladmin -u root -p create nomedb
che chiederà la precedente password, creando il database, a questo punto ci si potrà collegare al nuovo database con:
mysql -u root -p nomedb
e si potrà dare l'accesso allo stesso ad uno specifico utente con i comandi:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, ALTER, DROP ON nomedb.* TO 'utentedb'@'localhost' IDENTIFIED BY 'password';
e per garantirsi che questi siano immediatamente disponibili, si dovrà aggiuntere:
FLUSH PRIVILEGES;
Nel caso si sia fatto un errore nell'assegnare i permessi e nel creare l'utente, lo si potrà cancellare con i comandi:
use mysql; DELETE FROM user WHERE user="utentedacancellare";
Nel caso si voglia cancellare completamente un database si potrà farlo sia con i comandi SQL specifici (DROP DATABASE nomedb
) da dentro la riga di comando di mysql
oppure direttamente dalla della shell con il comando:
mysqladmin -u root -p drop nomedb
Aggiornato da Simone Piccardi quasi 11 anni fa · 20 revisions