Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: novalida en 9 Mayo 2010, 17:31 pm



Título: Eliminar todos los privilegios
Publicado por: novalida en 9 Mayo 2010, 17:31 pm
Hola!
estoy aprendiendo SQL y dando vueltas he querido eliminar todos los privilegios de un usuario.
Para eliminar un privilegio sé que se sigue el siguiente patrón:

Código:
REVOKE ALL ON tabla FROM usuario;
REVOKE privilegio FROM usuario;

El problema es que no quiero quitar los privilegios uno a uno ni tabla por tabla, sino todo a la vez.

¿Alguien me puede decir si hay alguna manera???

Muchas gracias,
Novalida :)


Título: Re: Eliminar todos los privilegios
Publicado por: ^Tifa^ en 9 Mayo 2010, 19:51 pm
Disculpa pero de que DB estas hablando?   :huh:   :huh:  MySQL??? Oracle?? SQL Server???

Es que depende la DB la sintaxis varia ligeramente. 

 :P


Título: Re: Eliminar todos los privilegios
Publicado por: novalida en 9 Mayo 2010, 19:58 pm
upssss se me olvidó eso, mil perdones.
La base en Oracle :)


Título: Re: Eliminar todos los privilegios
Publicado por: ^Tifa^ en 9 Mayo 2010, 20:27 pm
Bueno si asignaste los permisos mediante uso de Roles (lo cual seria mas comodo). Puedes quitarle los Roles a ese usuario en especifico:

Código
  1. REVOKE NOMBRE_ROL FROM USUARIO
  2.  

Si quieres que ya ese usuario no pueda crear mas tablas en ese TABLESPACE:

Código
  1. ALTER USER  NOMBRE_USUARIO  QUOTA  0  ON  NOMBRE_TABLESPACE
  2.  

Si quieres quitarle los todos privilegios de X tabla a un usuario

Código
  1. REVOKE  ALL  ON  TABLA  FROM  USUARIO
  2.  


Título: Re: Eliminar todos los privilegios
Publicado por: novalida en 9 Mayo 2010, 22:57 pm
Hola!!
Primero gracias por responder ambas veces.
El caso es que practicando le otorgué varios privilegios a un usuario sin utilizar un rol (que sería lo propio, por supuesto). Conozco las sentencias que me has escrito, pero lo que me gustaría saber es si a un usuario al que se le han otorgado varios privilegios sin haber usado ningún rol se le pueden eliminar todos eso privilegio sin ir uno a uno.
No sé si me he explicado y tampoco sé si es algo que se pueda hacer, pero ante la duda aquí pregunté :)


Título: Re: Eliminar todos los privilegios
Publicado por: ^Tifa^ en 10 Mayo 2010, 00:46 am
Si Oracle fuese tan intuitivo como MySQL si   :rolleyes:  pero como no lo es...  :-[  y no creaste un rol  :-(  te costara el camino dificil.

Haber no usaste ROLE (Lo cual hubiera sido beneficioso aca) en oracle asi mismo como otorgas asi mismo debes quitar... a lo mejor tu estas buscando el:

Código
  1. REVOKE ALL PRIVILEGES FROM  USUARIO

o

Código
  1. REVOKE ALL PRIVILEGES  ON  USUARIO.TABLA  FROM USUARIO

Pero para hacer lo anterior, debiste haberle otorgado (GRANT) todos los privilegios (insert, select, update, delete, etc) a ese usuario en su esquema o tabla.. sino lo hiciste asi, si todo fue individual digase:

Código
  1. GRANT INSERT ON USUARIO.TABLA TO USUARIO
Código
  1. GRANT SELECT ON USUARIO.TABLA TO USUARIO

etc.. me temo, que te costara el camino complicado, cual es este? ese que te estas intentando evitar, quitar los permisos uno por uno o quitarlos completos tabla por tabla con:

Código
  1. REVOKE ALL PRIVILEGES ON TABLA FROM USUARIO

Y luego quitarle permisos total en ese TABLESPACE a ese usuario:

Código
  1. ALTER USER  NOMBRE_USUARIO  QUOTA  0  ON  NOMBRE_TABLESPACE

Es la unica forma, aca las cosas no son tan intuitivas como en otras BBDD, y la unica forma de usar ALL seria si otorgaras los permisos con ROLES o si hubieses usado ALL PRIVILEGES con el GRANT no fue el caso? me temo que tendras entonces que hacerlo como estas intentando evitarte.


Título: Re: Eliminar todos los privilegios
Publicado por: novalida en 10 Mayo 2010, 00:50 am
Hola de nuevo!
Bueno, entonces queda resuelto, porque ni entregué los privilegios con un rol ni con all privileges así que a quitarlos uno a uno, lo que me temía  :-(

Muchas gracias por resolver la duda ^Tifa^