温馨提示×

SQL Server在CentOS上的权限管理如何操作

小樊
39
2025-11-03 23:36:04
栏目: 云计算

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):使用SA账户登录(替换为实际密码):
    sqlcmd -S localhost -U sa -P 'YourStrongPassword'
    
  • 图形工具(SSMS):若CentOS能访问Windows网络,可通过SSMS连接到SQL Server实例(认证方式选择“SQL Server认证”)。

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提供多种内置角色,覆盖常见权限场景,无需逐个分配权限:

  • db_datareader:授予用户对数据库中所有表的SELECT权限(只读)。
  • db_datawriter:授予用户对数据库中所有表的INSERTUPDATEDELETE权限(读写)。
  • db_ddladmin:授予用户创建/修改数据库对象(表、视图、存储过程等)的权限。
    使用以下命令将用户添加到角色:
USE [YourDB];
EXEC sp_addrolemember 'db_datareader', 'username';    -- 只读权限
EXEC sp_addrolemember 'db_datawriter', 'username';    -- 读写权限

6. 创建自定义角色与细粒度权限(精准控制)
若内置角色无法满足需求,可创建自定义角色并分配特定权限:

  • 创建角色
    CREATE ROLE [CustomRole];  -- 创建自定义角色
    
  • 分配权限:针对特定表(如dbo.Orders)授予SELECTINSERT权限:
    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'查看用户权限)。
  • 使用强密码并定期更换,启用SQL Server审计功能监控异常操作。

0