温馨提示×

Debian怎么设置SQLServer权限

小樊
41
2026-07-01 17:14:02
栏目: 云计算

在 Debian 上设置 SQL Server 权限,一般分为 服务器级权限数据库级权限,并且取决于你是使用 SQL Server 身份认证 还是 Linux 账户 + 系统权限。下面按常见场景系统说明。


一、前提:确认 SQL Server 已在 Debian 运行

systemctl status mssql-server

正常应显示 active (running)

连接测试:

sqlcmd -S localhost -U sa -P 'YourPassword'

二、SQL Server 权限体系(重要)

SQL Server 权限分三层:

  1. 服务器级别

    • 登录(Login)
    • 服务器角色(sysadmin、securityadmin 等)
  2. 数据库级别

    • 用户(User)
    • 数据库角色(db_owner、db_datareader 等)
  3. 对象级别

    • 表、视图、存储过程的权限(SELECT、INSERT、EXECUTE)

三、创建登录(Login)

1️⃣ 使用 sa 登录

sqlcmd -S localhost -U sa -P 'YourPassword'

2️⃣ 创建 SQL 登录

CREATE LOGIN devuser WITH PASSWORD = 'Strong@Pass123';
GO

✅ 推荐用于应用账号


四、创建数据库用户并授权

1️⃣ 创建数据库用户(绑定登录)

USE testdb;
GO

CREATE USER devuser FOR LOGIN devuser;
GO

2️⃣ 授权数据库角色(常用)

完全控制

ALTER ROLE db_owner ADD MEMBER devuser;
GO

只读

ALTER ROLE db_datareader ADD MEMBER devuser;
GO

读写

ALTER ROLE db_datareader ADD MEMBER devuser;
ALTER ROLE db_datawriter ADD MEMBER devuser;
GO

五、对象级权限(细粒度)

授权某张表

GRANT SELECT, INSERT, UPDATE, DELETE
ON dbo.orders
TO devuser;
GO

授权执行存储过程

GRANT EXECUTE ON dbo.proc_name TO devuser;
GO

六、服务器级角色(慎用)

给 sysadmin(最高权限)

ALTER SERVER ROLE sysadmin ADD MEMBER devuser;
GO

⚠️ 不建议给普通用户

更安全角色:

  • securityadmin
  • dbcreator
  • bulkadmin

七、Linux 用户 & 文件系统权限(不是 SQL 权限)

如果是 systemd / mssql 用户运行

# SQL Server 运行用户
ps aux | grep mssql

# 数据目录权限
ls -ld /var/opt/mssql

不要随意修改 /var/opt/mssql 权限,会导致服务无法启动。


八、常见问题

❌ 登录失败

  • 密码策略不满足
  • 未启用 SQL 身份认证(默认可能是)
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'mixed authentication mode', 1;
RECONFIGURE;

或直接修改:

/opt/mssql/bin/mssql-conf set sqlagent.enabled true
systemctl restart mssql-server

九、推荐权限分配实践

用户类型 权限
应用账号 数据库角色 + 最小对象权限
DBA sysadmin
只读账号 db_datareader
临时账号 单独 GRANT

如果你愿意,可以告诉我:

  • 你用的是 SQL Server 2019 / 2022
  • 本机应用 还是 远程连接
  • 是否需要 最小权限原则

我可以帮你给出最优权限方案

0