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 ( admin
aquí ) para poder otorgar todos los privilegios en una base de datos determinada ( db4user1
aquí ) 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 admin
el 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...