Appearance
SQL Server 用户授权与远程连接配置指南
💡 说明
作为一名“半个运维”,掌握数据库的权限控制与远程连接配置是保障系统安全与可用性的基础。本指南将分散的授权操作与远程连接步骤整合,形成标准化的配置 SOP。
1. 用户创建与权限管理
1.1 创建登录名
- 使用 Windows 身份验证或
sa账号登录 SSMS。 - 展开 安全性 -> 右键点击 登录名 -> 选择 新建登录名。
- 在“常规”页签中输入用户名,选择“SQL Server 身份验证”并设置密码。
1.2 服务器角色授权 (Server Roles)
在“服务器角色”面板中,根据用户职责勾选相应权限。默认为 public。
| 服务器角色 | 说明 |
|---|---|
| sysadmin | 🟢 执行 SQL Server 中的任何操作(最高权限) |
| serveradmin | 配置服务器设置 |
| setupadmin | 安装复制和管理扩展过程 |
| securityadmin | 管理登录名、CREATE DATABASE 权限及阅读审计 |
| processadmin | 管理 SQL Server 进程 |
| dbcreator | 创建、修改、删除和还原任何数据库 |
| diskadmin | 管理磁盘文件 |
1.3 数据库映射与角色身份 (Database Roles)
在“用户映射”面板中,勾选用户可访问的数据库,并在下方分配具体的成员身份。
| 数据库角色 | 说明 |
|---|---|
| db_owner | 🔴 拥有该数据库的所有权限(建议为特定库管理员分配) |
| db_accessadmin | 可以添加或删除数据库用户 |
| db_datareader | 🔵 只读:可以查看所有用户表中的数据 |
| db_datawriter | 🟡 只写:可以添加、修改或删除用户表数据 |
| db_ddladmin | 可以在数据库中执行所有 DDL 操作(如建表、改表) |
| db_securityadmin | 管理数据库内的安全权限 |
| db_backupoperator | 可以备份数据库 |
| db_denydatareader | 严禁读取数据库内任何数据 |
| db_denydatawriter | 严禁修改数据库内任何数据 |
⚠️ 注意:如果为一个非 sysadmin 账号指定管理某个数据库,必须勾选
db_owner项,否则该账号可能无法看到库中的数据表。
2. 跨网远程连接配置
实现不同网络(如公司 A 到家里 B)之间的数据库连接,需要经过 SSMS、配置管理器、防火墙和路由器四个层级的协同配置。
2.1 开启数据库远程访问 (SSMS)
- 身份验证模式:右键点击服务器实例 -> 属性 -> 安全性,选中“SQL Server 和 Windows 身份验证模式”。
- 允许远程连接:在属性窗口选择 连接,勾选“允许远程连接此服务器”。
- 服务器配置面:右键点击数据库 -> 方面 (Facets) -> 在下拉框选择“服务器配置”,确保
RemoteAccessEnabled属性设为True。
2.2 SQL Server 配置管理器 (SSCM)
- 打开 SQL Server 配置管理器。
- 服务检查:确保
SQL Server和SQL Server Browser服务处于正在运行状态。 - 网络配置:展开“SQL Server 网络配置” -> 实例的协议(如 MSSQLSERVER) -> 启用 TCP/IP。
- 端口设置:双击 TCP/IP,在“IP 地址”选项卡中滚动到底部,将
IPAll的 TCP 端口 设置为默认的1433。 - 客户端协议:同时确保“SQL Native Client 11.0 配置”下的 TCP/IP 也是启用状态。
2.3 防火墙入站规则
- 打开“具有高级安全性的 Windows 防火墙”。
- 选择 入站规则 -> 新建规则。
- 选择 端口 -> TCP -> 指定本地端口
1433。 - 选择 允许连接,并为规则命名(如
SQLServer_Remote_Access)。
2.4 路由器端口转发与花生壳
若要从外网访问内网数据库,需在路由器端进行映射:
- 端口转发:在路由器管理后台的“虚拟服务器”或“端口转发”中新增记录。
- 内部端口:1433
- 外部端口:可设为 1433 或其他(提升安全性)
- 内部 IP:数据库服务器的内网静态 IP。
- 动态域名 (DDNS):配合花生壳等工具绑定域名,确保外网可以通过固定域名访问不断变化的公网 IP。
✅ 连接测试 在远程客户端的 SSMS 中,服务器名称填写:域名,外部端口 (例如 myhome.vicp.net,1433),使用 SQL Server 身份验证登录即可。
🔗 参考资料
