在Ubuntu上配置SQL Server權限的詳細步驟
在配置權限前,需先完成SQL Server的安裝與基礎配置。以下是關鍵步驟:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/ubuntu/20.04/mssql-server-2022 main"
sudo apt-get update && sudo apt-get install -y mssql-server
mssql-conf setup
,按提示設置SA賬戶密碼(系統管理員賬戶,需強密碼)并選擇SQL Server版本(如2022)。sudo systemctl start mssql-server && sudo systemctl enable mssql-server
權限管理需基于安全的環境,需完成以下配置:
sudo ufw allow 1433/tcp && sudo ufw reload
mssql
用戶(SQL Server運行賬戶)擁有數據目錄所有權sudo chown -R mssql:mssql /var/opt/mssql && sudo chmod -R 750 /var/opt/mssql
mssql.conf
文件sudo nano /var/opt/mssql/mssql.conf
添加或修改以下內容,保存后重啟服務:[security]
loginMode=SQL
權限管理的核心是登錄名(服務器級身份驗證)和數據庫用戶(數據庫級訪問)的關聯:
mssql-tools
)sudo apt-get install mssql-tools && echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc && source ~/.bashrc
sqlcmd -S localhost -U SA -P 'YourStrongPassword'
CREATE LOGIN [YourLoginName] WITH PASSWORD = 'YourComplexPassword123!';
YourDatabase
)并創建用戶USE YourDatabase;
CREATE USER [YourUserName] FOR LOGIN [YourLoginName];
根據用戶需求分配預定義角色或自定義權限,遵循最小權限原則:
db_owner
:擁有數據庫所有權限(慎用,僅管理員需要);db_datareader
:僅讀取數據(SELECT
權限);db_datawriter
:僅寫入數據(INSERT
/UPDATE
/DELETE
權限)。db_datareader
和db_datawriter
角色):ALTER ROLE db_datareader ADD MEMBER [YourUserName];
ALTER ROLE db_datawriter ADD MEMBER [YourUserName];
SELECT
、INSERT
):USE YourDatabase;
GRANT SELECT, INSERT ON dbo.YourTable TO [YourUserName];
sqlcmd -S localhost -U YourUserName -P 'YourComplexPassword123!' -d YourDatabase
SELECT
查詢或INSERT
插入),確認權限生效。例如:SELECT * FROM dbo.YourTable; -- 應成功(若擁有db_datareader權限)
INSERT INTO dbo.YourTable (Column1) VALUES ('Test'); -- 應成功(若擁有db_datawriter權限)
DROP TABLE dbo.YourTable; -- 應失?。oDROP權限)
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'login auditing', 3; -- 0=無審核,1=失敗,2=成功,3=全部
RECONFIGURE;
SELECT * FROM sys.database_permissions WHERE grantee_principal_id = USER_ID('YourUserName');
SELECT * FROM sys.server_permissions WHERE grantee_principal_id = USER_ID('YourLoginName');
sysadmin
或db_owner
角色授予普通用戶,僅在必要時使用。sp_configure
命令設置。以上步驟覆蓋了Ubuntu上SQL Server權限配置的核心流程,可根據實際需求調整角色或權限范圍。