Per iniziare a modificare i privilegi in MySQL, devi prima accedere al tuo server e poi connetterti a mysql
cliente. In genere vorrai connetterti con root
o qualsiasi account sia il tuo account "super utente" principale e iniziale che ha accesso completo durante l'intera installazione di MySQL.
Tipicamente la root
all'utente sarà stata assegnata una password di autenticazione durante l'installazione di MySQL, ma in caso contrario, dovresti adottare misure per aumentare la tua sicurezza aggiungendo root
password come illustrato nella documentazione ufficiale.
Connessione allo strumento della riga di comando MySQL
Per questo esempio, assumeremo root
è l'account MySQL principale. Per iniziare a utilizzare lo strumento della riga di comando MySQL (mysqlcli
), connettiti al tuo server come root
utente, quindi emetti mysql
comando:
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
In caso di successo, vedrai alcuni output sulla tua connessione MySQL e sarai rivolto verso il basso mysql
richiesta.
Nota:nel caso in cui tu non riesca a connetterti direttamente al server come root
utente prima di connettersi a mysql
, puoi specificare l'utente che desideri connettere come aggiungendo il --user=
bandiera:
$ mysql --user=username
Concessione di privilegi
Ora che sei al mysqlcli
prompt, devi solo emettere il GRANT
comando con le opzioni necessarie per applicare le autorizzazioni appropriate.
Tipi di privilegi
La GRANT
command è in grado di applicare un'ampia varietà di privilegi, dalla possibilità di CREATE
tabelle e database, leggi o scrivi FILES
e persino SHUTDOWN
il server. È disponibile un'ampia gamma di flag e opzioni per il comando, quindi potresti voler familiarizzare con ciò che GRANT
può effettivamente farlo sfogliando la documentazione ufficiale.
privilegi specifici del database
Nella maggior parte dei casi, concederai privilegi agli utenti MySQL in base al particolare database
a cui l'account dovrebbe avere accesso. È una pratica comune, ad esempio, per ogni database
MySQL univoco su un server per avere un proprio user
univoco ad esso associato, in modo tale che un solo user
ha accesso di autenticazione a un singolo database
e viceversa.
Per GRANT ALL
privilegi a un user
, consentendo a quell'utente il pieno controllo su uno specifico database
, usa la seguente sintassi:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
Con quel comando, abbiamo detto a MySQL di:
GRANT
iPRIVILEGES
di tipoALL
(quindi tutto ovviamente). Nota:la maggior parte delle moderne installazioni MySQL non richiedono iPRIVILEGES
opzionali parola chiave.- Questi privilegi sono per
database_name
e si applica a tutti tabelle di quel database, che è indicato da.*
che segue. - Questi privilegi sono assegnati a
username
quando quelusername
è connesso localmente, come specificato da@'localhost'
. Per specificare un host valido, sostituisci'localhost'
con'%'
.
Piuttosto che fornire tutti i privilegi all'intero database, forse vuoi dare il tolkien
solo utente la possibilità di leggere i dati (SELECT
) dagli authors
tabella dei books
Banca dati. Sarebbe facilmente realizzabile in questo modo:
mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
Creazione di un altro super utente
Sebbene non sia particolarmente sicuro, in alcuni casi potresti voler creare un altro "super utente", che abbia TUTTI i privilegi su TUTTI i database sul server. Ciò può essere eseguito in modo simile a quanto sopra, ma sostituendo il database_name
con il carattere jolly asterisco:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
Ora tolkien
ha gli stessi privilegi del root
predefinito conto, attenzione!
Salvataggio delle modifiche
Come passaggio finale a seguito di eventuali aggiornamenti dei privilegi utente, assicurati di salvare le modifiche emettendo il FLUSH PRIVILEGES
comando da mysql
richiesta:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)