在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; -- 应失败(无DROP权限)
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权限配置的核心流程,可根据实际需求调整角色或权限范围。