在 Debian 上设置 SQL Server 权限,一般分为 服务器级权限 和 数据库级权限,并且取决于你是使用 SQL Server 身份认证 还是 Linux 账户 + 系统权限。下面按常见场景系统说明。
systemctl status mssql-server
正常应显示 active (running)。
连接测试:
sqlcmd -S localhost -U sa -P 'YourPassword'
SQL Server 权限分三层:
服务器级别
数据库级别
对象级别
sqlcmd -S localhost -U sa -P 'YourPassword'
CREATE LOGIN devuser WITH PASSWORD = 'Strong@Pass123';
GO
✅ 推荐用于应用账号
USE testdb;
GO
CREATE USER devuser FOR LOGIN devuser;
GO
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
ALTER SERVER ROLE sysadmin ADD MEMBER devuser;
GO
⚠️ 不建议给普通用户
更安全角色:
securityadmindbcreatorbulkadmin如果是 systemd / mssql 用户运行:
# SQL Server 运行用户
ps aux | grep mssql
# 数据目录权限
ls -ld /var/opt/mssql
不要随意修改 /var/opt/mssql 权限,会导致服务无法启动。
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 |
如果你愿意,可以告诉我:
我可以帮你给出最优权限方案。