Ho creato un database, per esempio 'mydb'.
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;
Ora posso accedere al database da ovunque, ma non posso creare tabelle.
Come concedere tutti i privilegi su quel database e (in futuro) le tabelle. Non posso creare tabelle in 'mydb'database. Ottengo sempre:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;
Questo è il modo in cui creo i miei privilegi di "Super User" (anche se normalmente specificherei un host).
Mentre questa risposta può risolvere il problema dell'accesso, WITH GRANT OPTION
crea un utente MySQL che può modificare i permessi di altri utenti.
Il privilegio GRANT OPTION vi permette di dare ad altri utenti o rimuovere da altri utenti quei privilegi che voi stessi possedete.
Per ragioni di sicurezza, non dovreste usare questo tipo di account utente per qualsiasi processo a cui il pubblico avrà accesso (ad esempio un sito web). Si raccomanda di creare un utente con soli privilegi di database per quel tipo di utilizzo.
Questa è una vecchia domanda ma non credo che la risposta accettata sia sicura. Va bene per creare un super utente ma non va bene se si vogliono concedere privilegi su un singolo database.
grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';
%
sembra non coprire le comunicazioni socket, che il localhost
è per. L'opzione WITH GRANT OPTION
va bene solo per il super utente, altrimenti di solito è un rischio per la sicurezza.
Spero che questo aiuti.
Questo sarà utile per alcune persone:
Dalla linea di comando di MySQL:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Purtroppo, a questo punto newuser non ha i permessi per fare nulla con i database. Infatti, se newuser prova anche solo a fare il login (con la password, password), non sarà in grado di raggiungere la shell di MySQL.
Pertanto, la prima cosa da fare è fornire all'utente l'accesso alle informazioni di cui avrà bisogno.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Gli asterischi in questo comando si riferiscono al database e alla tabella (rispettivamente) a cui possono accedere - questo comando specifico permette all'utente di leggere, modificare, eseguire ed eseguire tutti i compiti su tutti i database e le tabelle.
Una volta che hai finalizzato i permessi che vuoi impostare per i tuoi nuovi utenti, assicurati sempre di ricaricare tutti i privilegi.
FLUSH PRIVILEGES;
Le tue modifiche saranno ora in vigore.
Per maggiori informazioni: http://dev.mysql.com/doc/refman/5.6/en/grant.html
Se non sei a tuo agio con la linea di comando, puoi usare un client come MySQL workbench, Navicat o SQLyog