You are on page 1of 8

4.3.

Privilegios de usuarios
*
*

*
*
*
*
*

4.3. Privilegios de usuarios



Una vez creados los usuarios ser necesario dotarlos de privilegios para que puedan realizar
operaciones especcas en la base de datos. Estos privilegios suelen clasicarse en privilegios del
sistema (operaciones que afectan a todo el sistema) y privilegios de objeto (tablas, vistas, etc.). Para
conocer los privilegios y su sintaxis es necesario consultar los manuales de referencia de su SGBD.

SELECT * FROM system_privilege_map;

Las sentencias GRANT y REVOKE permiten a los administradores de SGBD crear cuentas de usuario,
conceder y revocar derechos de esas cuentas.

GRANT CONNECT, RESOURCE, CREATE TABLE TO usuarioLimitado;

La informacin sobre cuentas MySQL se almacena en las tablas de la base de datos mysql. Los
privilegios pueden ser concedidos en varios niveles:

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

*
*

La informacin sobre cuentas MySQL se almacena en las tablas de la base de datos mysql. Los privilegios pueden ser concedidos
en varios niveles:


Nivel global

Los privilegios globales se aplican a todas las bases de datos de un servidor dado. Estos privilegios se almacenan en la tabla
mysql.user.
GRANT ALL ON *.* y REVOKE ALL ON *.*
concenden y revocan slo privilegios globales.

Nivel de base de datos

Los privilegios de base de datos se aplican a todos los objetos en una base de datos dada. Estos privilegios se almacenan en las
tablas mysql.db y mysql.host.
GRANT ALL ON db_name.* y REVOKE ALL ON db_name.*
otorgan y revocan slo privilegios de base de datos.

Nivel de tabla

Los privilegios de tabla se aplican a todas las columnas de una tabla dada. Estos privilegios se almacenan en la tabla
mysql.tables_priv.
GRANT ALL ON db_name.tbl_name y REVOKE ALL ON db_name.tbl_name
conceden y revocan nicamente privilegios de tabla.

Nivel de columna

Los privilegios de columna se aplican a una columna individual en una tabla dada. Estos privilegios se almacenan en la tabla
mysql.columns_priv. Cuando se usa REVOKE, se deben especicar las mismas columnas que cuando se concedieron los
privilegios.

Nivel de procedimiento

Los privilegios CREATE ROUTINE, ALTER ROUTINE, EXECUTE y GRANT se aplican a procedimientos almacenados. Pueden ser
concedidos en los niveles global y de base de datos. Adems, excepto para CREATE ROUTINE, estos privilegios pueden ser
concedidos en el nivel de procedimiento para procedimientos individuales y se almacenan en la tabla mysql.procs_priv. Para
hacer ms sencillo revocar todos los privilegios, MySQL aadido la siguiente sintaxis, que elimina todos los privilegios de los
niveles de global, de base de datos, tabla y columna para los usuarios nombrados:

* mysql> REVOKE ALL PRIVILEGES, GRANT OPTION


FROM usuario [, usuario] ...
*
Asignar todos los privilegios menos los GRANT
OPTION
*
GRANT ALL ON *.* TO miUsuario
* Mostrar los privilegios del usuario
3

4.4. Roles

* Un rol es una coleccin de privilegios del sistema y de objetos que se otorgan a
usuarios y a otras tareas. Oracle dispone de muchos roles predeterminados mientras
que MySQL no los soporta.
*
El rol CONNECECT permite al usuario conectarse a la base de datos, crear tablas, vistas,
secuencias, sinnimos y otros objetos en el esquema asociado.
*
El rol RESOURCE permite permite al usuario utilizar los recursos tpicos para la
programacin de aplicaciones (clusters, disparadores, paquetes, funciones, etc.)
*
El rol DBA, tpico de los administradores, permite al usuario realizar cualquier funcin
de base de datos y disponer de cualquier privilegio
*
La sentencia que permite crear roles es CREATE ROL. Su sintaxis es la siguiente

* CREATE ROLE rol [ NOT IDENTIFIED | IDENTIFIED {BY


password | USING [usuario.] paquete | EXTERNALLY |
GLOBALLY } ];
*
NOT IDENTIFIED indica que no se requiere contrasea
para utilizar el rol, INDENTIFIED BY password indica
que se requiere la contrasea especicada.
EXTERNALLY crea un rol de usuario externo y
GLOBALLY crea un rol de usuario global.
5

* Ejemplo: Crear un rol y asignarle privilegios


*
CREATE ROLE miPrimerRole; GRANT SELECT, INSERT, UPDATE, DELETE ON tabla TO
miPrimerRole;
*
Ejemplo: Crear un rol y asignarle todos los privilegios
*
CREATE ROLE miPrimerRole; GRANT all ON tabla TO miPrimerROLE;
*
Ejemplo: Asignar un rol a un usuario
*
GRANT miPrimerRole TO miUsuario;
*
Ejemplo: Eliminar un rol
*
DROP ROLE miPrimerRole;
6

4.5. Vistas


Una vista es una tabla virtual cuyo contenido est denido por una consulta..
*

Una vista es sencillamente un objeto de base de datos que presenta datos de tablas. Se trata de una consulta SQL que est
permanentemente almacenada en la Base de datos y a la que se le asigna un nombre, de modo que los resultados de la consulta
almacenada son visibles atravs de la vista, y SQL permite acceder a estos resultados como si fueran de hecho una tabla real en la
base de datos.
*

Las tablas y las vistas comparten el mismo espacio de nombres en la base de datos, por lo tanto, una base de datos no puede
contener una tabla y una vista con el mismo nombre.
*

Las vistas suelen utilizarse para centrar, simplicar y personalizar la percepcin de la base de datos para cada usuario. Las vistas
pueden emplearse como mecanismos de seguridad, que permiten a los usuarios obtener acceso a los datos por medio de la vista,
pero no les conceden el permiso de obtener acceso directo a las tablas subyacentes de la vista. Las vistas se pueden utilizar para
realizar particiones de datos y para mejorar el rendimiendo cuando se copian, se importan y se exportan datos.
*

Mediante vistas es posible presentar datos de distintos servidores. Por ejemplo, para combinar datos de distintos servidores
remotos o en un servidor de multiples procesadores, cada uno de los cuales almacenan datos para una regin distinta de su
organizacin, puede crear consultas distribuidas o paralelas aumentando la eciencia de las consultas.
*

Mediante diversas clusulas es factible crear, modicadar, eliminar y administrar vistas. La sintaxis bsica para estas clusulas es
generica entre diversos gestores de base de datos. Sin embargo en lo particular cada gestor implementa la administracin de
estas de forma diferente. En este documentos se presenta la sintaxis particular dee Oracle 10g, comparando en forma generica
con MySQL 5.

* La sintaxis bsica de una vista (Oracle y MySQL) es:


*
CREATE VIEW nombre_vista AS consulta;
*
Sintaxis CREATE VIEW

*
CREATE [OR REPLACE] VIEW nombre_vista AS sentencia_select
[WITH [CASCADED | LOCAL] CHECK OPTION] WITH READ ONLY
* CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE |
TEMPTABLE}] VIEW nombre_vista [(columnas)] AS
sentencia_select [WITH [CASCADED | LOCAL] CHECK OPTION]
8

You might also like