sql >> Base de Datos >  >> RDS >> Oracle

Crear un nuevo usuario de Oracle y otorgar privilegios:sintaxis y ejemplos

En este artículo, hablaremos sobre cómo crear un usuario en Oracle. Aprenderá cómo agregar nuevos usuarios de la base de datos, descubrirá qué aspectos complementarios implica este trabajo:desde la creación inicial del usuario hasta su eliminación. Además, encontrará algunos consejos útiles para trabajar con IDENTIFY y TABLESPACE cláusulas, así como aprender a GRANT roles y permisos en Oracle.

Contenido

  • Cómo crear un nuevo usuario en Oracle
  • Ejemplos de sintaxis de Oracle CREATE USER
  • Cómo crear usuarios predeterminados con configuraciones predeterminadas
  • Crear usuario identificado por cláusulas
    • Crear usuario identificado por cláusula de contraseña
    • Cláusulas externas y globales
  • CREAR USUARIO con cláusula Tablespace
    • Espacio de tabla predeterminado
    • Espacio de tabla temporal
    • Cuota
  • Crear atributos de usuario
    • Perfil
    • Caducidad de la contraseña
    • Bloqueo de cuenta/Desbloqueo de cuenta
  • Otorgar rol al usuario
  • Concesión de permisos en Oracle
  • Sintaxis del comando GRANT
  • Privilegios de usuario de Oracle
  • Cómo crear y otorgar todos los privilegios al usuario de Oracle
  • Cómo otorgar privilegios de tabla a un usuario en Oracle
  • Cree usuarios de Oracle y otorgue permisos fácilmente con dbForge Studio para Oracle
  • Cómo eliminar (eliminar) un usuario en Oracle
  • Conclusión

Cómo crear un nuevo usuario en Oracle

Antes de comenzar, debe verificar si tiene los privilegios de sistema necesarios para crear usuarios. De lo contrario, asegúrese de que se asignen a su cuenta. Después de eso, puede continuar con las tareas prácticas. Los ejemplos de este artículo se relacionan con la versión Oracle 19c para crear usuarios, pero los métodos son los mismos para todas las versiones de Oracle en uso (incluidas Oracle 10g, 11g, 12c, etc.).

Ejemplos de sintaxis de Oracle CREATE USER

Para empezar, analizaremos Oracle CREATE USER sintaxis. Primero, discutiremos cómo crear uno con la configuración predeterminada. Después de eso, pasaremos a las diferentes variaciones del IDENTIFIED cláusula, cláusula tablespace y otras peculiaridades del CREATE USER sintaxis en Oracle.

Cómo crear usuarios predeterminados con configuraciones predeterminadas

Siempre es mejor comenzar con lo básico. Por lo tanto, centrémonos en el CREATE USER manda por sí mismo. Tal como está, creará un usuario con atributos predeterminados. Más adelante en este artículo, veremos cómo configurar a los usuarios con mayor precisión y cómo aumenta la seguridad de la base de datos en general.

Crear usuario identificado por cláusulas

El IDENTIFIED La cláusula le permite indicar cómo la base de datos de Oracle autentica a un usuario. Echemos un vistazo más de cerca a diferentes ejemplos de IDENTIFIED sintaxis en Oracle.

Cláusula de creación de usuario identificado por contraseña

En el caso más sencillo, estamos creando un nuevo usuario local con el nombre de usuario. El usuario deberá ingresar la contraseña para iniciar sesión en el sistema:

CREATE USER <username> IDENTIFIED BY <password>;

El nombre de usuario puede ser cualquier cosa. Sin embargo, la contraseña debe constar de caracteres de un solo byte del conjunto de caracteres de la base de datos. Si el conjunto de caracteres también tiene caracteres de varios bytes, no cambia el requisito de la contraseña; use solo caracteres de un solo byte.

CREATE USER visitor
  IDENTIFIED BY psw4visits;

Cláusulas externas y globales

Además de identificarse por contraseña, puede utilizar uno de los otros dos medios de autenticación de usuario. Será configurando un usuario externo o un usuario global. Para hacerlo, debe incluir el EXTERNALLY o GLOBALLY cláusula en CREATE USER Comando de oráculo.

EXTERNALLY permite crear un usuario externo. En este caso, el usuario es autenticado por un sistema externo, como el sistema operativo. Por ejemplo, un usuario de la base de datos de Oracle es un usuario de Windows. Por lo tanto, pueden acceder a la base de datos después de ser autenticados por Windows sin ingresar otras contraseñas. Trabajar con el usuario externo es una opción estándar para los usuarios habituales de la base de datos. Pero tales usuarios solo tienen roles estándar (CONECTAR y RECURSOS), sin privilegios de administrador u operador de base de datos.

Para crear un usuario externo, ejecutamos la siguiente instrucción:

CREATE USER external_user1
  IDENTIFIED EXTERNALLY
  DEFAULT TABLESPACE tbs_new_10
  QUOTA 10M ON tbs_new_10
  PROFILE external_user_profile1;

De esta forma, hemos creado un nuevo usuario externo para nuestra base de datos. El nombre es external_user1. No se necesita contraseña adicional. Asignamos a este usuario el tablespace predeterminado tbs_new_10 con una cuota de 10 Mb. Otras limitaciones están definidas por external_user_profile1 aplicado a este usuario.

Como mencionamos anteriormente, diferentes sistemas externos pueden mantener y administrar usuarios externos en la base de datos de Oracle. Usar las capacidades del sistema operativo es la opción más común. Por lo tanto, si queremos crear un usuario de base de datos externo accesible por la cuenta del sistema en el sistema operativo, solo necesitamos modificar ligeramente nuestra declaración. Agregaremos el prefijo ops$ al nombre de usuario:

CREATE USER ops$external_user1
  IDENTIFIED EXTERNALLY
  DEFAULT TABLESPACE tbs_new_10
  QUOTA 10M ON tbs_new_10
  PROFILE external_user_profile1;

GLOBALLY permite crear usuarios globales. Significa que sus inicios de sesión y contraseñas se almacenan en Central Oracle Security Server en lugar de la base de datos específica. Además, los roles asignados a usuarios globales en ese Servidor central se aplican a este usuario en cualquier base de datos. No será necesario configurar el rol de usuario en una base de datos separada. Tenga en cuenta que debe habilitar la opción de inicio de sesión único para usuarios globales.

Para crear un usuario de base de datos global, usamos la siguiente declaración:

CREATE USER global_user1
  IDENTIFIED GLOBALLY AS 'CN=manager, OU=division, O=oracle, C=US'
  DEFAULT TABLESPACE USERS
  QUOTA 10M on USERS;

Ahora tenemos un nuevo usuario de base de datos global con el nombre de global_user1 . Asignamos USUARIOS tablespace predeterminado para ese usuario con una cotización de 10M.

CREAR USUARIO con cláusula Tablespace

Ahora, repasemos el script básico de Oracle para crear un nuevo usuario. Está a continuación:

CREATE USER username
    IDENTIFIED BY password
    DEFAULT TABLESPACE tablespace
    TEMPORARY TABLESPACE tbs_temp_01
    QUOTA {size | UNLIMITED} ON tablespace;

Como ves, el guión incluye varias cláusulas que debemos tener en cuenta:

Espacio de tabla predeterminado

Esta cláusula especifica el tablespace predeterminado para los objetos creados por el usuario. De lo contrario, dichos objetos se almacenan en el tablespace predeterminado de la base de datos. Si no hay espacios de tablas predeterminados especificados para esta base de datos en particular, los objetos entrarán en el espacio de tablas del sistema.

Restricción:no especifique el espacio de tabla temporal administrado localmente (como el espacio de tabla de deshacer o el espacio de tabla temporal administrado por diccionario) para que sea el espacio de tabla predeterminado de creación de usuario de Oracle.

Espacio de tabla temporal

Esta cláusula especifica el espacio de tablas/grupo de espacios de tablas destinado a contener los segmentos temporales del usuario. Sin él, los segmentos temporales de esos usuarios se almacenan en el tablespace temporal predeterminado de la base de datos del tablespace del sistema. Cuando especifica el grupo de espacios de tablas que incluye el valor tablespace_group_name en el script, los segmentos temporales de los usuarios se pueden guardar en cualquier espacio de tablas de ese grupo.

Nota :
Asegúrese de especificar el tablespace temporal con un tamaño de bloque estándar. No puede ser el espacio de tabla de deshacer o el espacio de tabla con gestión automática de espacio de segmento.

Cuota

Esta cláusula especifica cuánto espacio puede asignar este usuario en el tablespace. Múltiples QUOTA cláusulas en un Oracle CREATE USER El comando puede estar presente si necesita especificar varios espacios de tabla.
La cláusula puede incluir el UNLIMITED definición para permitir que este usuario definido asigne el tablespace tanto como sea necesario, sin límites.

Restricción :el QUOTA La cláusula no se aplica a espacios de tablas temporales.

Crear atributos de usuario

Hay CREATE USER de Oracle adicionales y opcionales atributos que puede incluir en la sintaxis. Echa un vistazo al siguiente ejemplo:

CREATE USER username
    IDENTIFIED BY password
    [DEFAULT TABLESPACE tablespace]
    [QUOTA {size | UNLIMITED} ON tablespace]
    [PROFILE profile]
    [PASSWORD EXPIRE]
    [ACCOUNT {LOCK | UNLOCK}];

Revisemos estas cláusulas opcionales.

Perfil

Esta cláusula opcional le permite limitar los recursos de la base de datos para este usuario específico de una vez cuando las limitaciones se definen en el perfil particular. Sin esta cláusula, un nuevo usuario pasa automáticamente al perfil predeterminado.

La contraseña expira

La cláusula es opcional, pero muchos administradores de bases de datos la configuran para una seguridad más efectiva. De incluirse, esta cláusula determinará el cambio forzoso de la contraseña por parte del usuario. Por lo general, sucede cuando el usuario intenta iniciar sesión en la base de datos por primera vez.

Bloqueo de cuenta/Desbloqueo de cuenta

Puede utilizar una de estas cláusulas. Con LOCK aplicado, Oracle crea la cuenta de usuario, pero esa cuenta no tendrá acceso a la base de datos. Si aplica el UNLOCK cláusula o no especifica ninguna de estas dos cláusulas, la cuenta se podrá utilizar de inmediato. El estado desbloqueado es el predeterminado.

El CREATE USER declaración con estos parámetros adicionales sería la siguiente:

CREATE USER visitor
    IDENTIFIED BY migzw23ter
    DEFAULT TABLESPACE tbs_new_10
    QUOTA 50M ON tbs_new_10
    TEMPORARY TABLESPACE tbs_temp_10
    QUOTA 5M ON system 
    PROFILE qualified_user
    PASSWORD EXPIRE;
ACCOUNT UNLOCK	

Aquí, la declaración crea un nuevo usuario de la base de datos de Oracle llamado visitante , con la contraseña migzw23ter . A este usuario se le asigna el tablespace predeterminado tbs_new_10 con una cuota de 50Mb. Este usuario también puede usar el tablespace temporal tbs_temp_10 .

Otorgar rol al usuario

El primer paso es la creación de un usuario. El siguiente es establecer los derechos del usuario. Un usuario recién creado no puede hacer nada, ni siquiera conectarse a la base de datos.

Trabajar con bases de datos Oracle incluye inevitablemente la tarea de crear usuarios de bases de datos. Existen las cuentas de usuario del sistema que Oracle crea por sí mismo:hr , EO , sistema , etc. Estas cuentas tienen configuraciones predefinidas con derechos y limitaciones. Sin embargo, el trabajo diario siempre requerirá de otros usuarios.

Uno de los deberes del DBA es crear usuarios de bases de datos adicionales. El trabajo incluye configurar las cuentas de usuario, establecer privilegios y administrar usuarios de acuerdo con los objetivos comerciales.

Concesión de permisos en Oracle

Mediante el uso de GRANT comando, puede proporcionar a los usuarios ciertos privilegios y configurar sus roles de acuerdo con sus necesidades. En Oracle, puede otorgar su permiso a otros para que puedan manipular y administrar los datos en su base de datos. GRANT es una declaración muy poderosa con muchas opciones posibles, pero la funcionalidad principal es administrar los privilegios de los usuarios y roles en toda la base de datos.

Sintaxis del comando GRANT

La sintaxis básica de la consulta para otorgar ciertos privilegios al usuario es la siguiente:

GRANT <permission> to <user>;

Privilegios de usuario de Oracle

El GRANT El comando puede otorgar a los usuarios privilegios para crear, modificar, descartar y administrar objetos de la base de datos. Por ejemplo, los privilegios para crear tablespaces y eliminar las filas de cualquier tabla en una base de datos son privilegios del sistema.

Oracle tiene más de 100 privilegios de sistema que se pueden encontrar en la tabla SYSTEM_PRIVILEGE_MAP.

GRUPO CREAR/CREAR CUALQUIER/CAMBIAR CUALQUIER/ELIMINAR CUALQUIER CLÚSTER
BASE DE DATOS ALTER DATABASE, ALTER SYSTEM, AUDIT SYSTEM
ÍNDICE CREAR CUALQUIER/CAMBIAR CUALQUIER/BOTAR CUALQUIER ÍNDICE
PERFIL CREAR/ALTERAR/BOTAR PERFIL
FUNCIÓN CREAR/ALTERAR CUALQUIER/DEJAR CUALQUIER/CONCEDER CUALQUIER (permite REVOCAR)
Revertir segmento CREAR/ALTERAR/ELIMINAR SEGMENTO DE RETROCESO
USUARIO CREAR/CAMBIAR/CONVERTIRSE EN UN USUARIO
VER CREAR/CREAR CUALQUIER/BOTAR CUALQUIER VISTA
SINÓNIMO CREAR/CREAR CUALQUIER/CREAR PÚBLICO/ELIMINAR CUALQUIER/ELIMINAR SINÓNIMO PÚBLICO
SESIÓN CREAR/ALTERAR/SESIÓN RESTRINGIDA, ALTERAR EL COSTO DE LOS RECURSOS
TABLA CREAR/CREAR CUALQUIER/CAMBIAR CUALQUIER/DEJAR CUALQUIER/SELECCIONAR CUALQUIER/INSERTAR CUALQUIER/ACTUALIZAR CUALQUIER/ELIMINAR CUALQUIER/BLOQUEAR CUALQUIER TABLA
ESPACIO DE MESA CREAR/ALTERAR/SOLTAR/GESTIONAR ESPACIO DE MESA

Por lo general, el administrador de una base de datos otorga los privilegios a los usuarios. Sin embargo, hay casos en los que el administrador necesita transferir sus privilegios de usuario de Oracle. Aquí es cuando entran los privilegios de DBA. Si un DBA necesita proporcionar privilegios del sistema a otra persona, debe hacerlo con la opción de administrador:

GRANT create session TO user;
GRANT create session TO user with admin option;
Revoke create session from user;

Además de los privilegios del sistema Oracle, se otorgan privilegios de objeto sobre los objetos de la base de datos:tablas, vistas, procedimientos, etc.

Cómo crear y otorgar todos los privilegios al usuario de Oracle

Primero, debemos otorgar a nuestros usuarios el privilegio del sistema para iniciar sesión en la base de datos. Usamos la siguiente declaración para eso:

GRANT CREATE SESSION to visitor;

Hay muchos permisos que el administrador de la base de datos puede proporcionar al usuario. Pero es esencial ceñirse al concepto principal de seguridad, que consiste en otorgar a los usuarios el mínimo de privilegios necesarios para realizar el trabajo de manera eficiente. Es por eso que no se recomienda proporcionar todos los privilegios al usuario.

Puede aplicar otros privilegios uno por uno, cada uno mediante una declaración separada. O bien, es posible combinar estos permisos en uno, como se muestra a continuación:

GRANT CREATE VIEW, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER to visitor;

Si a este usuario definitivo se le permite cambiar tablas, procedimientos, activadores, etc., a continuación se muestra la sintaxis para establecer el privilegio necesario para cada caso. Nuevamente, tenga mucho cuidado al permitir que el usuario cambie cualquier elemento, ya que este permiso es global.

GRANT ALTER ANY TABLE to visitor;
GRANT ALTER ANY PROCEDURE to visitor;
GRANT ALTER ANY TRIGGER to visitor;

Para permitir que el usuario elimine elementos, usamos las siguientes declaraciones:

GRANT DELETE ANY TABLE to visitor;
GRANT DROP ANY PROCEDURE to visitor;
GRANT DROP ANY TRIGGER to visitor;
GRANT DROP ANY VIEW to visitor;

Cómo otorgar privilegios de tabla a un usuario en Oracle

Antes de establecer los privilegios para un usuario en particular, debe considerar qué tareas debe realizar esa persona en la base de datos. Los escenarios más comunes incluyen la creación de tablas, vistas, procedimientos, disparadores. Algunos casos requieren la posibilidad de cambiar o eliminar esos elementos. Dependiendo de la situación, el administrador define qué privilegios del sistema otorgar.

Echemos un vistazo más de cerca a cómo otorgar CREATE TABLE privilegio a un usuario en Oracle. Si estamos dispuestos a permitir que nuestro usuario – visitante – para crear tablas en la base de datos, utilizaremos la siguiente consulta:

GRANT CREATE TABLE to visitor;

Cree usuarios de Oracle y otorgue permisos fácilmente con dbForge Studio para Oracle

Si trabaja con bases de datos de Oracle a diario y busca un IDE poderoso todo en uno conveniente, su búsqueda termina aquí. dbForge Studio para Oracle ayuda a los desarrolladores a acelerar la codificación PL/SQL, proporciona herramientas de edición de datos versátiles para administrar datos internos y externos.

En este artículo, crearemos un usuario de Oracle y otorgaremos privilegios de DBA mediante este script multipropósito:

DECLARE
 schema_name VARCHAR2(255):='username1'; -- Insert your username instead of 'username1'
 row_count NUMBER;
BEGIN
 FOR r IN (SELECT sid,serial# FROM v$session WHERE username = schema_name)
 LOOP
   EXECUTE IMMEDIATE 'ALTER SYSTEM DISCONNECT SESSION ''' || r.sid || ',' || r.serial# || ''''||' IMMEDIATE';
   EXECUTE IMMEDIATE 'ALTER SYSTEM KILL SESSION ''' || r.sid || ',' || r.serial# || '''';
 END LOOP;

 SELECT count(*) INTO row_count FROM dba_users WHERE username = schema_name;
 IF row_count > 0 THEN
   EXECUTE IMMEDIATE 'DROP USER '||schema_name||' CASCADE';
 END IF;
 EXECUTE IMMEDIATE 'CREATE USER '||schema_name||' IDENTIFIED BY ' || schema_name;
 EXECUTE IMMEDIATE 'GRANT dba TO '|| schema_name;
 EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA = '||schema_name;
END;
/ 

Lo que estamos haciendo en el script proporcionado es:

  • creando un nuevo usuario
  • otorgar privilegios de DBA al usuario recién creado
  • establecer el usuario recién creado como predeterminado para la sesión actual

En Oracle, los usuarios y los esquemas son esencialmente lo mismo. Puedes considerar que un usuario es una cuenta para conectarse a una base de datos, y un esquema es el conjunto de objetos que pertenecen a esa cuenta. El esquema recién creado está vacío y, por lo tanto, no se mostrará en Explorador de base de datos .

Vamos a crear un departamentos tabla para que el nuevo usuario aparezca en la lista. Para hacer eso, siéntete libre de usar el siguiente script:

CREATE TABLE departments (
  department_id NUMBER CONSTRAINT PK_DepID PRIMARY KEY,
  department_name varchar2(255) NOT NULL,
  location_id NUMBER  NOT NULL);

Tenga en cuenta que no tiene que abrir un documento SQL diferente para esta operación. dbForge Studio para Oracle le permite ejecutar el código solo parcialmente. Simplemente seleccione CREATE TABLE cláusula, haga clic con el botón derecho y elija Ejecutar selección .

Si tiene el AutoComit función ON, el paso anterior será el último. Sin embargo, si está desactivado, deberá confirmar los cambios. Luego, al actualizar el Explorador de bases de datos, verá username1 en la lista.

Hay instancias en las que las sesiones antiguas siguen ejecutándose en el servidor. Pueden interferir con la ejecución de nuevos comandos. En el código anterior, todas las sesiones antiguas se ubican y eliminan automáticamente del servidor. Si necesita reiniciar su sesión actual, puede desconectarla o eliminarla usando una de estas consultas:

  • ALTER SYSTEM DISCONNECT SESSION
  • ALTER SYSTEM KILL SESSION

Cómo Eliminar (Drop) Usuario en Oracle

En caso de que necesite eliminar a algún usuario por cualquier motivo, debe usar el DROP USER comando con la siguiente sintaxis:

DROP USER <username>;

En nuestro caso de prueba, estamos eliminando al usuario visitante creado anteriormente:

DROP USER visitor;

Sin embargo, hay varias restricciones a las que debe prestar atención antes de eliminar al usuario:

  • No puede eliminar usuarios sin eliminar todos los objetos relacionados. Por lo tanto, debe descartar todas las tablas, vistas, procedimientos, etc. que este usuario creó antes de continuar con el comando DROP.
  • No puede eliminar usuarios que están conectados a la base de datos. Primero, debe borrar todas las sesiones que tuvo el usuario. Después de eso, puede eliminar al usuario mismo.

Hay un comando especial que permite soltar al usuario con todos sus objetos de base de datos de una sola vez:

DROP USER <username> CASCADE;

Conclusión

Resumiendo, ahora puede usar Oracle SQL CREATE USER comando para agregar nuevos usuarios, configurarlos y administrarlos. Usamos los ejemplos para la ejecución manual. Sin embargo, las capacidades de las modernas soluciones de software para bases de datos Oracle pueden simplificar este trabajo, hacerlo más rápido y preciso. No dude en probar dbForge Studio con un .

Enlaces útiles

  • Configuración de una nueva cuenta de usuario en Oracle
  • Herramientas de administración de bases de datos de Oracle
  • Crear una base de datos en Oracle
  • Tabla de cambio de nombre de Oracle
  • Oracle Alter Table