Debian系统下SQL Server权限设置方法
一、前置准备:安装SQL Server及必要工具
在Debian系统上设置SQL Server权限前,需先完成SQL Server的安装及命令行工具配置:
- 更新系统并安装依赖:
sudo apt update && sudo apt upgrade -y sudo apt install -y curl gnupg apt-transport-https - 添加Microsoft SQL Server存储库:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/debian/12/prod stable main" | sudo tee /etc/apt/sources.list.d/mssql-server.list > /dev/null - 安装SQL Server:
sudo apt install -y mssql-server sudo /opt/mssql/bin/mssql-conf setup # 按提示设置SA用户密码 - 安装命令行工具(用于后续操作):
sudo apt install -y mssql-tools unixodbc-dev echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc # 添加环境变量 source ~/.bashrc
以上步骤确保SQL Server正常运行,并准备好sqlcmd等工具用于权限管理。
二、登录SQL Server
使用系统管理员账户(默认sa)登录SQL Server,为后续权限操作做准备:
sqlcmd -S localhost -U sa -P 'YourStrongSAPassword'
输入密码后,进入SQL Server命令行界面(显示1>表示登录成功)。
三、创建登录名(服务器级账户)
登录名用于验证用户访问SQL Server实例的合法性,属于服务器级权限:
-- 在master数据库中创建登录名(示例:创建名为"newuser"的登录名,密码为"YourPassword123")
CREATE LOGIN newuser WITH PASSWORD = 'YourPassword123';
GO
说明:
- 登录名是访问SQL Server的前提,但需关联数据库用户才能操作具体数据库。
四、创建数据库用户(数据库级映射)
将登录名映射到具体数据库,创建数据库级用户,用于操作该数据库:
-- 切换到目标数据库(示例:切换到"mydatabase"数据库)
USE mydatabase;
GO
-- 基于登录名创建数据库用户(示例:创建名为"newuser"的数据库用户)
CREATE USER newuser FOR LOGIN newuser;
GO
说明:
- 一个登录名可映射到多个数据库的不同用户,但每个数据库需单独创建用户。
五、分配权限(核心步骤)
权限分配可通过角色分配(简化管理)或直接授权(精细化控制)实现:
1. 角色分配(推荐)
SQL Server提供预定义数据库角色,覆盖常见权限需求:
-- 将用户添加到"db_datareader"角色(授予SELECT权限)
USE mydatabase;
GO
EXEC sp_addrolemember 'db_datareader', 'newuser';
GO
-- 将用户添加到"db_datawriter"角色(授予INSERT/UPDATE/DELETE权限)
EXEC sp_addrolemember 'db_datawriter', 'newuser';
GO
-- 将用户添加到"db_owner"角色(授予数据库所有权限,谨慎使用)
EXEC sp_addrolemember 'db_owner', 'newuser';
GO
常用预定义角色:
db_datareader:读取数据(SELECT)。db_datawriter:写入数据(INSERT/UPDATE/DELETE)。db_owner:数据库所有者(所有权限)。db_ddladmin:执行DDL语句(CREATE/ALTER/DROP)。
2. 直接授权(精细化控制)
若需更细粒度的权限(如特定表的特定操作),可使用GRANT语句:
-- 授予用户对"employees"表的SELECT权限
USE mydatabase;
GO
GRANT SELECT ON dbo.employees TO newuser;
GO
-- 授予用户对"products"表的INSERT/UPDATE权限
GRANT INSERT, UPDATE ON dbo.products TO newuser;
GO
-- 授予用户对"orders"表的DELETE权限
GRANT DELETE ON dbo.orders TO newuser;
GO
说明:
dbo为默认架构,可根据实际情况替换为自定义架构。
六、验证权限
创建完成后,可通过以下方式验证用户权限:
- 使用新用户登录:
sqlcmd -S localhost -U newuser -P 'YourPassword123' - 查询权限信息:
结果将显示用户拥有的权限类型(如USE mydatabase; GO SELECT * FROM sys.database_permissions WHERE grantee_principal_id = USER_ID('newuser'); GOSELECT、INSERT)及对应对象。
七、可选:创建自定义角色(简化批量权限管理)
若需为多个用户分配相同权限,可创建自定义角色并分配权限:
-- 创建自定义角色(示例:创建"sales_team"角色)
USE mydatabase;
GO
CREATE ROLE sales_team;
GO
-- 授予角色权限(示例:授予销售团队对"orders"表的SELECT/INSERT权限)
GRANT SELECT, INSERT ON dbo.orders TO sales_team;
GO
-- 将用户添加到自定义角色
EXEC sp_addrolemember 'sales_team', 'newuser';
GO
优势:
- 批量管理用户权限,修改角色权限即可同步到所有成员。
注意事项
- 权限最小化:仅授予用户必要的权限,避免过度授权(如不需要
db_owner则不使用)。 - 定期审计:通过
sys.database_permissions视图定期检查权限分配情况。 - 密码安全:使用强密码,并定期更换SA及用户密码。
- 备份:修改权限前备份数据库,防止误操作导致数据丢失。
以上就是关于“Debian系统下SQL Server权限设置方法”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm