在CentOS上进行权限管理前,需先通过工具连接到SQL Server实例。常用工具包括SQL Server Management Studio (SSMS)(需在Windows客户端安装)或sqlcmd(命令行工具,CentOS原生支持)。
localhost
),选择身份验证方式(SQL Server身份验证需输入sa
账号密码,Windows身份验证需域账号),点击“连接”。sqlcmd -S localhost -U sa -P your_password
(替换为实际密码),进入SQL命令行。登录账户用于允许用户连接到SQL Server实例,分为SQL Server身份验证(用户名/密码)和Windows身份验证(域账号)。
CREATE LOGIN [username] WITH PASSWORD = 'StrongPassword123!';
示例:创建名为app_user
的登录账户,密码为App@2025
。CREATE LOGIN [domain\username] FROM WINDOWS;
注:
sa
是SQL Server默认管理员账户,建议禁用或限制其使用。
登录账户需关联到具体数据库才能访问数据,需为每个需要访问的数据库创建对应的数据库用户。
TestDB
),右键“安全性”→“用户”→“新建用户”。app_user
),在“登录名”中选择已创建的登录账户(如app_user
)。USE [TestDB]; -- 切换至目标数据库
CREATE USER [app_user] FOR LOGIN [app_user];
SQL Server提供多种内置数据库角色,可快速授予用户常用权限,避免逐个分配:
SELECT
权限(只读)。INSERT
、UPDATE
、DELETE
权限(读写)。分配命令示例:
USE [TestDB];
EXEC sp_addrolemember 'db_datareader', 'app_user'; -- 添加只读权限
EXEC sp_addrolemember 'db_datawriter', 'app_user'; -- 添加读写权限
若内置角色无法满足需求,可创建自定义角色并分配特定权限,实现精准授权。
USE [TestDB];
CREATE ROLE [custom_report_role]; -- 创建名为“报表查询”的角色
USE [TestDB];
GRANT SELECT ON [dbo].[SalesData] TO [custom_report_role]; -- 授予SalesData表的SELECT权限
GRANT EXECUTE ON [dbo].[GetSalesSummary] TO [custom_report_role]; -- 授予存储过程的EXECUTE权限
USE [TestDB];
EXEC sp_addrolemember 'custom_report_role', 'app_user';
创建完成后,需通过目标用户身份登录,验证权限是否生效。
sqlcmd -S localhost -U app_user -P App@2025
输入以下命令测试:SELECT * FROM SalesData; -- 测试SELECT权限
INSERT INTO SalesData (Product, Amount) VALUES ('Laptop', 1000); -- 测试INSERT权限(需有对应权限)
app_user
身份登录SSMS,尝试展开目标表并执行查询,若无错误则权限生效。SELECT
权限,避免使用db_owner
)。sys.database_permissions
视图查看用户权限,清理未使用的账户:SELECT * FROM sys.database_permissions WHERE grantee_principal_id = USER_ID('app_user');
sa
账户的密码策略(ALTER LOGIN sa WITH CHECK_POLICY = ON;
),定期更换密码。通过以上步骤,可在CentOS上完成SQL Server的权限管理,确保数据库安全的同时满足用户访问需求。