oracle创建用户,只能访问指定表,给第三方接口用

oracle创建一个用户,只能访问指定表,给第三方接口用,注意表安全,会话数限制。

如果你要对最小用户设置更低权限,我建议你还可以去了解下行列安全性和Kerberos身份验证,不过你服务的厂商不会像我们接触的外企要求那么高把,你要是英文可以的话直接看这个链接:https://blog.devart.com/how-to-create-oracle-user.html
讲的比较清楚了


CREATE USER oracletest1 IDENTIFIED BY 123456;
GRANT SELECT ON table TO oracletest1 ;
ALTER USER oracletest1 LIMIT SESSIONS 1;

CREATE ROLE role;
GRANT SELECT ON table TO role;

GRANT role TO oracletest1;
ALTER USER oracletest1  DEFAULT TABLESPACE tablespace QUOTA 10M ON tablespace;



基于new bing的编写:
您可以按照以下步骤创建一个只能访问指定表的用户,并设置会话数限制,提高表的安全性:

连接到您的 Oracle 数据库,使用具有适当特权的管理员帐户(比如 SYS 或 SYSTEM)。

创建新用户:

CREATE USER <username> IDENTIFIED BY <password>;

其中 是您想要创建的新用户的名称, 是该用户的密码。

授予该用户只读访问指定表的权限:

GRANT SELECT ON <table> TO <username>;

其中

是您想要该用户访问的表的名称。

限制该用户的会话数:

ALTER USER <username> PROFILE <profile_name>;

其中 是一个已经被定义好的 profile 名称,该 profile 中应该包含有对该用户会话数进行限制的设置。如果您还没有创建相关的 profile,可以使用以下语句创建一个:

CREATE PROFILE limited_sessions LIMIT SESSIONS_PER_USER 1;

该语句创建了一个名为 limited_sessions 的 profile,限制了每个用户最多只能在数据库中有一个会话。

确保该用户不能修改任何的数据库结构或数据:


REVOKE ALL PRIVILEGES FROM <username>;

该语句将该用户从所有的权限中删除,包括修改表结构和数据的权限。

确保该用户不能通过 SQL*Plus 或其他类似工具来访问数据库:


ALTER USER <username> ACCOUNT LOCK;

该语句将该用户的账户锁定,防止其通过 SQL*Plus 或其他工具访问数据库。

请注意:在创建新用户并授予权限之前,请确保已经为该表设置了适当的安全措施,并且只有需要访问该表的人员才能够获得访问权限。此外,在限制会话数时,请确保不会影响到其他合法用户的正常操作。

引用chatGPT作答,要创建一个只能访问指定表的Oracle用户,可以按照以下步骤进行:

1.首先登录到Oracle数据库,并以sysdba或sysoper角色运行。

2.创建一个新用户,例如“interface_user”,可以使用以下命令:

CREATE USER interface_user IDENTIFIED BY password;

3.授予该用户连接到数据库的权限,以及访问指定表的权限。例如,如果要允许该用户只能访问“mytable”表,可以使用以下命令:

GRANT CREATE SESSION TO interface_user;
GRANT SELECT ON mytable TO interface_user;

4.限制该用户的会话数。这可以通过在用户创建时指定“PROFILE”来实现,例如:

CREATE USER interface_user IDENTIFIED BY password PROFILE limited_sessions;

其中“limited_sessions”是一个预定义的配置文件,可以限制用户的会话数。

5.确保表的安全性。这可以通过确保该表没有不必要的权限来实现,例如使用以下命令:

REVOKE ALL ON mytable FROM PUBLIC;

这将取消所有公共用户对表的权限,从而确保只有特定用户可以访问该表。

以上是创建一个只能访问指定表的Oracle用户的基本步骤,可以根据实际需要进行进一步的配置和调整。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/6375741
  • 除此之外, 这篇博客: Oracle归档开启、关闭及清理,添加定时任务中的 五、Oracle开启和关闭归档 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1.登录
    sqlplus sys/sys as sysdba
    2.查看当前归档模式
    archive log list;
    查看归档状态
    select log_mode from v$database;
    查看归档使用情况
    select * from v$flash_recovery_area_usage;
    3.关闭数据库
    shutdown immediate;
    4.启动数据库到mount状态
    startup mount;
    5.启动归档模式
    alter database archivelog;
    关闭归档模式
    alter database noarchivelog;
    6.启动数据库
    alter database open;

    [oracle@ZCD2GBAD01 ~]$ sqlplus sys/sys as sysdba

    SQL*Plus: Release 11.2.0.4.0 Production on Thu Feb 28 17:36:19 2019

    Copyright (c) 1982, 2013, Oracle.  All rights reserved.


    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> archive log list;
    Database log mode        No Archive Mode
    Automatic archival        Disabled
    Archive destination        USE_DB_RECOVERY_FILE_DEST
    Oldest online log sequence     6509
    Current log sequence        6511
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount;
    ORACLE instance started.

    Total System Global Area 1068937216 bytes
    Fixed Size      2260088 bytes
    Variable Size    671089544 bytes
    Database Buffers   390070272 bytes
    Redo Buffers      5517312 bytes
    Database mounted.
    SQL> alter database archivelog;

    Database altered.

    SQL> alter database open;

    Database altered.

    SQL> archive log list;
    Database log mode        Archive Mode
    Automatic archival        Enabled
    Archive destination        USE_DB_RECOVERY_FILE_DEST
    Oldest online log sequence     6509
    Next log sequence to archive   6511
    Current log sequence        6511

  • 您还可以看一下 李兴华老师的Oracle数据库课程中的 Oracle安装与配置小节, 巩固相关知识点

可以按照以下步骤创建一个用户,只能访问指定表,并设置会话数限制:

1、登录到Oracle数据库中的管理员账号,在SQLPLUS界面下输入以下命令进行登录:

sqlplus / as sysdba

2、使用以下语句创建新用户,并授予 SELECT 权限:

CREATE USER username IDENTIFIED BY password;

用户名和密码可自行设置,将 替换为你想要授权给该用户访问的表名,如下所示:

GRANT SELECT ON <table_name> TO username;

3、使用以下命令授予其会话数限制:

ALTER USER username LIMIT SESSIONS <number>;

其中, 为限制的会话数。

4、如果需要取消该用户的访问权限和会话数限制,可以使用以下命令:

REVOKE SELECT ON <table_name> FROM username;
ALTER USER username DISABLE;
DROP USER username;

请注意,为了保证表的安全性,需要确保该用户没有其他表的访问权限,并且在向第三方接口提供该用户的访问权限时,需要严格限制其可执行的操作。否则,可能会导致数据泄露和其他安全问题。

要实现oracle创建一个用户,只能访问指定表,并限制会话数,可以按照以下步骤进行操作:

  1. 创建一张所有用户都能访问的公共表,并创建专用用户只能访问该表。

  2. 对于需要访问的被保护表,使用GRANT命令给专用用户授权,使其可以读取、修改该表。

  3. 创建一个数据库访问控制逻辑实现用户和表之间的映射,当专用用户需要访问被保护表时,先经过该逻辑进行权限验证和访问控制。

  4. 使用Oracle Resource Manager限制专用用户的会话数量,避免过多的连接占用资源。

具体操作步骤如下:

  1. 创建一个公共表,例如"shared_table",所有用户都能够访问。创建专用用户"limited_user"并限制其只能访问公共表。
CREATE TABLE shared_table (id NUMBER, name VARCHAR2(30));
CREATE USER limited_user IDENTIFIED BY password DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp PROFILE default ACCOUNT UNLOCK;
GRANT CONNECT TO limited_user;
GRANT CREATE SESSION TO limited_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON shared_table TO limited_user;
  1. 给protected_table表授权,该表只允许limited_user访问。
GRANT SELECT, INSERT, UPDATE, DELETE ON protect_table TO limited_user;
  1. 创建一个访问控制逻辑,实现用户和表之间的映射。
CREATE VIEW protected_table AS SELECT * FROM shared_table WHERE 1=0;
CREATE TRIGGER protect_table_Instead_of_trigger
INSTEAD OF SELECT, INSERT, UPDATE, DELETE
ON protected_table
BEGIN
  IF (USER = 'limited_user') THEN
    RAISE_APPLICATION_ERROR(-20999, 'User is not authorized to access this table.');
  ELSE
    IF (INSERTING) THEN
      INSERT INTO shared_table (id, name) VALUES (:new.id, :new.name);
    ELSIF (UPDATING) THEN
      UPDATE shared_table SET name = :new.name WHERE id = :old.id;
    ELSIF (DELETING) THEN
      DELETE FROM shared_table WHERE id = :old.id;
    END IF;
  END IF;
END;
  1. 使用Oracle Resource Manager限制limited_user的会话数。
ALTER PROFILE default LIMIT SESSIONS_PER_USER 1;
ALTER USER limited_user PROFILE default;

通过上述操作,我们就可以创建一个仅能访问指定表并且限制会话数的专用用户。保证了表的安全和数据的安全性。