Como conceder privilégio de criação de banco de dados a um usuário no MySQL

11

O comando a seguir fornece todos os privilégios em todos os bancos de dados para o usuário 'admin'. Mas isso não permite que 'admin' crie banco de dados.

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

Como posso fornecer o acesso para 'admin' criar banco de dados?

Enquanto estou tentando criar banco de dados, estou recebendo o seguinte erro -

ERRO 1044 (42000): acesso negado pelo usuário 'admin' @ 'localhost' ao banco de dados 'newdb'

Abhishek
fonte
Você usou GRANT ALL ON *.* TO 'admin'@'localhost';? No seu exemplo, você diz que executou:, GRANT ALL ON * . * TO 'admin'@'hostname';mas hostnameé um host diferente de localhost.
2015
nome do host é 'localhost'.
Abhishek 12/09
Você estava conectado como "root" quando executou isso GRANT?
Rick James
Sim. Eu estava conectado como "root" quando executei o GRANT.
Abhishek
Você tentou flush privileges;como root?
dwjv

Respostas:

5

TODOS os privilégios incluem "TODOS", exceto "com OPÇÃO DE CONCESSÃO" ... Portanto, o comando acima permitirá que o usuário administrador crie o banco de dados também.

Você pode mostrar o erro que está recebendo. Observe que em GRANT acima, você também não especificou a senha para o usuário administrador.

Atualizar:

Você deve fazer o seguinte:

faça o login como root e crie o usuário:

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

faça login como administrador (sem senha):

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

Ao fazer login, você pode verificar seus privilégios da seguinte maneira:

mysql> show grants;

ou

mysql> show grants for current_user();

mysql> select current_user() mostrará o usuário que você efetuou login como.

mysql_user
fonte
Eu adicionei o erro na minha pergunta.
Abhishek 12/09
@abhishek update answer .... btw que comando está causando erro acima? Verifique o que concede ao seu usuário? Tem certeza de que está se conectando como usuário administrador?
Mysql_user #
Sim, tenho 100% de certeza de que estou me conectando como usuário administrador.
Abhishek 12/09
mysql> show grant; + ------------------------------------------------- ---------------------------- + | Subsídios para admin @ localhost | + ------------------------------------------------- ---------------------------- + | CONCESSÃO DE USO . PARA 'admin' @ 'localhost' IDENTIFICADO PELA SENHA <secret> | | CONCEDE TODOS OS PRIVILEGIOS EM newdb. * PARA 'admin' @ 'localhost' | + ------------------------------------------------- ---------------------------- + 2 linhas no conjunto (0.00 seg)
Abhishek
Note que você tem todos os privs apenas no mbdb ... então você não poderá trabalhar com nenhum outro db!
Mysql_user #
0

Um novo usuário não tem permissões para fazer nada com os bancos de dados. De fato, se um novo usuário tentar entrar (com a senha, senha), ele não poderá acessar o shell do MySQL.

Portanto, você precisa fornecer ao usuário o acesso

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

Os asteriscos neste comando se referem ao banco de dados 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 permissões que você deseja configurar para seus novos usuários, sempre certifique-se de recarregar todos os privilégios.

FLUSH PRIVILEGES;

Agora, todas as mudanças entrariam em vigor.

Mathew
fonte
Privilégios de liberação não são necessários para comandos GRANT.
Mysql_user #
Sim .. eu concordo ... Mas FLUSH PRIVILAGES é necessário quando modificamos grant nas tabelas diretamente usando instruções como INSERT, UPDATE ou DELETE ... Thanks @mysql_user
Mathew