温馨提示×

Debian系统下SQL Server的权限管理如何设置

小樊
35
2026-01-01 07:19:57
栏目: 云计算

Debian下 SQL Server 权限管理实操指南

一 环境准备与连接

  • 安装与配置 SQL Server(以 Debian 12 为例):
    • 导入 GPG 并添加仓库:
      • curl https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-archive-keyring.gpg
      • echo “deb [signed-by=/usrusr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/debian/12/prod/ stable main” | sudo tee /etc/apt/sources.list.d/mssql-server.list > /devref
    • 安装与初始化:
      • sudo apt update && sudo apt install -y mssql-server
      • sudo /opt/mssql/bin/mssql-conf setup(设置 SA 密码)
  • 安装命令行工具并连接:
    • sudo apt install -y mssql-tools unixodbc-dev
    • sqlcmd -S localhost -U SA -P ‘
    • 远程连接需开放 1433/TCP:sudo ufw allow 1433/tcp

二 核心概念与最小权限原则

  • 登录名(Login):实例级身份;用户(User):数据库级身份,需将登录名映射到数据库用户。
  • 固定数据库角色:如 db_owner、db_datareader、db_datawriter,适合快速授权;按需使用更细粒度权限。
  • 建议遵循最小权限原则:仅授予完成工作所需权限,避免使用 SA 进行日常操作。

三 常用 T‑SQL 操作清单

  • 登录名管理
    • 创建:CREATE LOGIN login_name WITH PASSWORD = ‘password’;
    • 改密:ALTER LOGIN login_name WITH PASSWORD = ‘new_password’;
    • 删除:DROP LOGIN login_name;
  • 数据库用户与映射
    • 创建用户:USE MyDatabase; CREATE USER user_name FOR LOGIN login_name;
    • 删除用户:DROP USER user_name;
  • 角色管理(新语法)
    • 加入角色:ALTER ROLE db_datareader ADD MEMBER user_name;
    • 移除角色:ALTER ROLE db_datareader DROP MEMBER user_name;
  • 细粒度权限
    • 授予:GRANT SELECT, INSERT, UPDATE, DELETE ON OBJECT::dbo.YourTable TO user_name;
    • 撤销:REVOKE SELECT ON SCHEMA::dbo FROM user_name;
  • 验证与审计
    • 查看权限:USE MyDatabase; SELECT * FROM sys.database_permissions WHERE grantee_principal_id = USER_ID(‘user_name’);
    • 审计与监控:可结合 SQL Server AuditExtended Events 进行访问与操作审计。

四 典型场景与命令示例

  • 只读用户
    • USE MyDatabase;
    • CREATE USER app_read FOR LOGIN app_read;
    • ALTER ROLE db_datareader ADD MEMBER app_read;
  • 读写用户
    • USE MyDatabase;
    • CREATE USER app_rw FOR LOGIN app_rw;
    • ALTER ROLE db_datareader ADD MEMBER app_rw;
    • ALTER ROLE db_datawriter ADD MEMBER app_rw;
  • 单表增删改查
    • USE MyDatabase;
    • CREATE USER app_tbl FOR LOGIN app_tbl;
    • GRANT SELECT, INSERT, UPDATE, DELETE ON OBJECT::dbo.Orders TO app_tbl;
  • 应用专用账户(最小权限)
    • 仅授予目标库与必要对象权限,避免使用 db_owner;按“登录名→数据库用户→角色/对象权限”的顺序配置。

五 远程管理与安全加固

  • 远程访问与防火墙
    • 开放端口:sudo ufw allow 1433/tcp
    • 在 /etc/opt/mssql/mssql.conf 的 [network] 段启用 tcpip = true 并重启服务:sudo systemctl restart mssql-server;
    • 远程连接测试:sqlcmd -S <服务器IP> -U app_rw -P ‘pwd’。
  • 工具与连接方式
    • 可使用 SSMS 进行图形化管理(连接字符串与 Linux 端一致),也可全程使用 sqlcmd 在终端完成授权与审计查询。
  • 安全建议
    • 使用强口令并定期轮换;为应用创建专用账户;遵循最小权限原则;通过 Audit/Extended Events 持续审计关键操作。

0