I'criei base de dados, 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 fazer login em bancos de dados de qualquer lugar, mas posso't criar tabelas.
Como conceder todos os privilégios sobre essa base de dados e (no futuro) tabelas. Eu posso't criar tabelas em 'mydb' base de dados. Eu sempre consigo:
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 meu "Super Usuário" privilégios (embora eu normalmente especificaria um host).
Enquanto esta resposta pode resolver o problema de acesso, WITH GRANT OPTION
cria um usuário MySQL que pode editar as permissões de outros usuários.
O privilégio 'GRANT OPTION' permite dar a outros usuários ou remover de outros usuários aqueles privilégios que você mesmo possui.
Por razões de segurança, você não deve usar este tipo de conta de usuário para qualquer processo ao qual o público terá acesso (ou seja, um website). É recomendado que você crie um usuário com privilégios apenas de banco de dados para esse tipo de uso.
Esta é uma pergunta antiga, mas eu não't acho que a resposta aceita é segura. It'é bom para criar um super usuário, mas não é bom se você quiser conceder privilégios em uma única base de dados.
grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';
O "%" parece não cobrir as comunicações de tomadas, que o "localhost" é para. O WITH GRANT OPTION
só é bom para o super usuário, caso contrário é normalmente um risco de segurança.
Espero que isto ajude.
Isto vai ser útil para algumas pessoas:
A partir da linha de comando MySQL:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Infelizmente, neste momento, o novo usuário não tem permissão para fazer nada com as bases de dados. Na verdade, se o novo usuário tentar fazer login (com a senha, senha), ele não será capaz de alcançar a shell do MySQL.
Portanto, a primeira coisa a fazer é fornecer ao usuário o acesso à informação de que ele precisará.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Os asteriscos neste comando referem-se à base de dados e à tabela (respectivamente) a que podem aceder - este comando específico permite ao utilizador ler, editar, executar e executar todas as tarefas em todas as bases de dados e tabelas.
Uma vez finalizadas as permissões que você quer configurar para seus novos usuários, certifique-se sempre de recarregar todos os privilégios.
FLUSH PRIVILEGES;
As suas alterações estarão agora 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 MySQL workbench, Navicat ou SQLyog.