温馨提示×

ubuntu下sqlserver如何授权

小樊
46
2026-09-30 23:04:56
栏目: 云计算

在 Ubuntu 下使用 SQL Server(Microsoft SQL Server on Linux) 时,授权(权限管理)主要通过 T-SQL 完成,而不是像 MySQL 那样用 GRANT 命令行工具。下面按常见场景说明。


一、登录 SQL Server(Ubuntu)

sqlcmd -S localhost -U sa -P '你的SA密码'

或使用 mssql-cli(更友好):

mssql-cli -U sa -P '你的SA密码'

二、SQL Server 权限模型(重要)

SQL Server 权限是 层级结构:

服务器级别(Server)
 └── 数据库级别(Database)
      └── 对象级别(Table / View / Procedure)

三、创建登录名(服务器级别)

1️⃣ 创建 SQL 登录账户

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

⚠️ 密码必须符合 SQL Server 复杂度要求


四、创建数据库用户(数据库级别)

USE testdb;
GO

CREATE USER testuser FOR LOGIN testuser;
GO

五、常见授权方式

✅ 1. 授予数据库角色(最常用)

ALTER ROLE db_datareader ADD MEMBER testuser;  -- 只读
ALTER ROLE db_datawriter ADD MEMBER testuser;  -- 写

常用内置角色:

  • db_owner:数据库所有者(最高)
  • db_datareader:只读
  • db_datawriter:可写
  • db_ddladmin:可建表/改结构

✅ 2. 授权整个数据库

USE testdb;
GO

GRANT SELECT, INSERT, UPDATE, DELETE
ON DATABASE::testdb
TO testuser;

✅ 3. 授权指定表

GRANT SELECT, UPDATE
ON dbo.orders
TO testuser;

✅ 4. 授权存储过程

GRANT EXECUTE
ON dbo.sp_get_orders
TO testuser;

六、服务器级别权限(慎用)

ALTER SERVER ROLE sysadmin ADD MEMBER testuser;

⚠️ sysadmin 相当于 Linux 的 root,不建议普通用户使用


七、查看权限

-- 查看用户角色
SELECT * FROM sys.database_role_members;

-- 查看登录名
SELECT * FROM sys.server_principals;

-- 查看用户权限
SELECT * FROM sys.database_permissions;

八、撤销权限

REVOKE SELECT ON dbo.orders TO testuser;

或移除角色:

ALTER ROLE db_datareader DROP MEMBER testuser;

九、常见示例(完整流程)

-- 服务器登录
CREATE LOGIN appuser WITH PASSWORD = 'App@123456';

-- 数据库用户
USE mydb;
CREATE USER appuser FOR LOGIN appuser;

-- 授权
ALTER ROLE db_datareader ADD MEMBER appuser;
ALTER ROLE db_datawriter ADD MEMBER appuser;

如果你有以下具体需求,我可以给你精确 SQL:

  • ✅ Web 应用只读账号
  • ✅ EF / Django / Java 连接用户
  • ✅ 只授权某个 Schema
  • ✅ Ubuntu + Docker 中的 SQL Server

直接说你的使用场景即可。

0 踩