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 ( admin
aqui) para poder conceder todos os privilégios em um determinado banco de dados ( db4user1
aqui) é:
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 admin
user :
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...