Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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:


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 (sql) [Seleccionar]

REVOKE NOMBRE_ROL FROM USUARIO


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

Código (sql) [Seleccionar]

ALTER USER  NOMBRE_USUARIO  QUOTA  0  ON  NOMBRE_TABLESPACE


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

Código (sql) [Seleccionar]

REVOKE  ALL  ON  TABLA  FROM  USUARIO
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 (sql) [Seleccionar]
REVOKE ALL PRIVILEGES FROM  USUARIO

o

Código (sql) [Seleccionar]
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 (sql) [Seleccionar]
GRANT INSERT ON USUARIO.TABLA TO USUARIO
Código (sql) [Seleccionar]
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 (sql) [Seleccionar]
REVOKE ALL PRIVILEGES ON TABLA FROM USUARIO

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

Código (sql) [Seleccionar]
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^