O usuário com permissões concedidas não pode conceder permissões para um novo usuário e um novo banco de dados

O usuário com permissões concedidas não pode conceder permissões para um novo usuário e um novo banco de dados

Estou usando: mysql 5.5.43-0 no Ubuntu 14.04.1

Tento criar um novo usuário administrador (admin) que tenha permissão para fazer o seguinte:

  • a criação de novos usuários (dbuser1) com senha - (permissão "criar usuário" -> funciona)
  • b definir senha para novo usuário criado - (permissão "inserir/atualizar na tabela mysql.user" -> funciona)
  • c conceder uso a todas as tabelas - (GRANT USAGE ON.TO 'dbuser1'@'localhost' IDENTIFICADO POR ... -> funciona)
  • d criando novo banco de dados (db4user1) - (permissão "criar" -> funciona)
  • e concedendo todos os privilégios - (GRANT ALL PRIVILEGES ON db4user1.* TO 'dbuser1'@'localhost';) - (concessão de permissão para admin -> não funciona)

Eu tive o problema com a etapa e.

Mysql mostra o seguinte erro: #1044 - Acesso negado ao usuário 'admin'@'localhost' ao banco de dados 'db4user1'

Pergunta: Quais permissões/privilégios adicionais precisam do meu administrador para executar as ações mencionadas acima e nada mais do que isso.

Acho que meu usuário administrador tinha todas as permissões para conceder a um usuário existente um novo banco de dados criado...

Mas não funcionou.

Obrigado pela ajuda

Stephan

CREATE USER 'dbuser1'@'localhost' IDENTIFIED BY 'password1234'
SET PASSWORD FOR 'dbuser1'@'localhost' = PASSWORD('password5678')
GRANT USAGE ON *.* TO 'dbuser1'@'localhost' IDENTIFIED BY 'password5678' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE IF NOT EXISTS `db4user1`; 
GRANT ALL PRIVILEGES ON `db4user1`.* TO 'dbuser1'@'localhost'; 

-> #1044 - Acesso negado ao usuário 'admin'@'localhost' ao banco de dados 'db4user1'

Responder1

Parece-me que você deseja criar apenas outro administrador como default root, para poder usar uma sintaxe simples como esta:

GRANT ALL ON *.* TO admin@localhost IDENTIFIED BY 'passwd5678' WITH GRANT OPTION;

Responder2

O requisito mínimo para conceder direitos suficientes a um determinado usuário ( adminaqui) para poder conceder todos os privilégios em um determinado banco de dados ( db4user1aqui) é:

GRANT DROP ,
REFERENCES ,
INDEX ,
ALTER ,
CREATE TEMPORARY TABLES ,
LOCK TABLES ,
CREATE VIEW ,
EVENT,
TRIGGER,
SHOW VIEW ,
CREATE ROUTINE,
ALTER ROUTINE,
EXECUTE ON  `db4user1` . * TO  'admin'@'localhost' WITH GRANT OPTION ;

Quase tudo...exceto:

  • Create(escopo da estrutura)
  • Select, Insert, Update, Delete(Escopo de dados)

A partir daqui, usando adminuser :

mysql> GRANT ALL PRIVILEGES ON db4user1.* TO 'dbuser1'@'localhost';
Query OK, 0 rows affected (0.00 sec)

Admito que não encontrei nenhum documento para isso. No passado, passei muito tempo testando todas as possibilidades procedendo por eliminação, uma por uma...

informação relacionada