Seleziona una pagina

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