MySQL: concedi ** tutti ** i privilegi sul database

Ho creato un database, ad 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 qualsiasi luogo, ma non posso creare tabelle.

Come concedere tutti i privilegi su quel database e (in futuro) tabelle. Non riesco a creare tabelle nel database ‘mydb’. 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 vorrei specificare un host).

    NOTA IMPORTANTE

    Mentre questa risposta può risolvere il problema dell’accesso, WITH GRANT OPTION crea un utente MySQL in grado di modificare le autorizzazioni degli altri utenti .

    Il privilegio GRANT OPTION ti consente di dare ad altri utenti o rimuovere da altri utenti quei privilegi che possiedi tu stesso.

    Per motivi di sicurezza, non utilizzare questo tipo di account utente per qualsiasi processo a cui il pubblico avrà accesso (ad esempio un sito Web). Si consiglia di creare un utente con solo privilegi di database per quel tipo di utilizzo.

    Questa è una vecchia domanda, ma non credo che la risposta accettata sia sicura. È utile per creare un superutente ma non va bene se si desidera 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. WITH GRANT OPTION è utile solo per il superutente, altrimenti è solitamente un rischio per la sicurezza.

    Spero che questo ti aiuti.

    Questo sarà utile per alcune persone:

    Dalla riga di comando di MySQL:

     CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; 

    Purtroppo, a questo punto newuser non ha permessi per fare qualcosa con i database. Infatti, se newuser tenta anche di accedere (con password, password), non sarà in grado di raggiungere la shell MySQL.

    Pertanto, la prima cosa da fare è fornire all’utente l’accesso alle informazioni di cui avranno 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 consente all’utente di leggere, modificare, eseguire ed eseguire tutte le attività su tutti i database e le tabelle.

    Una volta che hai finalizzato le autorizzazioni che vuoi configurare 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 ti senti a tuo agio con la riga di comando, puoi utilizzare un client come MySQL workbench , Navicat o SQLyog

    1. Creare il database

     CREATE DATABASE db_name; 

    2. Creare il nome utente per il database nome_db

     GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password'; 

    3. Usa il database

     USE db_name; 

    4. Finalmente sei nel database nome_db e poi esegui i comandi come creare, selezionare e inserire operazioni.

    Questo SQL garantisce su tutti i database ma solo i privilegi di base. Sono sufficienti per Drupal o WordPress e, come una nicchia, consente a un account sviluppatore di progetti locali.

     GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password'; 
     GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY 'mypasswd'; 

    Funziona per i privilegi sullo schema 🙂

    Opzionale: dopo mypasswd puoi aggiungere WITH GRANT OPTION

    Ciao ho usato questo codice per avere il superutente in mysql

     GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE, LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN, SUPER ON *.* TO mysql@'%' WITH GRANT OPTION; 

    e poi

     FLUSH PRIVILEGES; 

    Potrei farlo funzionare solo aggiungendo GRANT OPTION , senza che venga sempre visualizzato un errore di authorization negato

     GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION; 

    Per accedere solo dal server remoto al database mydb

     GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'192.168.2.21'; 

    Per accedere dal server remoto a tutti i database.

     GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.2.21'; 

    Per concedere tutti i privilegi sul database: mydb all’utente: myuser , basta eseguire:

     GRANT ALL ON mydb.* TO 'myuser'@'localhost'; 

    o:

     GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost'; 

    La parola chiave PRIVILEGES non è necessaria.

    Inoltre non so perché le altre risposte suggeriscono che l’ IDENTIFIED BY 'password' sia posta alla fine del comando. Credo che non sia richiesto.