oracle - liquibase 用户的 Oracle 角色
问题描述
我正在努力在连接到 Oracle DB 的 Spring Boot 应用程序中添加 liquibase。我对在我的应用程序中使用模式 ID 感到不舒服。所以我想创建另一个用户 ID,用于从我的应用程序连接到数据库。由于我使用的是 liquibase,因此这个新用户 ID 需要在该模式中的所有表上创建、删除、选择、插入、更新、删除。
在 Mysql 中,我可以运行以下命令:
GRANT CREATE,DROP,SELECT,INSERT,UPDATE,DELETE ON SCHEMA_NAME.* TO 'liquidbase_local_usr'@'localhost';
Oracle中有类似的查询吗?
解决方案
我使用基于 Liquibase 的 Datical 产品做到了这一点。
首先,我创建了一个名为 DATICAL_PACKAGER_ROLE 的角色并将其分配给用户 $DaticalUser:
CREATE ROLE DATICAL_PACKAGER_ROLE NOT IDENTIFIED;
-- When using the tracefileLocation=REMOTE, you will need to setup the following permissions.
-- Note: These permissions are only required on schemas running the Convert SQL Scripts command. This is only needed on the packaging / reference database.
GRANT EXECUTE ANY PROCEDURE TO DATICAL_PACKAGER_ROLE;
GRANT ALTER SESSION TO DATICAL_PACKAGER_ROLE;
GRANT CREATE ANY DIRECTORY TO DATICAL_PACKAGER_ROLE;
GRANT DROP ANY DIRECTORY TO DATICAL_PACKAGER_ROLE;
-- The following permissions are needed for backing up and restoring the database. This is only needed on the packaging / reference database.
GRANT EXP_FULL_DATABASE TO DATICAL_PACKAGER_ROLE;
GRANT IMP_FULL_DATABASE TO DATICAL_PACKAGER_ROLE;
-- The following must be run as sysdba
-- SQL > conn / as sysdba
GRANT EXECUTE on SYS.UTL_FILE TO DATICAL_PACKAGER_ROLE;
-- Grant the new role to the Datical User
GRANT DATICAL_PACKAGER_ROLE to $DaticalUser;
然后我将角色授予我想要的架构:
GRANT DATICAL_PACKAGER_ROLE to <yourschema>;
推荐阅读
- java - reactor.core.publisher.FluxFilter$FilterSubscriber.onNext 的线程“main”java.lang.NullPointerException 中的异常
- gcc - cuda-7.5 未定义标识符“__shfl_down”
- c# - 按下按钮时尝试使用 fillAmount 填充重新加载栏
- c# - 何时使用 Task.Run().GetAwaiter().GetResult() 和 ().GetAwaiter.GetResult()?
- pycharm - 在 PyCharm 中,是否可以通过粘贴将文本连接到现有环境变量中?
- kubernetes - 使用 LB 和入口设置 Kubernetes
- android - 错误:javax.net.ssl.SSLHandshakeException - Nativescript
- javascript - 使用套接字 io 将数据传递给 html 表
- r - 关于 Weibull 分布卷积的积分问题
- swift - 对于组合主题类型,“上游订阅”是什么意思?