欢迎光临嘉善县救护车出租网
详情描述
SQL Server 新建用户并赋予数据库权限图文教程

一、准备工作

1.1 启动SQL Server Management Studio (SSMS)

1.2 连接到SQL Server实例

  • 输入服务器名称
  • 选择身份验证方式(Windows/SQL Server)
  • 点击"连接"

二、新建登录账号(两种方式)

方式一:使用SSMS图形界面

步骤1:打开"安全性"文件夹

步骤2:右键"登录名" → "新建登录名"

步骤3:配置登录信息

-- 示例配置:
-- 登录名: newuser
-- 身份验证: SQL Server身份验证
-- 密码: YourPassword123
-- 取消勾选"强制实施密码策略"(根据需求)

步骤4:设置默认数据库

方式二:使用T-SQL命令

-- 新建SQL Server登录账号
USE [master]
GO

CREATE LOGIN [newuser] 
WITH PASSWORD = N'YourPassword123',
     DEFAULT_DATABASE = [YourDatabase],
     CHECK_EXPIRATION = OFF,
     CHECK_POLICY = OFF
GO

三、在目标数据库中创建用户

方式一:使用SSMS图形界面

步骤1:展开目标数据库 → 安全性 → 右键"用户" → "新建用户"

步骤2:配置用户信息

-- 示例配置:
-- 用户名: newuser_db
-- 登录名: newuser (选择刚才创建的登录名)
-- 默认架构: dbo

方式二:使用T-SQL命令

-- 切换到目标数据库
USE [YourDatabase]
GO

-- 创建数据库用户并关联登录账号
CREATE USER [newuser_db] FOR LOGIN [newuser]
WITH DEFAULT_SCHEMA = [dbo]
GO

四、授予数据库权限(三种方法)

方法1:通过SSMS授予角色权限

步骤1:打开用户属性 → 选择"成员身份"页签

步骤2:选择数据库角色

-- 常用角色说明:
-- db_owner: 数据库所有者,拥有全部权限
-- db_datareader: 可以读取所有表数据
-- db_datawriter: 可以插入、更新、删除所有表数据
-- db_ddladmin: 可以执行DDL操作(创建、修改表等)
-- public: 默认角色,所有用户都有

方法2:通过SSMS授予具体权限

步骤1:右键数据库 → 属性 → 权限

步骤2:选择用户 → 勾选具体权限

方法3:使用T-SQL命令授权

-- 授予数据库角色成员身份
USE [YourDatabase]
GO

-- 加入db_datareader角色(只读)
EXEC sp_addrolemember 'db_datareader', 'newuser_db'
GO

-- 加入db_datawriter角色(增删改)
EXEC sp_addrolemember 'db_datawriter', 'newuser_db'
GO

-- 授予具体权限
USE [YourDatabase]
GO

-- 授予SELECT权限
GRANT SELECT ON [dbo].[TableName] TO [newuser_db]
GO

-- 授予EXECUTE权限(存储过程)
GRANT EXECUTE ON [dbo].[StoredProcedure] TO [newuser_db]
GO

-- 授予所有权限
GRANT ALL ON [dbo].[TableName] TO [newuser_db]
GO

五、验证权限设置

5.1 使用新建用户登录测试

步骤1:断开当前连接 步骤2:使用新建用户登录

5.2 执行权限测试

-- 测试只读权限
SELECT * FROM [dbo].[YourTable]  -- 应该成功

-- 测试写入权限(如果授予了)
INSERT INTO [dbo].[YourTable] (Column1) VALUES ('Test')  -- 根据权限可能成功或失败

-- 测试无权限的操作
DROP TABLE [dbo].[YourTable]  -- 应该失败

5.3 查看用户权限

-- 查看用户拥有的权限
USE [YourDatabase]
GO

-- 查看用户角色成员身份
SELECT 
    dp.name AS UserName,
    roles.name AS RoleName
FROM sys.database_role_members rm
JOIN sys.database_principals dp ON rm.member_principal_id = dp.principal_id
JOIN sys.database_principals roles ON rm.role_principal_id = roles.principal_id
WHERE dp.name = 'newuser_db'
GO

-- 查看具体权限
SELECT 
    USER_NAME(grantee_principal_id) AS UserName,
    permission_name,
    state_desc,
    OBJECT_NAME(major_id) AS ObjectName
FROM sys.database_permissions
WHERE USER_NAME(grantee_principal_id) = 'newuser_db'
GO

六、权限管理脚本示例

6.1 完整权限设置脚本

-- ============================================
-- SQL Server用户权限设置完整脚本
-- ============================================

-- 1. 创建登录账号
USE [master]
GO
CREATE LOGIN [sales_user] 
WITH PASSWORD = N'Sales@2024',
     DEFAULT_DATABASE = [SalesDB],
     CHECK_EXPIRATION = OFF,
     CHECK_POLICY = OFF
GO

-- 2. 创建数据库用户
USE [SalesDB]
GO
CREATE USER [sales_user_db] FOR LOGIN [sales_user]
WITH DEFAULT_SCHEMA = [sales]
GO

-- 3. 授予角色权限
EXEC sp_addrolemember 'db_datareader', 'sales_user_db'
EXEC sp_addrolemember 'db_datawriter', 'sales_user_db'
GO

-- 4. 授予架构权限
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::[sales] TO [sales_user_db]
GO

-- 5. 授予具体对象权限(可选)
GRANT EXECUTE ON [dbo].[usp_GetSalesReport] TO [sales_user_db]
GO

-- 6. 拒绝特定权限(如果需要)
DENY DELETE ON [dbo].[AuditLog] TO [sales_user_db]
GO

6.2 权限撤销脚本

-- 移除角色成员身份
EXEC sp_droprolemember 'db_datawriter', 'sales_user_db'
GO

-- 撤销具体权限
REVOKE DELETE ON [dbo].[YourTable] FROM [sales_user_db]
GO

-- 删除数据库用户
DROP USER [sales_user_db]
GO

-- 删除登录账号(在master数据库中)
USE [master]
GO
DROP LOGIN [sales_user]
GO

七、最佳实践和注意事项

7.1 安全建议

最小权限原则:只授予必要的最小权限 使用角色管理:通过数据库角色批量管理权限 定期审计:定期检查用户权限 密码策略:启用强密码策略 使用Windows身份验证:如果环境允许,优先使用Windows身份验证

7.2 常见问题解决

问题1:用户无法登录

-- 检查登录账号状态
SELECT name, is_disabled FROM sys.server_principals WHERE name = 'newuser'

-- 启用被禁用的账号
ALTER LOGIN [newuser] ENABLE

问题2:用户无数据库访问权限

-- 检查数据库用户映射
USE [YourDatabase]
SELECT name FROM sys.database_principals WHERE name = 'newuser_db'

问题3:权限不生效

-- 清除权限缓存
DBCC FREEPROCCACHE
GO

八、可视化权限管理工具推荐

SSMS内置工具:最常用,功能全面 ApexSQL Manage:第三方工具,提供更友好的界面 dbForge Studio:商业化工具,提供高级功能

总结

通过本教程,您已经学会了:

  • ✅ 创建SQL Server登录账号
  • ✅ 在目标数据库中创建用户
  • ✅ 授予数据库角色权限
  • ✅ 授予具体对象权限
  • ✅ 验证权限设置
  • ✅ 使用T-SQL脚本管理权限

按照"先创建登录账号 → 再创建数据库用户 → 最后分配权限"的流程操作,可以有效管理SQL Server用户权限。

相关帖子
为什么裹了面糊炸的东西更蓬松酥脆,面衣里的气泡到底是怎么形成的?
为什么裹了面糊炸的东西更蓬松酥脆,面衣里的气泡到底是怎么形成的?
没盘腿坐垫也没安静房间,课间五分钟靠在椅子上也能算冥想吗?
没盘腿坐垫也没安静房间,课间五分钟靠在椅子上也能算冥想吗?
除了薪酬,退休人员在选择返聘机会时还应重点考察哪些方面的条件?
除了薪酬,退休人员在选择返聘机会时还应重点考察哪些方面的条件?
行车记录仪在2026年的交通事故判定中,其记录内容的法律效力如何?
行车记录仪在2026年的交通事故判定中,其记录内容的法律效力如何?
房结节该怎么消除?3种方式可缓解症状
房结节该怎么消除?3种方式可缓解症状
远程办公人员的交通补贴如何发放?通讯补贴的标准是否有特殊规定?
远程办公人员的交通补贴如何发放?通讯补贴的标准是否有特殊规定?
天津市公司网站建设&网站优化推广服务公司,网站制作
天津市公司网站建设&网站优化推广服务公司,网站制作
株洲市病人出院长途救护车出租-长途跨省救护车转运24小时服务电话
株洲市病人出院长途救护车出租-长途跨省救护车转运24小时服务电话
揭阳市java开源网站二次开发%高效获客软件,一站式服务
揭阳市java开源网站二次开发%高效获客软件,一站式服务
宜都市120救护车出租价格|重症急救车出租,转院接送
宜都市120救护车出租价格|重症急救车出租,转院接送
长沙市正规救护车出租-救护车租车转运病人
长沙市正规救护车出租-救护车租车转运病人
珠海市iphone软件开发&模版网站开发设计,专业开发团队
珠海市iphone软件开发&模版网站开发设计,专业开发团队
自贡市开源网站建设定制%高效获客助手,服务可靠
自贡市开源网站建设定制%高效获客助手,服务可靠
仙桃市120救护车长途出租|长途120救护车护送,转院接送
仙桃市120救护车长途出租|长途120救护车护送,转院接送
如果失业登记审核未通过,通常可能是什么原因导致的?
如果失业登记审核未通过,通常可能是什么原因导致的?
经过公证的“遗愿清单”,如果在未来情况发生变化,是否允许进行修改或撤销?
经过公证的“遗愿清单”,如果在未来情况发生变化,是否允许进行修改或撤销?
宜都市病人出院长途救护车出租-跨省转院救护车租赁,就近派车
宜都市病人出院长途救护车出租-跨省转院救护车租赁,就近派车
2026年各地在稳岗返还政策的具体执行上可能存在哪些地域性的差异?
2026年各地在稳岗返还政策的具体执行上可能存在哪些地域性的差异?
仙桃市120救护车转运服务-长途120急救车租赁,专业接送病人
仙桃市120救护车转运服务-长途120急救车租赁,专业接送病人
泰安市b2b网站开发%购物网站开发建设,收费透明
泰安市b2b网站开发%购物网站开发建设,收费透明