MySQL: Conceder ** todos os ** privilégios no database

Eu criei database, por exemplo, ‘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; 

Agora eu posso acessar o database de qualquer lugar, mas não posso criar tabelas.

Como conceder todos os privilégios nesse database e tabelas (no futuro). Não consigo criar tabelas no database ‘mydb’. Eu sempre recebo:

 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; 

    É assim que eu crio meus privilégios de “Superusuário” (embora eu normalmente especifique um host).

    NOTA IMPORTANTE

    Embora essa resposta possa resolver o problema de access, WITH GRANT OPTION cria um usuário do MySQL que pode editar as permissions de outros usuários .

    O privilégio GRANT OPTION permite que você conceda a outros usuários ou remova de outros usuários esses privilégios que você possui.

    Por razões de segurança, você não deve usar esse tipo de conta de usuário para qualquer processo que o público tenha access (ou seja, um site). É recomendável criar um usuário com apenas privilégios de database para esse tipo de uso.

    Essa é uma pergunta antiga, mas não acho que a resposta aceita seja segura. É bom criar um superusuário, mas não é bom se você deseja conceder privilégios em um único database.

     grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd'; grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd'; 

    % parece não cobrir as comunicações de socket, para as quais o localhost serve. WITH GRANT OPTION só é bom para o superusuário, caso contrário, normalmente é um risco de segurança.

    Espero que isto ajude.

    Isso será útil para algumas pessoas:

    Da linha de comando do MySQL:

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

    Infelizmente, neste momento o newuser não tem permissions para fazer nada com os bancos de dados. De fato, se newuser tentar logar (com a senha, password), eles não poderão acessar o shell do MySQL.

    Portanto, a primeira coisa a fazer é fornecer ao usuário access às informações necessárias.

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

    Os asteriscos nesse comando referem-se ao database e à tabela (respectivamente) que eles podem acessar – esse comando específico permite ao usuário ler, editar, executar e executar todas as tarefas em todos os bancos de dados e tabelas.

    Depois de finalizar as permissions que você deseja configurar para os novos usuários, sempre certifique-se de recarregar todos os privilégios.

     FLUSH PRIVILEGES; 

    Suas alterações agora estarão em vigor.

    Para mais informações: http://dev.mysql.com/doc/refman/5.6/en/grant.html

    Se você não está confortável com a linha de comando, então você pode usar um cliente como o MySQL workbench , Navicat ou SQLyog

    1. Crie o database

     CREATE DATABASE db_name; 

    2. Crie o nome de usuário para o database db_name

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

    3. Use o database

     USE db_name; 

    4. Finalmente, você está no database nome_bd e, em seguida, executa os comandos como criar, selecionar e inserir operações.

    Esse SQL concede em todos os bancos de dados, mas apenas privilégios básicos. Eles são suficientes para Drupal ou WordPress e, como uma cortesia, permitem que uma conta de desenvolvedor para projetos locais.

     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'; 

    Funciona para privilégios no esquema 🙂

    Opcional: depois do mypasswd você pode adicionar WITH GRANT OPTION

    Olá eu usei esse código para ter o super usuário no 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 depois

     FLUSH PRIVILEGES; 

    Eu poderia fazê-lo funcionar apenas adicionando GRANT OPTION , sem que sempre receba permissão negada erro

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

    Para acessar somente do servidor remoto para o database mydb

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

    Para acessar do servidor remoto para todos os bancos de dados.

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

    Para conceder todos os privilégios no database: mydb para o usuário: myuser , apenas execute:

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

    ou:

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

    A palavra-chave PRIVILEGES não é necessária.

    Também não sei por que as outras respostas sugerem que a IDENTIFIED BY 'password' seja colocada no final do comando. Eu acredito que não é necessário.