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

Eliminar e impedir crear bases de datos "test" o "test_"

Estas en el tema de Eliminar e impedir crear bases de datos "test" o "test_" en el foro de Mysql en Foros del Web. Un saludo a los integrantes del foro! Verán, no tengo mucha experiencia en MySQL pero expondré mi problema esperando me puedan auxiliar :) Tengo un ...
  #1 (permalink)  
Antiguo 07/06/2014, 18:33
 
Fecha de Ingreso: junio-2011
Mensajes: 6
Antigüedad: 13 años, 5 meses
Puntos: 0
Eliminar e impedir crear bases de datos "test" o "test_"

Un saludo a los integrantes del foro!

Verán, no tengo mucha experiencia en MySQL pero expondré mi problema esperando me puedan auxiliar :)

Tengo un usuario como administrador de MySQL (root) el cual tiene todos los permisos sobre todo. Cuando creo otro usuario con permisos exclusivos sobre una base de datos determinada (es decir, que no pueda crear nuevas bases de datos) este usuario solo puede llevar a cabo las instrucciones permitidas en dichos privilegios sobre dicha base, sin embargo, puede crear una base de datos llamada "test" o cualquiera que inicie con "test_" (y tener todos los permisos sobre esta base de datos), solo funciona con esos nombres ya que si intenta crear otra por ejemplo:"nueva_base" el sistema no lo permite.

Por qué ocurre esto? no quiero que cualquier usuario pueda crear bases de datos "test" pero no se como impedirlo, cómo lo soluciono?

Les agradezco de antemano!
  #2 (permalink)  
Antiguo 07/06/2014, 18:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Eliminar e impedir crear bases de datos "test" o "test_"

Empieza por mostrarnos cómo lo creas a ese usuario, y cómo le das permisos.
Normalmente, si un usuario no se le otorgó privilegios de CREATE DATABASE, no puede crear ninguna. Lo más probable es que se los estés otorgando sin darte cuenta.
__________________
¿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 07/06/2014, 19:14
 
Fecha de Ingreso: junio-2011
Mensajes: 6
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Eliminar e impedir crear bases de datos "test" o "test_"

Con gusto!

Cuando creo un nuevo usuario (desde el root) la instrucción que utilizo es como sigue:

GRANT SELECT, UPDATE, INSERT ON nuevaBD.* TO 'usuario'@'%' IDENTIFIED BY 'contraseña';

De esta manera es como creo a un nuevo usuario que pueda acceder desde cualquier IP. Esto se me respeta siempre y cuando el usuario no intente crear una nueva base de datos llamada "test" o cualquier cosa que empiece con "test_"
  #4 (permalink)  
Antiguo 08/06/2014, 18:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Eliminar e impedir crear bases de datos "test" o "test_"

Muestra los permisos de ese usuario (no los que parece tener, sino los que tiene otorgados realmente):
Código MySQL:
Ver original
  1. SHOW GRANTS FOR usuario
Si tiene permisos para crear tablas, ese sería el problema probable:
Manual de referencia:
Cita:
The CREATE privilege enables creation of new databases and tables.
SI no le figura el permiso de CREATE, entonces podemos estar ante un BUG.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/06/2014, 23:57
 
Fecha de Ingreso: junio-2011
Mensajes: 6
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Eliminar e impedir crear bases de datos "test" o "test_"

Al ejecutar la instrucción SHOW GRANTS FOR CURRENT_USER (previamente inicio sesión del usuario que no tiene privilegios excepto SELECT, UPDATE e INSERT sobre una específica base de datos) el resultado es el siguiente:

Grants for remoto@%
+-------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'remoto'@'%'
| IDENTIFIED BY PASSWORD '*339917E464F98D7F12D7A30FAFEBAF46DD55A514'
| GRANT SELECT, INSERT, UPDATE ON `internet`.* TO 'remoto'@'%'
+-------------------------------------------------------------------------------------------------------+

Pero si le indico CREATE DATABASE test la crea e interactua con ella con todos los privilegios D:

Ya eliminé la base de datos test desde mysqladmin pero esta se vuelve a crear sin ningún problema, no se si debo modificar algún parámetro para que esta base de datos no se pueda crear o solo tenga acceso el root :/
  #6 (permalink)  
Antiguo 18/07/2014, 15:21
 
Fecha de Ingreso: junio-2011
Mensajes: 6
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Eliminar e impedir crear bases de datos "test" o "test_"

Al ejecutar la instrucción SHOW GRANTS FOR CURRENT_USER (previamente inicio sesión del usuario que no tiene privilegios excepto SELECT, UPDATE e INSERT sobre una específica base de datos) el resultado es el siguiente:

Grants for remoto@%
+-------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'remoto'@'%'
| IDENTIFIED BY PASSWORD '*339917E464F98D7F12D7A30FAFEBAF46DD55A514'
| GRANT SELECT, INSERT, UPDATE ON `internet`.* TO 'remoto'@'%'
+-------------------------------------------------------------------------------------------------------+

Pero si le indico CREATE DATABASE test la crea e interactua con ella con todos los privilegios D:

Ya eliminé la base de datos test desde mysqladmin pero esta se vuelve a crear sin ningún problema, no se si debo modificar algún parámetro para que esta base de datos no se pueda crear o solo tenga acceso el root :/

Etiquetas: bases, impedir, sql, test
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 21:25.