Privilegi Utente
Con questo comando da dentro la shell di MySQL vediamo i vari utenti abilitati e i relativi host:
mysql> SELECT user,host,password FROM mysql.user;
Assegnare certi privilegi all’utente ciccio su tutti i database:
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON *.* TO ciccio@localhost IDENTIFIED BY 'password';
In questo modo lo permettiamo solo alla sottorete 10.0.0.*:
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON *.* TO ciccio@'10.0.0.%' IDENTIFIED BY 'password';
Con questo comando assegniamo la possibilità di collegarsi come root all’IP 10.0.0.14:
mysql> INSERT INTO user SET Host='10.0.0.14',User='root', Reload_priv='Y', Process_priv='Y';
Visualizzare i privilegi dell’utente:
mysql> show grants for ciccio;
Rimuovere l’utente:
mysql> DROP USER ciccio;
Rimuovere l’utente associato ad un indirizzo:
mysql> DROP USER ciccio@'10.0.0.14';
Ripristinare privilegi di root
Se è necessario reimpostare i privilegi dell’utente root di Mysql si può procedere come segue:
- stoppare il servizio mysql
/etc/init.d/mysql stop
- far partire mysql con l’opzione –skip-grant-tables:
mysql --skip-grant-table
- collegarsi alla console mysql senza le credenziali:
mysql
- aggiornare i pivilegi dell’utente root con questi due comandi:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root'; FLUSH PRIVILEGES;
- fermare il processo mysql e farlo ripartire normalmente senza l’opzione –skip-grant-tables:
/etc/init.d/mysql start
- potrebbe essere necessario ricollegarsi alla console di mysql questa volta utilizzando le credenziali:
mysql -u root -p
- e lanciare questo comando:
GRANT ALL ON *.* TO 'root'@'localhost';
Controllare le tabelle
Per controllare le tabelle di un database possiamo usare il comando mysqlcheck seguito dal nome del database e dal nome utente se necessario (si rimanda al manuale per le varie opzioni):
mysqlcheck database -u root -p