information_schema.role_table_grants当我public在grantee专栏中看到时我正在看,然后我检查了information_schema.enabled_roles但是这个role_name不存在。
=> 谁或什么public角色?
我被要求为数据库中的所有表授予SELECT,INSERT和UPDATE给定用户。我最终将用户添加到db_datareader,并给予他们INSERT与UPDATE在数据库级别。
但这让我想到,SELECT在数据库级别授予用户权限或将它们添加到db_datareader角色之间有什么区别(如果有)?是否有任何一种或另一种最佳实践?
是否有任何内置方法将 Oracle 数据库角色映射到 Microsoft Active Directory 组?
我们有一个包含 1000 多个表的数据库。我需要创建一个角色,该角色允许对所有表进行只读访问,以及对两个特定表的写访问权限。
我一直在处理数据库角色,但是每当我添加表时,我都必须手动选择所有 1000 个……有没有更好的方法来做到这一点?
我有一个“新”的数据库角色/登录mynewdb与角色"emailsender"。我已经编写了一个配置文件,sp_send_dbmail现在正在尝试编写将登录名添加到DatabaseMailUserRolein 的脚本,msdb并且似乎在绕圈子。重要的是,我想在mynewdb. 我知道我可以SSMS用来做到这一点。问题是:
如何编写脚本将用户T-SQL从mynewdb数据库添加到角色中而不切换到msdb?
我正在设置一个 postgres 服务器,它将是一个(主要是)只读工作负载。
我想允许我自己和同事按照我们认为合适的方式创建/删除索引,而不允许我们删除表或改变表。
我花了一些时间阅读授权/撤销文档以及角色文档页面,但似乎表所有者角色获得了这两种权力。
我发现的一件事是,据说,在表空间上授予创建允许创建索引,但它不起作用(注意,我没有创建任何其他表空间)。
具体来说,我试过:
mydb=# grant create on tablespace pg_default to bob;
GRANT
Run Code Online (Sandbox Code Playgroud)
...然后切换到鲍勃:
mydb=> create index on foo(a);
ERROR: must be owner of relation foo
Run Code Online (Sandbox Code Playgroud)
我也尝试让 bob 成为所有者,但是 bob 获得了删除表的权利,而且似乎无法撤销该特权。所以我要么两者兼而有之,要么什么都不做。
有任何想法吗?
有没有办法可视化哪些用户是 PostgreSQL / pgAdminIII 中某个角色的成员,例如
role: council_stuff
members:
Harry
Ben
Steve
Melinda
Run Code Online (Sandbox Code Playgroud) 对于角色db_denycustomer,我只希望客户表的列代码是 SELECTable 的,其他的都不行。所以我这样做了:
DENY SELECT ON dbo.customer TO db_denycustomer
GRANT SELECT ON dbo.customer (code) TO db_denycustomer
Run Code Online (Sandbox Code Playgroud)
...它工作正常。凉爽的!但是,为什么?
我在相关文章中读到的是权限堆栈,但DENY优先。相比之下,就我而言,似乎最后一个权限“查询”优先。果然,如果我以相反的顺序执行它们,后者DENY也会隐藏代码列。
你能详细说明一下吗?
我还为我测试的用户提供了默认值db_datawriter和db_datareader角色。
我需要使用散列密码编写应用程序角色的脚本,以便我可以将它从一个数据库复制到另一个数据库。
考虑以下示例代码,它使用应用程序角色为不受信任的用户提供提升的访问权限:
USE tempdb;
CREATE LOGIN LimitedLogin
WITH PASSWORD = 'Password1'
, CHECK_POLICY = OFF
, CHECK_EXPIRATION = OFF;
CREATE USER LimitedLogin
FOR LOGIN LimitedLogin
WITH DEFAULT_SCHEMA = dbo;
CREATE APPLICATION ROLE MyAppRole
WITH PASSWORD = 'Password2'
, DEFAULT_SCHEMA = dbo;
EXEC sp_addrolemember @rolename = 'db_datareader'
, @membername = 'MyAppRole';
CREATE TABLE dbo.Numbers
(
[Number] int CONSTRAINT PK_Numbers
PRIMARY KEY CLUSTERED
IDENTITY(1,1) NOT NULL
);
INSERT INTO dbo.Numbers
VALUES (1)
, (2);
GO
Run Code Online (Sandbox Code Playgroud)
一旦我们在 tempdb 中创建了测试设置,我们就可以以[LimitedLogin]用户身份登录,并运行以下命令:
-- login …Run Code Online (Sandbox Code Playgroud) 首先是简短版本:
是否可以SET ROLE通过特定角色自动调用新的 PostgreSQL 数据库连接,无论是通过连接角色上的配置(使用ALTER ROLE),还是通过连接 URI 末尾的选项?
更长,结合上下文:
我正在设置一个 Web 应用程序以使用轮换数据库凭据(因此,有多种角色在发挥作用)。但是,这些凭据还用于对数据库进行修改(通过 Rails 迁移),这意味着表将由不打算长期存在的角色拥有。
我可以修改轮换凭据,以便它们继承父角色(本身无法登录),然后通过SET ROLE所有数据库修改都归父角色所有,而不是短期子角色。这解决了所有权问题,但它需要调用每个连接SET ROLE parent- 不太可行。
因此,我需要某种方法来确保每个子连接始终在父角色的上下文中运行。这可能吗?
role ×10
postgresql ×4
security ×4
sql-server ×4
permissions ×3
metadata ×1
oracle ×1
pgadmin ×1
scripting ×1
t-sql ×1