我有一个使用 SQL Server 身份验证的 SQL Server 默认实例和两个用户 User1 和 User2。
User1 具有公共服务器角色,而 User2 具有公共服务器角色 + sysadmin 服务器角色。
我创建了一个数据库 sptest1。在该数据库中,我创建了一个存储过程,sp_viewtbl并创建了一个架构。使用模式我已禁用为 User1 执行存储过程并且它可以工作。
如何拒绝具有 sysadmin 服务器角色的 User2 执行存储过程?
假设我创建了 User3 并授予了 sysadmin 和 public 权限。那么如何防止新用户执行相同的存储过程呢?sp_viewtbl即使他们具有系统管理员权限,我也必须防止其他人登录。
我开始学习 Oracle 12c,所以请原谅我用的不好的术语。我编写了这个基本脚本来设置用户和权限:
CREATE USER wertyq_db_usr IDENTIFIED BY justatest ACCOUNT UNLOCK DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" PROFILE "DEFAULT";
ALTER USER wertyq_db_usr QUOTA 100M ON USERS;
GRANT RESOURCE, CONNECT TO wertyq_db_usr;
GRANT EXECUTE ON CTX_DDL TO wertyq_db_usr;
GRANT EXECUTE ON "CTXSYS"."CTX_DDL" TO wertyq_db_usr;
GRANT UNLIMITED TABLESPACE TO wertyq_db_usr;
CREATE ROLE wertyq_usr_role;
GRANT CREATE PROCEDURE TO wertyq_usr_role;
GRANT CREATE TRIGGER TO wertyq_usr_role;
GRANT CREATE SESSION TO wertyq_usr_role;
GRANT CREATE VIEW TO wertyq_usr_role;
GRANT wertyq_usr_role TO wertyq_db_usr;
Run Code Online (Sandbox Code Playgroud)
目标是创建用户和角色,然后为角色授予权限,然后将角色分配给用户,以便用户继承权限。我还应该提到我可以以SYSTEM用户身份连接到数据库。
但是,我也在使用一个第三方应用程序,它应该使用上面创建的这个用户连接到我的 Oracle …
我们有 4 个包含不同程序和功能的数据库。到目前为止,实际应用程序只能使用 sa 帐户访问数据库,现在我想将应用程序更改为使用 sa 帐户以外的其他帐户。为此,我需要创建一个新的 SQL 登录名并为该登录名分配某些权限。有没有类似脚本的方法来确定我需要为新创建的用户分配什么权限?
stored-procedures permissions role functions sql-server-2014
我对 postgres dbms 有一个完全好奇的情况。我已经安装了数据库,由于我的安装脚本配置错误,我将超级用户角色设置为普通用户。现在我有一个完全全新的 postgres 安装,只有模板数据库和一个几乎什么都不做的单个用户“postgres”。我怎样才能让 postgres 用户再次成为超级用户?
我尝试在 ubuntu 12.04 下重新安装服务器,aptitude reinstall postgresql-9.1但角色似乎不受影响。很可能是因为重新安装不会影响记录角色的文件。
我们在 11.2 数据库中有几个 dbms_scheduler 作业,我们希望具有特定角色的用户能够运行这些作业。因此,我们不想将直接运行的能力授予用户,因为它会更难以维护。
根据 Oracle 的文档,授予ALTER JOB用户权限将允许他们运行作业。不幸的是,这似乎并没有扩展到角色:我可以GRANT很好地运行该语句,并且该作业向ALL_SCHEDULER_JOBS用户显示,但尝试运行该作业会导致以下错误:
ORA-27476: "S1.J1" does not exist
ORA-06512: at "SYS.DBMS_ISCHED", line 185
ORA-06512: at "SYS.DBMS_SCHEDULER", line 486
ORA-06512: at line 1
Run Code Online (Sandbox Code Playgroud)
鉴于 DBMS_SCHEDULER 是 AUTHID USER,但 DBMS_ISCHED 是 AUTHID DEFINER,我是不是运气不好?或者有什么方法可以将它授予角色而不是用户?
有没有办法区分系统角色/用户和用户定义的角色/用户?作为系统角色/用户,我了解在创建数据库时隐式安装/分配的角色/用户。作为用户定义的角色/用户,我理解之后“手动”创建的角色/用户。
我发现的唯一方法是查看结果
select * from sys.database_principals order by create_date, is_fixed_role desc
Run Code Online (Sandbox Code Playgroud)
或者通过将结果与新创建的数据库进行比较。还有其他方法吗?
我试图了解我是否可以删除“postgres”角色,或者至少将其作为超级用户删除。谢谢!
我正在使用 GUI 工具在我的 SQL Server 2016 数据库中上传数据。用于上述任务的用户已被授予 sysadmin 权限,我创建了一个专用架构来存储上述数据。这个架构是拥有的,默认为上述用户。问题是,当我上传数据时,它存储在 dbo 模式而不是专用模式中,我无法从该用户那里撤销 sysadmin priv。
请让我知道如何在不撤销 sysadmin priv 的情况下将数据上传到这个专用模式?
谢谢
在数据库中,我创建了一个具有以下角色的用户:
问题是我不想更改用户的角色,但我想授予恢复数据库的权限。
是否有解决方法只授予还原权限但不删除或更改数据库?
背景资料:
我工作的公司创建了一个应用程序,他们希望该应用程序的用户有权备份和恢复数据库,但不能创建另一个数据库或删除现有数据库。而且,他们不希望有另一个具有 角色的用户db_owner,这将允许客户随心所欲地操纵事物。
该应用程序的价格取决于客户拥有的员工人数,因此在客户端安装该应用程序时,他们使用一个文件来创建一个数据库,在其中指定所有详细信息(包括员工人数),但他们担心有人可能会多次更改文件并添加数据库,因此他们希望通过不授予任何用户执行任何操作的权限来保护实例。这很复杂,但这正是他们想要的。
role ×10
permissions ×5
sql-server ×4
oracle ×2
postgresql ×2
functions ×1
jobs ×1
oracle-12c ×1
restore ×1
schema ×1
security ×1
t-sql ×1
users ×1