Guida MySQL: Gestione degli Utenti | |||||||
8 Gennaio 2008 | Database |
![]() ![]() ![]() |
|
|
![]() |
Operazioni sugli Utenti
Per l'utente root è possibile creare nuovi utenti, cancellare utenti esistenti, assegnare privilegi agli utenti e revocarli. Le informazioni sugli account sono memorizzate nelle tabelle del database mysql, database che si trova già in mysql fin dalla sua installazione e che è posizionato nella cartella <mysql>\data, dove <mysql> è la cartella in cui è installato mysql.Creazione e Revoca Utenti
Si può creare un nuovo account tramite il comando
CREATE USER
con cui si crea l'utente user che ha password 'password'. Per poter creare l'account si devono avere i privilegi create user o i privilegi insert per il database mysql.
Per ciascun nuovo utente creato si creerà una nuova riga nella tabella
mysql.user. Se l'utente già esisteva si verificherà un errore.
L'utente verrà identificato con un nome della forma seguente 'user'@'localhost', dove user è il nome dell'utente e localhost l'host da cui l'utente si connette a mysql.
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...;
con cui si crea l'utente user che ha password 'password'. Per poter creare l'account si devono avere i privilegi create user o i privilegi insert per il database mysql.
L'utente verrà identificato con un nome della forma seguente 'user'@'localhost', dove user è il nome dell'utente e localhost l'host da cui l'utente si connette a mysql.
Si può cancellare un account esistente tramite il comando
DROP USER
con cui si elimina l'utente user. Per poter rimuovere l'account si devono avere i privilegi di create user o di delete per il database mysql.
Da notare che questo comando rimuove l'account ma non chiude le sessioni che sono in quel momento aperte per quell'account.
DROP USER non invalida automaticamente tutti gli oggetti, tabelle, viste, trigger, ecc, creati dall'utente rimosso.
DROP USER user [, user] ...;
con cui si elimina l'utente user. Per poter rimuovere l'account si devono avere i privilegi di create user o di delete per il database mysql.
Da notare che questo comando rimuove l'account ma non chiude le sessioni che sono in quel momento aperte per quell'account.
DROP USER non invalida automaticamente tutti gli oggetti, tabelle, viste, trigger, ecc, creati dall'utente rimosso.
Il comando RENAME USER consente
di rinominare account esistenti.
Per poterlo usare si devono avere i privilegi globali CREATE USER o i privilegi UPDATE per il database mysql.
Da notare che questo comando non trasferisce i privilegi dal vecchio account al nuovo.
RENAME USER old_user TO new_user [, old_user TO new_user] ...;
Per poterlo usare si devono avere i privilegi globali CREATE USER o i privilegi UPDATE per il database mysql.
Da notare che questo comando non trasferisce i privilegi dal vecchio account al nuovo.
Il comando SET PASSWORD consente
di impostare la password di un utente.
Se non si usa la clausola FOR la password impostata è quella dell'utente corrente. Per impostare la password di un altro utente è necessario avere i privilegi di UPDATE del database mysql.
SET PASSWORD [FOR user] = PASSWORD('some password');
Se non si usa la clausola FOR la password impostata è quella dell'utente corrente. Per impostare la password di un altro utente è necessario avere i privilegi di UPDATE del database mysql.
Autorizzazioni e Privilegi
Il comando GRANT consente
agli amministratori di creare degli account utente e di assegnare dei diritti a
questi account. Per poter usare questo comando si devono avere i privilegi
GRANT OPTION e i privilegi che si concedono all'utente.
Si concedono i privilegi priv_type sull'oggetto object_type all'utente user eventualmente concedendo i privilegi GRANT OPTION o impostando dei limiti alle query, agli update, ecc.
Queste opzioni limitano il numero di query, update e login che un utente può effettuare in un periodo di un'ora. Se count = 0 non ci sono limitazioni.
object_type può essere una tabella, una funzione o una procedura
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] {tbl_name | * | *.* | db_name.*}
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
[REQUIRE
NONE |
[{SSL| X509}]
[CIPHER 'cipher' [AND]]
[ISSUER 'issuer' [AND]]
[SUBJECT 'subject']]
[WITH with_option [with_option] ...]
Si concedono i privilegi priv_type sull'oggetto object_type all'utente user eventualmente concedendo i privilegi GRANT OPTION o impostando dei limiti alle query, agli update, ecc.
with_option =
GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
Queste opzioni limitano il numero di query, update e login che un utente può effettuare in un periodo di un'ora. Se count = 0 non ci sono limitazioni.
object_type può essere una tabella, una funzione o una procedura
object_type =
TABLE
| FUNCTION
| PROCEDURE
Il comando REVOKE consente
agli amministratori di sistema di revocare i diritti concessi agli account.
Si revocano i privilegi priv_type sull'oggetto object_type concessi all'utente user. Per revocare tutti i privilegi concessi ad un utente si usa
per poter usare quest'ultimo comando si devono avere i privilegi globali CREATE USER o i privilegi UPDATE per il database mysql.
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] {tbl_name | * | *.* | db_name.*}
FROM user [, user] ...
Si revocano i privilegi priv_type sull'oggetto object_type concessi all'utente user. Per revocare tutti i privilegi concessi ad un utente si usa
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
per poter usare quest'ultimo comando si devono avere i privilegi globali CREATE USER o i privilegi UPDATE per il database mysql.
Il comando SHOW GRANT
visualizza i privilegi che sono stati concessi ad un determinato utente
Per visualizzare i propri privilegi è sufficiente usare SHOW GRANTS;
SHOW GRANTS [FOR user];
Per visualizzare i propri privilegi è sufficiente usare SHOW GRANTS;
I privilegi possono essere concessi a diversi livelli
-
Global Level.
I privilegi globali si applicano a tutti i database di un dato server. Questi
privilegi sono memorizzati nella tabella mysql.user.
Per concedere o revocare i privilegi a livello globale si usano
GRANT ALL ON *.* e REVOKE ALL ON *.*
GRANT ALL ON *.* TO 'user'@'host';
GRANT SELECT, INSERT ON *.* TO 'user'@'host';
-
Database Level.
I privilegi a livello database si applicano a tutti gli oggetti di un dato database.
Questi privilegi sono memorizzati nelle tabelle mysql.db e
mysql.host.
Per concedere o revocare i privilegi a livello database si usano
GRANT ALL ON dbname.* e
REVOKE ALL ON dbname.*
GRANT ALL ON db.* TO 'user'@'host';
GRANT SELECT, INSERT ON db.* TO 'user'@'host';
-
Table Level.
I privilegi a livello di tabella si applicano a tutte le colonne di una data tabella.
Questi privilegi sono memorizzati nella tabella mysql.tables_priv.
Per concedere o revocare i privilegi a livello tabella si usano
GRANT ALL ON dbname.table_name e
REVOKE ALL ON dbname.table_name
GRANT ALL ON db.table TO 'user'@'host';
GRANT SELECT, INSERT ON db.table TO 'user'@'host';
-
Column Level. I privilegi a livello di colonne si applicano alle singole colonne
di una data tabella. Questi privilegi sono memorizzati nella tabella
mysql.columns_priv.
Quando si revocheranno i privilegi si dovranno revocare su quelle colonne su cui sono
stati concessi.
Le colonne devono essere specificate tra parentesi
GRANT SELECT (col1), INSERT (col1,col2) ON db.table TO 'user'@'host';
-
Routine Level. I privilegi a livello routine (CREATE ROUTINE,
ALTER ROUTINE, EXECUTE, GRANT)
si applicano alle stored routine (funzioni e procedure).
Questi privilegi possono essere concessi ai livelli globale e database. Tutti questi privilegi,
eccetto CREATE ROUTINE, possono essere concessi al livello routine
per singole routine e sono memorizzati nella tabella mysql.procs_priv.
GRANT CREATE ROUTINE ON db.* TO 'user'@'host';
GRANT EXECUTE ON PROCEDURE db.proc TO 'user'@'host';
Privilegio | Descrizione |
---|---|
ALL [PRIVILEGES] | Sets all simple privileges except GRANT OPTION |
ALTER | Enables use of ALTER TABLE |
ALTER ROUTINE | Enables stored routines to be altered or dropped |
CREATE | Enables use of CREATE TABLE |
CREATE ROUTINE | Enables creation of stored routines |
CREATE TEMPORARY TABLES | Enables use of CREATE TEMPORARY TABLE |
CREATE USER | Enables use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES. |
CREATE VIEW | Enables use of CREATE VIEW |
DELETE | Enables use of DELETE |
DROP | Enables use of DROP TABLE |
EVENT | Enables creation of events for the event scheduler |
EXECUTE | Enables the user to run stored routines |
FILE | Enables use of SELECT ... INTO OUTFILE and LOAD DATA INFILE |
INDEX | Enables use of CREATE INDEX and DROP INDEX |
INSERT | Enables use of INSERT |
LOCK TABLES | Enables use of LOCK TABLES on tables for which you have the SELECT privilege |
PROCESS | Enables the user to see all processes with SHOW PROCESSLIST |
REFERENCES | Not implemented |
RELOAD | Enables use of FLUSH |
REPLICATION CLIENT | Enables the user to ask where slave or master servers are |
REPLICATION SLAVE | Needed for replication slaves (to read binary log events from the master) |
SELECT | Enables use of SELECT |
SHOW DATABASES | SHOW DATABASES shows all databases |
SHOW VIEW | Enables use of SHOW CREATE VIEW |
SHUTDOWN | Enables use of mysqladmin shutdown |
SUPER | Enables use of CHANGE MASTER, KILL, PURGE MASTER LOGS, and SET GLOBAL statements, the mysqladmin debug command; allows you to connect (once) even if max_connections is reached |
TRIGGER | Enables the user to create or drop triggers |
UPDATE | Enables use of UPDATE |
USAGE | Synonym for “no privileges” |
GRANT OPTION | Enables privileges to be granted |
I privilegi FILE, PROCESS, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHOW DATABASES, SHUTDOWN, SUPER, CREATE USER possono essere concessi solo a livello globale. Gli altri privilegi possono essere concessi globalmente o a livelli più specifici.
I privilegi che si possono concedere per una tabella sono SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER.
I privilegi che si possono concedere per una colonna sono SELECT, INSERT, UPDATE. I privilegi che si possono concedere per il livello routine sono ALTER ROUTINE, EXECUTE, GRANT OPTION.
Guida MySQL
- Installazione e Configurazione
- Gestione degli Utenti
- Tipi di dato
- Funzioni e Operatori
- MySQL e C - Le API
- MySQL e C - Connessione
- MySQL e C - Le Query
- MySQL e Java - Connessione
- MySQL e Java - Le Query
- MySQL e PHP