El usuario con permisos otorgados no puede otorgar permisos para un nuevo usuario con una nueva base de datos

El usuario con permisos otorgados no puede otorgar permisos para un nuevo usuario con una nueva base de datos

Estoy usando: mysql 5.5.43-0 en ubuntu 14.04.1

Intento crear un nuevo usuario administrador (admin) al que se le permite hacer las siguientes cosas:

  • una creación de nuevos usuarios (dbuser1) con contraseña - (permiso "crear usuario" -> funciona)
  • b establecer contraseña para el nuevo usuario creado - (permiso "insertar/actualizar en la tabla mysql.user" -> funciona)
  • c otorgar uso a todas las tablas - (CONCEDER USO EN.A 'dbuser1'@'localhost' IDENTIFICADO POR... -> funciona)
  • d creando una nueva base de datos (db4user1) - (permiso "crear" -> funciona)
  • e otorgando todos los privilegios - (CONCEDER TODOS LOS PRIVILEGIOS EN db4user1.* A 'dbuser1'@'localhost';) - (concesión de permiso para administrador -> no funciona)

Tuve el problema con el paso e.

Mysql muestra el siguiente error: #1044 - Acceso denegado para el usuario 'admin'@'localhost' a la base de datos 'db4user1'

Pregunta: ¿Qué permisos/privilegios adicionales necesita mi administrador para realizar las acciones mencionadas anteriormente y nada más que eso?

Creo que mi usuario administrador tenía todos los permisos para otorgarle a un usuario existente una nueva base de datos creada...

Pero no funcionó.

Gracias por tu ayuda

Esteban

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 - Acceso denegado al usuario 'admin'@'localhost' a la base de datos 'db4user1'

Respuesta1

Me parece que quieres crear simplemente otro administrador como default root, así que puedes usar una sintaxis simple como esa:

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

Respuesta2

El requisito mínimo para otorgar derechos suficientes a un usuario determinado ( adminaquí ) para poder otorgar todos los privilegios en una base de datos determinada ( db4user1aquí ) es:

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 ;

Casi todo...excepto:

  • Create(alcance de la estructura)
  • Select, Insert, Update, Delete(Alcance de los datos)

Desde aquí, usando adminel usuario:

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

Admito que no encontré ningún documento para esto. En el pasado, he pasado mucho tiempo probando todas las posibilidades procediendo por eliminación, una por una...

información relacionada