Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] CREATE command denied for user al dar permisos.

Estas en el tema de CREATE command denied for user al dar permisos. en el foro de Mysql en Foros del Web. Hola a todos, Tengo un problema raro. He creado un usuario y le he dado permiso administrados para todas las bases de datos. Código: CREATE ...
  #1 (permalink)  
Antiguo 09/12/2013, 14:07
 
Fecha de Ingreso: noviembre-2013
Ubicación: Barcelona
Mensajes: 33
Antigüedad: 10 años, 5 meses
Puntos: 0
CREATE command denied for user al dar permisos.

Hola a todos,

Tengo un problema raro.

He creado un usuario y le he dado permiso administrados para todas las bases de datos.

Código:
CREATE USER 'javier.sanchez' IDENTIFIED BY 'javier'
Código:
GRANT ALL PRIVILEGES ON *.* TO 'javier.sanchez';
mysql> show grants for 'javier.sanchez';
+------------------------------------------------------------------------------------------------------------------------+
| Grants for avier.sanchez@% 
+------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'javier.sanchez'@'%' IDENTIFIED BY PASSWORD '*B174F2517BA8F7BD62D6AF171D91AB2F537BCB94' |
+------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Este usuario consigue crear usuarios, pero no pude darles permisos, apareciendo el error "CREATE command denied for user"

Código:
mysql> GRANT SELECT,INSERT ON permis.usuaris TO 'maria.plana';
ERROR 1142 (42000): GRANT command denied to user 'javier.sanchez'@'localhost' for table 'usuaris'
mysql> show tables;
El usurio le he eliminado los permisos y borrado, he vuelto a darles permisos y me pasa lo mismo. Alguna idea?

Muchas gracias,
Jose Luis,
  #2 (permalink)  
Antiguo 09/12/2013, 14:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: CREATE command denied for user al dar permisos.

No es un error. Es simplemente que el GRANT ALL no otorga permisos de GRANT.
Para que se entienda:
Darle a un usuario todos los permisos, hace que el usuario destinatario herede todos los permisos de base de datos, tales como CREATE, UPDATE, DELETE, DROP. Estos afectan objetos en la base, pero los permisos no son objetos de base, sino lo que podríamos llamar propiedades sobre los objetos.
Es decir, no es lo mismo poder crearlos y destruirlos, que permitir y hacer heredar su uso. AL menos para las bases de datos.
Para que un usuario pueda crear usarios, es simplemente permiso de CREATE USER, pero para que además pueda transferir los mismos permisos que tiene, el usuario debe si o sí haber recibido los permisos para otorgar permisos, y esos no están incluidos en el ALL.

Este tipo de detalles lo encontrarás leyendo con más detalle el manual de referencia: http://dev.mysql.com/doc/refman/5.0/es/grant.html

En definitiva, esto es:
Código MySQL:
Ver original
  1. CREATE USER 'javier.sanchez' IDENTIFIED BY 'javier' WITH GRANT OPTION

Otra cosa que debes saber, anticipándome a lo que se te presente, es que los permisos de ejecutar stored procedures, y los para usar el LOAD DATA, tampoco están incluidos en el GRANT ALL. DEben ser dados en forma específica.

Una nota final: La lógica de permisos especifica que un usuario sólo puede otorgar a otro usuario los mismos permisos que posee, o menos, pero nunca más de los que él mismo tiene.
En un ejemplo: Si "juan" no tiene permisos de DROP TABLE, no puede otorgar a sus usuarios creados ese permiso tampoco.
¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/12/2013, 15:42
 
Fecha de Ingreso: noviembre-2013
Ubicación: Barcelona
Mensajes: 33
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: CREATE command denied for user al dar permisos.

Hola gnzsoloyo,

Se entiende perfectamente. Muchisimas gracias como siempre. Por desgracia no me ha dejado hacerlo de la manera que me has comentado por lo que lo he hecho así.

Código SQL:
Ver original
  1. CREATE USER 'javier.sanchez' IDENTIFIED BY 'javier' WITH GRANT OPTION;
  2. ERROR 1064 (42000): You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near 'GRANT OPTION' at line 1
  3. mysql> CREATE USER 'javier.sanchez' IDENTIFIED BY 'javier';
  4. Query OK, 0 ROWS affected (0.02 sec)
  5.  
  6. mysql> GRANT ALL PRIVILEGES ON *.* TO 'javier.sanchez' WITH GRANT OPTION;
[/code]

Última edición por gnzsoloyo; 09/12/2013 a las 16:35
  #4 (permalink)  
Antiguo 09/12/2013, 16:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: CREATE command denied for user al dar permisos.

Nunca hagas Copy+Paste de un código que te demos. Muchas veces puede que tenga algún defecto casual o intencional.

Revisa el manual. Allí está la explicación clara:
CREATE USER: http://dev.mysql.com/doc/refman/5.0/es/create-user.html

GRANT: http://dev.mysql.com/doc/refman/5.0/es/grant.html

Si observas cada una de las dos páginas verás que el WITH GRANT OPTION pertenece a GRANT y no a CREATE USER...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: create, denied, select, sql, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:45.