温馨提示×

debian中sqlserver如何授权

小樊
43
2026-10-22 03:12:33
栏目: 云计算

在 Debian 上安装并运行 SQL Server(Microsoft SQL Server on Linux) 后,授权(权限管理)的方式和 Windows / 其他 Linux 平台是一致的,主要通过 T-SQL 来进行。

下面按常见场景说明。


一、登录 SQL Server(Debian)

sqlcmd -S localhost -U SA

或指定端口:

sqlcmd -S localhost,1433 -U SA

二、SQL Server 中的基本安全模型

  • Login(登录):服务器级别(能连上 SQL Server)
  • User(用户):数据库级别(能访问某个库)
  • Role(角色):权限集合
  • Permission(权限):具体对象(表、视图、存储过程等)

三、创建登录并授权(服务器级)

1️⃣ 创建 SQL 登录

CREATE LOGIN testuser WITH PASSWORD = 'Strong@123';

2️⃣ 授予服务器级权限(示例)

-- 授予 sysadmin(管理员,谨慎)
ALTER SERVER ROLE sysadmin ADD MEMBER testuser;

或只给基本连接权限:

GRANT CONNECT SQL TO testuser;

四、数据库级授权(最常见)

1️⃣ 切换到目标数据库

USE mydb;
GO

2️⃣ 创建数据库用户

CREATE USER testuser FOR LOGIN testuser;

3️⃣ 加入数据库角色

ALTER ROLE db_datareader ADD MEMBER testuser;
ALTER ROLE db_datawriter ADD MEMBER testuser;

常用角色:

  • db_owner:数据库最高权限
  • db_datareader:只读
  • db_datawriter:只写
  • db_ddladmin:建表改结构

五、对象级授权(表 / 视图 / 存储过程)

授予某表 SELECT 权限

GRANT SELECT ON dbo.orders TO testuser;

授予某表增删改查

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

授予存储过程执行权限

GRANT EXECUTE ON dbo.usp_getdata TO testuser;

六、Linux / Debian 特有说明

✅ 不需要 chmod / chown 来授权 SQL 用户
✅ SQL Server 权限全部在数据库内部用 T-SQL 管理
✅ Debian 上只有 mssql 系统用户用于运行服务

查看服务状态:

systemctl status mssql-server

七、常见问题

❓ SA 密码忘了

sudo /opt/mssql/bin/mssql-conf set-sa-password
sudo systemctl restart mssql-server

❓ 无法远程连接

-- 允许登录
ALTER LOGIN testuser ENABLE;

并确认:

  • 防火墙开放 1433
  • SQL Server 允许远程连接

八、最小权限示例(推荐)

CREATE LOGIN appuser WITH PASSWORD = 'App@123';
USE mydb;
CREATE USER appuser FOR LOGIN appuser;
ALTER ROLE db_datareader ADD MEMBER appuser;
ALTER ROLE db_datawriter ADD MEMBER appuser;

如果你有具体需求(比如:只读账号、只能访问某个库、只能执行存储过程、AD 集成、Docker 中 SQL Server),可以告诉我,我可以给你针对性授权方案。

0 踩