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 Audit 与 Extended 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 持续审计关键操作。