Come concedere il privilegio di creazione del database a un utente in MySQL


11

Il comando seguente fornisce tutti i privilegi in tutti i database per l'utente "admin". Ma non consente a "admin" di creare un database.

GRANT ALL ON * . * TO 'admin'@'localhost'; 

Come posso fornire l'accesso a "admin" per creare un database?

Mentre provo a creare un database, visualizzo il seguente errore:

ERRORE 1044 (42000): Accesso negato per l'utente 'admin' @ 'localhost' al database 'newdb'


Hai usato GRANT ALL ON *.* TO 'admin'@'localhost';? Nel tuo esempio dici che hai eseguito:, GRANT ALL ON * . * TO 'admin'@'hostname';ma hostnameè un host distinto di localhost.
oNare,

hostname è 'localhost'.
Abhishek,

Eri connesso come "root" quando lo hai eseguito GRANT?
Rick James,

Sì. Ero collegato come "root" quando ho eseguito quel GRANT.
Abhishek,

Hai provato flush privileges;come root?
dwjv,

Risposte:


5

TUTTI i privilegi includono "TUTTI", tranne "con OPZIONE CONCESSIONE" ... Pertanto il comando sopra consentirà anche all'utente amministratore di creare il database.

Potresti voler mostrare l'errore che stai riscontrando. Nota che in GRANT sopra non hai specificato la password anche per l'utente amministratore.

Aggiornare:

Dovresti essere in grado di fare quanto segue:

accedi come root e crea utente:

$] mysql -uroot -p
mysql> grant all privileges on *.* to 'admin'@'localhost';

accedi come admin (senza password):

$] mysql -uadmin -p
mysql> create database admin;

Quando accedi, puoi verificare i tuoi privilegi come segue:

mysql> show grants;

o

mysql> show grants for current_user();

mysql> select current_user() ti mostrerà, utente con cui hai effettuato l'accesso.


Ho aggiunto l'errore nella mia domanda.
Abhishek,

@abhishek update answer .... btw quale comando sta causando l'errore sopra? Verifica quali concessioni sta ricevendo il tuo utente? Sei sicuro di connetterti come utente amministratore?
mysql_user,

Sì, sono sicuro al 100% di connettermi come utente amministratore.
Abhishek,

mysql> mostra sovvenzioni; + ------------------------------------------------- ---------------------------- + | Sovvenzioni per admin @ localhost | + ------------------------------------------------- ---------------------------- + | CONCESSIONE SU . A 'admin' @ 'localhost' IDENTIFICATO DA PASSWORD <secret> | | CONCESSIONE DI TUTTI I PRIVILEGI SU newdb. * A 'admin' @ 'localhost' | + ------------------------------------------------- ---------------------------- + 2 file nel set (0,00 sec)
Abhishek,

Nota che hai tutti i priv solo su mbdb ... quindi non sarai in grado di lavorare con nessun altro db!
mysql_user,

0

Un nuovo utente non ha i permessi per fare nulla con i database. In effetti, se un nuovo utente tenta anche di accedere (con password, password), non sarà in grado di raggiungere la shell MySQL.

Pertanto, è necessario fornire all'utente l'accesso

GRANT ALL PRIVILEGES ON * . * TO 'admin'@'localhost'; 

Gli asterischi in questo comando si riferiscono al database e alla tabella (rispettivamente) a cui possono accedere; questo comando specifico consente all'utente di leggere, modificare, eseguire ed eseguire tutte le attività su tutti i database e le tabelle.

Dopo aver finalizzato le autorizzazioni che si desidera impostare per i nuovi utenti, assicurarsi sempre di ricaricare tutti i privilegi.

FLUSH PRIVILEGES;

Ora, tutte le modifiche sarebbero attive.


I privilegi di scarico non sono richiesti per i comandi GRANT.
mysql_user,

Sì ... sono d'accordo .... Ma quando si modifica la concessione su tabelle direttamente utilizzando istruzioni come INSERT, AGGIORNAMENTO o ELIMINA è necessario FLUSH PRIVILAGES ... Grazie @mysql_user
Mathew
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.