MySQL è tra i gestori di database più popolari al mondo. Contiene molte caratteristiche che lo rendono affidabile, efficiente e robusto. La sua massima affidabilità si ottiene se usata correttamente. La creazione di utenti con autorizzazioni limitate sul database è uno dei modi più semplici e affidabili per aumentare la sicurezza di MySQL.
MySQL crea utente
Quando si installa MySQL, l'utente root (amministratore MySQL) è il primo utente ad essere creato. L'utente root può fare qualsiasi cosa sul database MySQL. È conveniente per altre persone accedere al tuo database utilizzando questo account.
Gli utenti malintenzionati potrebbero tentare di accedere come utenti root per rubare le informazioni ospitate o distruggere il servizio insieme ai dati. Pertanto, l'amministratore di sistema deve creare utenti con autorizzazioni specifiche sul database. Ciò garantisce che se la sicurezza di quell'utente è compromessa, l'impatto è minimo o gestibile.
L'istruzione MySQL Create User consente di creare un nuovo account utente nel server di database. Fornisce proprietà di autenticazione, limite di risorse, ruolo e gestione delle password per i nuovi account. L'estratto conto ci consente anche di controllare gli account che devono essere bloccati o sbloccati.
Per creare un utente, è necessario disporre di un privilegio globale (essere un utente root) dell'istruzione "CREATE USER" o del privilegio INSERT per lo schema di sistema MySQL. Viene visualizzato un errore se si tenta di creare un utente già esistente, ma se si utilizza la clausola "IF NOT EXISTS", l'istruzione fornisce un avviso per ogni utente denominato che esiste già al posto di un messaggio di errore.
Per creare un utente non root e concedergli privilegi specifici per accedere e modificare il database, utilizziamo la seguente sintassi:
CREATE USER IF NOT EXISTS 'fosslinux'@'localhost' IDENTIFIED BY 'foss12345';
Il nome_account ha due parti; il nome utente e il nome host, separati dal simbolo @. Il nome utente è il nome dell'utente, mentre l'hostname è il nome dell'host da cui l'utente può connettersi al server del database.
username@hostname
Il nome host è facoltativo. Se il nome host non viene fornito, l'utente può connettersi da qualsiasi host sul server. Un nome utente senza nome host può essere scritto come nome utente@%
CREATE USER IF NOT EXISTS 'fosslinux@%' IDENTIFIED BY 'foss12345';
Si noti che l'istruzione create user crea un nuovo utente con accesso completo. per concedere i privilegi all'utente, utilizzare l'istruzione GRANT
Utilizzare i seguenti passaggi per creare un nuovo utente nel database MySQL:
1. Utilizzando lo strumento client MySQL, apri il server MySQL
2. Digita la password, quindi premi Invio.
3. Crea un nuovo utente usando il seguente comando
create user 'foss'@'localhost' identified by 'foss12345';
4. Usa il comando seguente per mostrare gli utenti nel server MySQL
select user from mysql.user;
Dall'output mostrato, l'utente "foss" è stato creato correttamente.
5. Ora usa la clausola IF NOT EXISTS con l'istruzione CREATE USER eseguendo il comando seguente:
Concessione dei privilegi al nuovo utente MySQL
Alcuni dei privilegi più comuni forniti dal server MySQL a un nuovo utente includono;
1. TUTTI I PRIVILEGI: consente tutti i privilegi a un nuovo account utente
2. CREA: consente all'account utente di creare database e tabelle
3. DROP: consente all'account utente di eliminare database e tabelle
4. ELIMINA: consente all'account utente di eliminare righe da una tabella specifica
5. INSERIRE: consente all'account utente di inserire righe in una tabella specifica
6. SELEZIONA: consente all'account utente di leggere un database
7. AGGIORNAMENTO: consente a un account utente di aggiornare le righe della tabella
Esegui il comando seguente per concedere tutti i privilegi a un utente
GRANT ALL PRIVILEGES ON *.* TO 'foss'@'localhost';
Esegui il comando seguente per assegnare privilegi specifici a un utente appena creato,
GRANT CREATE, SELECT, INSERT ON *.* TO 'foss'@'localhost';
Per svuotare tutti i privilegi assegnati a un utente, eseguire il comando seguente.
FLUSH PRIVILEGES;
Per visualizzare i privilegi esistenti assegnati a un utente, eseguire il comando seguente.
SHOW GRANTS FOR 'foss'@'localhost';
Utente Drop MySQL
L'istruzione MySQL Drop User consente di rimuovere uno o più account utente e i relativi privilegi dal server di database. Se l'account utente non esiste nel server del database, restituirà un errore.
Per utilizzare l'istruzione Drop User, devi disporre di un privilegio globale o del privilegio DELETE per lo schema di sistema MySQL.
La sintassi per eliminare completamente gli account utente dal server di database è la seguente:
DROP USER 'foss'@'localhost';
Nota: Il nome dell'account nell'esempio sopra è identificato come username@hostname. Il nome utente è il nome dell'account che si desidera eliminare dal server del database e il nome host è il nome del server dell'account utente. ad esempio, "foss@localhost". foss è il nome utente, mentre localhost è il nome host.
Di seguito sono riportati i passaggi da seguire quando si elimina un utente esistente dal database del server MySQL;
1. Utilizzando lo strumento client MySQL, apri il server MySQL
2. Digita la password dell'account, quindi premi Invio
3. Per eliminare un account utente, eseguire il comando seguente
DROP USER 'fosslinux'@'localhost';
4. Esegui il comando seguente per mostrare gli utenti
select user from mysql.user;
Otterrai un output in cui il nome utente fosslinux non sarà presente, come mostrato di seguito:
5. L'utente Drop può essere utilizzato anche per rimuovere più account utente contemporaneamente. Per fare ciò, separi i nomi_account usando le virgole.
Nota: Dato che avevamo già eliminato gli utenti, creeremo due utenti usando i concetti create user (fosslinuxtuts e fosslinux@%). Successivamente, eseguiremo il comando nel passaggio 4 per mostrare gli utenti esistenti come mostrato di seguito:
Ora rilascia i due utenti contemporaneamente usando il comando seguente:Esegui il comando seguente per eliminare entrambi gli utenti:
DROP USER 'fosslinuxtuts'@'localhost', 'fosslinux@%' ;
Si noti che l'istruzione DROP non può chiudere automaticamente le sessioni utente aperte. Quando l'istruzione DROP viene eseguita mentre è attiva una sessione dell'account utente, il comando non ha effetto su di essa fino alla chiusura della relativa sessione. L'account utente viene eliminato solo quando la sessione viene chiusa e il prossimo tentativo dell'utente non sarà in grado di accedere nuovamente.
MySQL mostra gli utenti/elenca tutti gli utenti
Per gestire un database in MySQL, devi vedere l'elenco di tutti gli account utente in un database. Si presume che esista un comando SHOW USERS simile a SHOW DATABASE o SHOW TABLES per visualizzare l'elenco di tutti gli utenti disponibili nel server di database. Sfortunatamente, il server MySQL non ha un comando SHOW USERS per visualizzare un elenco di tutti gli utenti nel server MySQL. Quindi, invece, utilizziamo la seguente query per vedere l'elenco di tutti gli utenti nel server di database:
Select user from mysql.user;
Dopo aver eseguito il comando, otterrai i dati utente dalla tabella utente del server del database MySQL.
Nota: In questo esempio utilizzeremo il database MySQL. Seleziona il database eseguendo il comando seguente, quindi usa l'istruzione select from per controllare gli utenti esistenti come mostrato nell'immagine seguente:
use mysql;
SELECT user FROM user;
Se vuoi vedere maggiori informazioni sulla tabella utente, esegui il seguente comando:
DESC user;
Il comando fornirà il seguente output che elenca tutte le colonne disponibili del database mysql.user:
Per ottenere informazioni selezionate come nome host, stato di scadenza della password e blocco dell'account, esegui la seguente query:
SELECT user, host, account_locked, password_expired FROM user;
Il seguente output apparirà dopo l'esecuzione corretta della query:
Mostra utente corrente
Puoi ottenere informazioni sull'utente corrente utilizzando la funzione user() o current_user() come mostrato di seguito:
Select user();
O
Select current_user();
Il seguente output apparirà dopo aver eseguito con successo uno qualsiasi dei comandi precedenti.
Mostra l'utente attualmente registrato
Puoi vedere un utente che è attualmente connesso al server del database usando il seguente comando nel server MySQL:
SELECT user, host, db, command FROM information_schema.processlist;
I comandi precedenti generano una schermata simile a quella mostrata di seguito:
Come modificare la password utente MySQL
I record utente MySQL contengono le informazioni di accesso, i privilegi dell'account e le informazioni sull'host per consentire all'account MySQL di accedere e gestire il database. Le informazioni di accesso includono il nome utente e la password. Pertanto, potrebbe essere necessario modificare la password utente nel database MySQL.
Per modificare la password di qualsiasi account utente, ricorda di tenere a mente le seguenti informazioni:
- Dettagli dell'account utente da modificare
- L'applicazione viene utilizzata dall'account utente la cui password deve essere modificata. Se la password dell'account utente è stata reimpostata senza modificare una stringa di connessione dell'applicazione, l'applicazione non può connettersi al server del database.
MySQL ti consente di modificare la password dell'account utente in tre modi diversi:
- Dichiarazione UPDATE
- Dichiarazione SET PASSWORD
- Dichiarazione ALTER USER
Modifica della password dell'account utente utilizzando l'istruzione UPDATE
Dopo aver eseguito l'istruzione UPDATE, utilizziamo l'istruzione FLUSH PRIVILEGE per ricaricare i privilegi dalla tabella di concessione del database MySQL.
Supponiamo di voler modificare la password per un account utente foss che si connette da localhost con la password foss12345, eseguire il seguente comando:
USE mysql;
UPDATE user SET password=password('kip12345') WHERE user='foss';
FLUSH PRIVILEGES;
L'istruzione precedente non funzionerà su MySQL versione 5.7.6 o successiva poiché la tabella utente MySQL contiene la colonna della stringa di autenticazione che memorizza solo la password. Le versioni superiori hanno la colonna della stringa di autenticazione nell'istruzione UPDATE come mostrato nell'istruzione seguente:
USE mysql;
UPDATE user SET authentication_string = password('foss12345') WHERE user = 'foss';
FLUSH PRIVILEGES;
Nota: Questo metodo funziona solo con le versioni precedenti di MySQL. Pertanto, se hai versioni di MySQL più recenti o più recenti, passa agli altri metodi.
Modifica della password dell'account utente utilizzando l'istruzione SET PASSWORD
Se desideri modificare la password di un altro account, devi disporre del privilegio UPDATE. L'istruzione utilizza l'account utente nel seguente formato:nomeutente@host locale
Non è necessario ricaricare i privilegi dalle tabelle rant del database MySQL utilizzando FLUSH PRIVILEGES. Per modificare la password dell'account utente (foss) utilizzando l'istruzione SET PASSWORD, utilizzare la seguente istruzione:
SET PASSWORD FOR 'foss'@'localhost' = PASSWORD('foss12345');
Se stai utilizzando MySQL versione 5.7.6 o successiva, l'istruzione di cui sopra è deprecata e non funzionerà nelle versioni future. Utilizzare invece la seguente istruzione;
SET PASSWORD FOR 'foss'@'localhost' = 'foss12345';
Modifica della password dell'account utente utilizzando l'istruzione ALTER USER
MySQL utilizza l'istruzione ALTER USER con la clausola IDENTIFIED BY. Per farlo, usa la seguente sintassi:
ALTER USER 'foss'@'localhost' IDENTIFIED BY 'foss12345';
Potrebbe essere necessario reimpostare la password dell'account root MySQL. Per fare ciò, puoi forzare l'arresto, quindi riavviare il server del database MySQL senza utilizzare la convalida della tabella di concessione.
Conclusione
Questo articolo ha trattato in modo completo tutti gli aspetti relativi alla gestione degli utenti MySQL. Riteniamo che sia sufficientemente dettagliato per fornirti soluzioni ai tuoi problemi. Se riscontri errori o difficoltà mentre mostri agli utenti che utilizzano MySQL, contatta la sezione commenti per chiedere aiuto. Grazie per la lettura.