1. 前提准备:安装SQL Server并启动服务
在CentOS上进行权限管理前,需先完成SQL Server的安装与基础配置。可通过Microsoft官方文档使用yum仓库安装SQL Server(如mssql-server包),配置实例(设置SA密码、排序规则等),并启动服务:
sudo systemctl start mssql-server # 启动服务
sudo systemctl enable mssql-server # 开机自启
确保服务运行正常后,再进行权限管理操作。
2. 登录SQL Server实例
权限管理需通过SQL命令或图形工具执行。常用方式有两种:
sqlcmd -S localhost -U sa -P 'YourStrongPassword'
3. 创建登录账户(服务器级权限)
登录账户用于连接到SQL Server实例,分为SQL Server认证(用户名/密码)和Windows认证(集成域账户,需域环境)。常用SQL命令创建SQL Server认证登录:
CREATE LOGIN [username] WITH PASSWORD = 'ComplexPassword123!';
注:密码需符合复杂度要求(大小写字母、数字、特殊字符组合)。
4. 创建数据库用户(数据库级关联)
登录账户需关联到具体数据库才能访问数据。使用以下命令在目标数据库(如YourDB)中创建用户:
USE [YourDB]; -- 切换到目标数据库
CREATE USER [username] FOR LOGIN [username]; -- 关联登录账户
这一步将登录账户与数据库用户绑定,后续权限针对用户生效。
5. 分配内置数据库角色(快速授权)
SQL Server提供多种内置角色,覆盖常见权限场景,无需逐个分配权限:
SELECT权限(只读)。INSERT、UPDATE、DELETE权限(读写)。USE [YourDB];
EXEC sp_addrolemember 'db_datareader', 'username'; -- 只读权限
EXEC sp_addrolemember 'db_datawriter', 'username'; -- 读写权限
6. 创建自定义角色与细粒度权限(精准控制)
若内置角色无法满足需求,可创建自定义角色并分配特定权限:
CREATE ROLE [CustomRole]; -- 创建自定义角色
dbo.Orders)授予SELECT、INSERT权限:GRANT SELECT, INSERT ON [dbo].[Orders] TO [CustomRole]; -- 授予表级权限
EXEC sp_addrolemember 'CustomRole', 'username'; -- 将用户加入自定义角色
这种方式可实现“最小权限原则”,仅授予用户完成工作所需的最少权限。
7. 配置操作系统级权限(保障服务安全)
SQL Server服务的运行账户(默认mssql)需具备访问数据目录和日志目录的权限:
sudo chown -R mssql:mssql /var/opt/mssql/data # 设置数据目录所有者
sudo chmod -R 750 /var/opt/mssql/data # 设置数据目录权限(所有者可读写执行,组可读执行)
此外,通过firewalld开放SQL Server默认端口(1433),限制访问来源:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent # 开放端口
sudo firewall-cmd --reload # 重载防火墙
8. 验证权限设置
通过登录账户测试权限是否生效:
-- 使用创建的用户登录(替换为实际密码)
sqlcmd -S localhost -U username -P 'UserPassword' -d YourDB
执行以下命令验证权限:
SELECT * FROM dbo.Orders; -- 测试SELECT权限
INSERT INTO dbo.Orders (OrderID, CustomerID) VALUES (1, 'C001'); -- 测试INSERT权限(若分配了相应权限)
若查询或操作成功,则说明权限设置正确。
注意事项
sysadmin等高权限角色。SELECT * FROM sys.database_principals WHERE type_desc = 'SQL_USER'查看用户权限)。