SQL 怎么创建一个只有查询数据库用户权限呢

SQL 怎么创建一个只有查询数据库用户权限呢,第1张

1在数据库本机用使用cmd指令调出命令行窗口,再用sqlplus/assysdba登录到数据库中。并且用对要赋权限的表所有者连接数据库,否则后续赋权限会失败。

2创建由test123标识的用户测试;创建密码设置为test123的测试用户。

3授权测试用户的连接和资源权限。授予连接,资源到测试。

4指定表授权查询权限。授予用户选择。表测试。

5用新的登录数据库进行验证,我们会先尝试删除删除数据的功能,结果错误无法执行,说明我们添加的用户没有删除权限。

6然后验证select查询函数,成功找到指定的数据。创建一个新用户并指定查询权限函数的实现。对于没有权限的表的查询也会被拒绝。

语法: 

sp_addrolemember [ @rolename = ] 'role' , 

    [ @membername = ] 'security_account' 

    

 参数: [@rolename =] 'role' 

当前数据库中 SQL Server 角色的名称。role 的数据类型为 sysname,没有默认值。 

[@membername =] 'security_account' 

添加到角色的安全帐户。security_account 的数据类型为 sysname,没有默认值。security_account 可以是所有有效的 SQL Server 用户、SQL Server 角色或是所有已授权访问当前数据库的 Microsoft Windows NT® 用户或组。

SQL Server中查询用户的对象权限和角色的方法

-- 查询用户的object权限

exec sp_helprotect NULL, 'UserName'

-- 查询用户拥有的role

exec sp_helpuser 'UserName'

-- 查询哪些用户拥有指定的系统role

exec sp_helpsrvrolemember 'sysadmin'

-- 可查询嵌套role

WITH tree_roles as

(

SELECT role_principal_id, member_principal_id

FROM sysdatabase_role_members

WHERE member_principal_id = USER_ID('UserName')

UNION ALL

SELECT crole_principal_id,cmember_principal_id

FROM sysdatabase_role_members as c

inner join tree_roles

on tree_rolesmember_principal_id = crole_principal_id

)

SELECT distinct USER_NAME(role_principal_id) RoleName

FROM tree_roles

-- 其他权限相关基本表

select from sysusers

select from syspermissions

-- Who has access to my SQL Server instance

SELECT

name as UserName, type_desc as UserType, is_disabled as IsDisabled

FROM sysserver_principals

where type_desc in('WINDOWS_LOGIN', 'SQL_LOGIN')

order by UserType, name, IsDisabled

-- Who has access to my Databases

SELECT

dpname as UserName, dptype_desc as UserType, spname as LoginName, sptype_desc as LoginType

FROM sysdatabase_principals dp

JOIN sysserver_principals sp ON dpprincipal_id = spprincipal_id

order by UserType

select from sysdatabase_principals

-- Server Roles

select

pname as UserName, ptype_desc as UserType, ppname as ServerRoleName, pptype_desc as ServerRoleType

from sysserver_role_members roles

join sysserver_principals p on rolesmember_principal_id = pprincipal_id

join sysserver_principals pp on rolesrole_principal_id = ppprincipal_id

where ppname in('sysadmin')

order by ServerRoleName, UserName

-- Database Roles

SELECT

pname as UserName, ptype_desc as UserType, ppname as DBRoleName, pptype_desc as DBRoleType, ppis_fixed_role as IfFixedRole

FROM sysdatabase_role_members roles

JOIN sysdatabase_principals p ON rolesmember_principal_id = pprincipal_id

JOIN sysdatabase_principals pp ON rolesrole_principal_id = ppprincipal_id

where ppname in('db_owner', 'db_datawriter')

-- What can these users do

SELECT

grantorname as GrantorName, dpstate_desc as StateDesc, dpclass_desc as ClassDesc, dppermission_name as PermissionName ,

OBJECT_NAME(major_id) as ObjectName, GranteeName = granteename

FROM sysdatabase_permissions dp

JOIN sysdatabase_principals grantee on dpgrantee_principal_id = granteeprincipal_id

JOIN sysdatabase_principals grantor on dpgrantor_principal_id = grantorprincipal_id

where permission_name like '%UPDATE%'

1打开企业管理器进入sql

server组安全性2创建、选择你进行设置权限的用户,右击属性!3点击标题栏下数据库访问,对其用户设置给予访问的数据和数据库角色4点击确定,完成设置mssql数据库访问用户及访问权限

(责任编辑:winiis)

1、为角色赋予jobs表的所有权限

GRANT ALL ON jobs TO newrole

2、为角色赋予sales表的查、改权限

GRANT SELECT,UPDATE ON sales TO newrole

临时表可以被任何用户在任何数据库下创建,而不需要授予任何权限。

本地临时表只能被创建它的会话访问。全局临时表可以被所有会话访问和修改,而不需要授权。

按照从最低级别角色(bulkadmin)到最高级别角色(sysadmin)的顺序进行描述:

1bulkadmin:这个角色可以运行BULK INSERT语句该语句允许从文本文件中将数据导入到SQL Server2008数据库中,为需要执行大容量插入到数据库的域帐号而设计

2dbcreator:这个角色可以创建,更改,删除和还原任何数据库不仅适合助理DBA角色,也可能适合开发人员角色

3diskadmin:这个角色用于管理磁盘文件,比如镜像数据库和添加备份设备适合助理DBA

4processadmin:SQL Server 2008可以同时多进程处理这个角色可以结束进程(在SQL Server 2008中称为"删除")

5public:有两大特点:第一,初始状态时没有权限;第二,所有数据库用户都是它的成员

6securityadmin:这个角色将管理登录名及其属性可以授权,拒绝和撤销服务器级/数据库级权限可以重置登录名和密码

7serveradmin:这个角色可以更改服务器范围的配置选项和关闭服务器

8setupadmin:为需要管理联接服务器和控制启动的存储过程的用户而设计

9sysadmin:这个角色有权在SQL Server 2008 中执行任何 *** 作

数据库角色:

1db_accessadmin:可以在数据库中添加和删除数据库用户, 组及角色

2db_backupoperator:可以备份数据库

3db_datareader 可以读取任何表中的数据

4db_datawriter 可以添加、更改或删除所有表中的数据

5db_ddladmin 可以添加、更改或删除数据库对象(即可以执行任何DDL语句)

6db_denydatareader 不能读取任何表中的数据,但仍然可以通过存储过程来查看

7db_denydatawriter 不能更改任何表中的数据,但仍然可以通过存储过程来修改

8db_owner 执行任何 *** 作

9db_securityadmin 可以更改数据中的权限和角色

10public:每个数据库用户都属于public角色未对用户授权之前,该用户将被授予public角色的权限该角色不能被删除

以上就是关于SQL 怎么创建一个只有查询数据库用户权限呢全部的内容,包括:SQL 怎么创建一个只有查询数据库用户权限呢、SQL 中角色权限授予问题、sql语句server中怎么查询用户的角色和权限等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9846482.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存