在CentOS上進行SQL Server權限管理前,需完成以下基礎配置:
mssql-server
包安裝),并啟動服務(sudo systemctl start mssql-server
)。mssql
)對數據目錄(/var/opt/mssql/data
)、日志目錄(/var/opt/mssql/log
)有讀寫權限(sudo chown -R mssql:mssql /var/opt/mssql
;sudo chmod -R 750 /var/opt/mssql/data
)。sudo firewall-cmd --permanent --zone=public --add-port=1433/tcp
;sudo firewall-cmd --reload
)。使用工具(如SQL Server Management Studio (SSMS)、sqlcmd
命令行)連接到SQL Server實例:
localhost
),選擇身份驗證方式(SQL Server身份驗證需輸入sa
賬號密碼;Windows身份驗證需加入域)。sqlcmd -S localhost -U sa -P your_password
進入命令行。登錄賬戶用于連接到SQL Server實例,分為SQL Server身份驗證(用戶名/密碼)和Windows身份驗證(域賬戶):
-- 創建SQL Server身份驗證登錄賬戶(示例:用戶名`test_user`,密碼`StrongPass123`)
CREATE LOGIN [test_user] WITH PASSWORD = 'StrongPass123';
-- 創建Windows身份驗證登錄賬戶(示例:域賬戶`DOMAIN\user`)
CREATE LOGIN [DOMAIN\user] FROM WINDOWS;
注意:SQL Server身份驗證需啟用混合模式(安裝時勾選“混合模式身份驗證”,或后續通過ALTER SERVER CONFIGURATION SET AUTHENTICATION MODE = MIXED;
修改)。
登錄賬戶需關聯到具體數據庫才能訪問數據,使用CREATE USER
命令:
-- 切換到目標數據庫(如`TestDB`)
USE [TestDB];
-- 為登錄賬戶創建數據庫用戶(用戶名與登錄賬戶一致)
CREATE USER [test_user] FOR LOGIN [test_user];
若為Windows身份驗證,命令類似(CREATE USER [DOMAIN\user] FOR LOGIN [DOMAIN\user];
)。
SQL Server提供多種內置數據庫角色,可快速分配常用權限:
-- 分配只讀權限(SELECT)
USE [TestDB];
EXEC sp_addrolemember 'db_datareader', 'test_user';
-- 分配讀寫權限(SELECT、INSERT、UPDATE、DELETE)
USE [TestDB];
EXEC sp_addrolemember 'db_datawriter', 'test_user';
-- 分配db_owner權限(完全控制,慎用)
USE [TestDB];
EXEC sp_addrolemember 'db_owner', 'test_user';
注意:db_owner
權限過高,僅授予管理員;常規用戶建議使用db_datareader
/db_datawriter
。
若內置角色無法滿足需求,可創建自定義角色并分配特定權限:
-- 1. 創建自定義角色(如`custom_report_role`)
CREATE ROLE [custom_report_role];
-- 2. 分配具體權限(如`SELECT`權限給`Sales`表的`OrderID`、`Amount`列)
USE [TestDB];
GRANT SELECT ON [dbo].[Sales] ([OrderID], [Amount]) TO [custom_report_role];
-- 3. 將用戶添加到自定義角色
USE [TestDB];
EXEC sp_addrolemember 'custom_report_role', 'test_user';
優勢:避免過度授權,符合“最小權限原則”。
使用目標用戶連接SQL Server,執行測試查詢驗證權限:
-- 使用sqlcmd以`test_user`身份連接
sqlcmd -S localhost -U test_user -P StrongPass123
-- 測試查詢(若`db_datareader`權限生效,可查詢`Sales`表)
SELECT * FROM [dbo].[Sales];
若查詢成功,說明權限配置正確;若報錯(如“SELECT權限被拒絕”),需檢查角色/權限分配。
INSERT
/UPDATE
權限)。sys.database_principals
、sys.database_permissions
視圖檢查用戶權限(如SELECT * FROM sys.database_principals WHERE type_desc = 'SQL_USER';
)。sa
賬號(ALTER LOGIN sa DISABLE;
)或設置強密碼(勾選“強制實施密碼策略”“強制密碼過期”)。ALTER SERVER CONFIGURATION SET FORCE_ENCRYPTION = ON;
),保護數據傳輸安全。通過以上步驟,可在CentOS上實現SQL Server的精細化權限管理,保障數據庫安全。