在 Ubuntu 下使用 SQL Server(Microsoft SQL Server on Linux) 时,授权(权限管理)主要通过 T-SQL 完成,而不是像 MySQL 那样用 GRANT 命令行工具。下面按常见场景说明。
sqlcmd -S localhost -U sa -P '你的SA密码'
或使用 mssql-cli(更友好):
mssql-cli -U sa -P '你的SA密码'
SQL Server 权限是 层级结构:
服务器级别(Server)
└── 数据库级别(Database)
└── 对象级别(Table / View / Procedure)
CREATE LOGIN testuser WITH PASSWORD = 'Strong@123';
⚠️ 密码必须符合 SQL Server 复杂度要求
USE testdb;
GO
CREATE USER testuser FOR LOGIN testuser;
GO
ALTER ROLE db_datareader ADD MEMBER testuser; -- 只读
ALTER ROLE db_datawriter ADD MEMBER testuser; -- 写
常用内置角色:
db_owner:数据库所有者(最高)db_datareader:只读db_datawriter:可写db_ddladmin:可建表/改结构USE testdb;
GO
GRANT SELECT, INSERT, UPDATE, DELETE
ON DATABASE::testdb
TO testuser;
GRANT SELECT, UPDATE
ON dbo.orders
TO testuser;
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:
直接说你的使用场景即可。