Mysql
 sql >> Database >  >> RDS >> Mysql

Come concedere tutti i privilegi su un database in MySQL

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 i PRIVILEGES di tipo ALL (quindi tutto ovviamente). Nota:la maggior parte delle moderne installazioni MySQL non richiedono i PRIVILEGES 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 quel username è 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)