我创建了一个测试帐户来检查权限。它当前具有 Northwind 数据库的 db_datareader、db_datawriter 和 db_ddladmin 角色。但是当它尝试在 Northwind 上创建新模式时,如果它尝试将 dbo 授权为模式所有者,则创建失败,这是怎么回事?
Version:
SQL Server Management Studio: 15.0.18183.0
Microsoft Analysis Services Client Tools: 15.0.1487.0
Microsoft Data Access Components (MDAC): 10.0.18362.1
Microsoft MSXML: 3.0 6.0
Microsoft Internet Explorer: 9.11.18362.0 Microsoft
.NET Framework: 4.0.30319.42000
Operating System: 10.0.18362
Run Code Online (Sandbox Code Playgroud) 我们有一个 SQL Server 2008 数据库,并且限制了所有表和视图远离特定用户 ID。多年来,我们根据用户需要一次授予一个表和视图。
我们必须这样做,因为供应商提供public了开箱即用的角色的读/写访问权限,因此我们必须为此用户创建一个角色,删除所有访问权限并仅授予他们需要的权限。
今天我们将创建一个仅包含这些表和视图的复制数据库,以便用户可以在不降低生产系统的情况下运行报告。问题是我不确定该用户可以访问哪些表和视图,因为多年来许多人一次授予访问权限。
是否有查询来检查此用户的访问权限?
PS 我是一名应用程序开发人员,所以请根据需要随意解释这一点。
编辑 - 最初如何创建角色和访问权限
------------------------------
-- CREATE ROLE db_finrep_deny
------------------------------
DECLARE @RoleName sysname
set @RoleName = N'db_finrep_deny'
IF EXISTS (SELECT * FROM sys.database_principals WHERE name = @RoleName AND type = 'R')
Begin
DECLARE @RoleMemberName sysname
DECLARE Member_Cursor CURSOR FOR
select [name]
from sys.database_principals
where principal_id in (
select member_principal_id
from sys.database_role_members
where role_principal_id in (
select principal_id
FROM sys.database_principals where [name] = @RoleName AND type = 'R' )) …Run Code Online (Sandbox Code Playgroud) 我想创建新用户并想给他们特定的权限,如插入、更新和删除。但是我不知道如何创建新用户并授予他们权限。
请任何帮助。
我是一名 oracle/sql 服务器 DBA,对 IBM DB2 的了解有限。我们在 AIX 6 上运行 DB2 9.7 fp4。我想创建一个新用户并授予他对特定数据库的只读权限。请帮忙!
感谢和问候穆罕默德
当我们自定义的、自产的 CMS 使用 GUI 创建数据表时,它会根据特定于站点的用户模式(即sitename)而不是模式创建它们dbo。
问题是我们的站点特定用户目前没有“看到”这些其他模式,即使他们在db_owner角色中。因此,某处缺少权限设置,这将授予他们对这些表进行读写的能力。
迁移到新的 SQL 服务器时发生了此问题。从 2005 工作组版到 2008 网络版。
我想创建一个user对服务器内两个数据库的访问最少的数据库。该用户将由第三方人员使用,将商业智能工具集成到我们的数据库中。他们已经指定他们只需要创建视图。
所以,我在服务器上创建一个新用户,那么使用的每个数据库的数据库属性授予他们SELECT和CREATE VIEW特权数据库。
然后我使用该用户登录 SSMS,并尝试创建一个视图,但我收到一条消息说
'dbo' 要么不存在,要么我无权使用它。
我试图通过反复试验自己解决这个问题,但我只是不了解 sql server 上的用户权限。我做错了什么,我需要采取哪些额外/不同的步骤?
请记住,我不希望他们拥有比他们需要的最低限度更多的控制权。
我需要将 db_owner 分配给实例中的所有用户。实例中有几百个登录名和相同数量的数据库。我希望每个用户都能在该用户所在的数据库中获取 db_owner。我知道如何为单个用户执行此操作,但我不知道如何同时为所有用户执行此操作。
我很清楚将 db_owner 提供给每个人并不是一个好主意,但是……我们正在安装一个非常具体的应用程序。每个想要使用此应用程序的用户都需要 db_owner。我们已经尝试过绕行,但是 aplicaton 本质上是相当原始的,所以在更改应用程序代码之前,我们将不得不容忍 db_owners 的疯狂数量。无论如何,这个特定实例没有敏感数据,所以我们得到了管理层的批准。
EnterpriseDB.com 向社区提供的Postgres 安装程序通常会在macOSpostgres上创建一个用户帐户。
在Terminal.app的控制台会话中,我需要切换到该用户。我的目标是使用该 user\xe2\x80\x99s 权限运行文本编辑器,以便我可以编辑pg_hba.conf控制 Postgres 用户身份验证规则的文件。
当我尝试时:
\n\nsu - postgres\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6 系统提示我输入用户密码,我输入成功,但收到错误消息:
\n\n\n\n\n苏:对不起
\n
我确信密码是正确的。我可以做什么来访问该postgres用户?
我一直在寻找原因,如何以及在何处使用无需登录的用户,但我没有找到我的确切问题或任何更接近的问题。我在哪里进行研究(我还阅读了其他帖子,看过 Youtube 视频):
我一直在寻找使我的数据库更安全的方法,最近我知道有一个选项可以在不登录的情况下创建用户。我认为这很好。但是我不明白如何使用它(不是创建,使用),然后经过我的研究,我意识到该用户在冒充另一个用户/角色的同时访问了数据库。我认为没有用户并以某种方式访问数据库会很棒。但是当我看到有一个叫做execute的东西时,我认为它没有用,因为我为什么要对这个“无需登录”的用户执行查询,因为它是另一个用户?为什么我不使用这个用户的权限?然后我想也许这个用户的权限太多了,所以我就创建了一个权限较少的新...
好吧,我不知道你为什么要创建一个没有登录的用户。这个应该怎么用?这很愚蠢,但我尝试登录并失败了(抱歉,我习惯于使用用户登录,我从没想过创建用户而不登录,我只知道用户登录了某些东西,这就是我的知识所在) .
所以,我不知道为什么要创建这种类型的用户而不是普通用户?我不知道如何(就像我登录一样,我是否只需输入查询并使用它)?我不知道在哪里(例如,我是否需要制作 C# 应用程序,我是否使用命令...)使用?
我的知识只带我到这里,我没有高级 DBA 可以问。如果可能,请用简单的语言解释。
我需要创建只能读取(选择)数据的角色用户。我可以针对特定模式执行此操作。但我需要它与所有现有和未来的模式(至少现有)一起工作。我该怎么做?
我试过了
GRANT select ON DATABASE my_db TO my_role;
Run Code Online (Sandbox Code Playgroud)
但它说我不能:
0LP01 无效_授权_操作
ps:我需要向数据库中的所有模式授予选择权限,我只是尝试使用查询中的数据库作为选项来执行此操作,但是如果您知道如何为空数据库的选择授予角色权限,我'我也会很高兴看到这一点
users ×10
permissions ×7
sql-server ×4
postgresql ×2
schema ×2
db2 ×1
logins ×1
mysql ×1
role ×1
select ×1