创建普通账号和高权限账号

您可以通过RDS控制台或API接口为RDS SQL Server实例创建高权限账号和普通账号。

前提条件

创建RDS SQL Server实例

注意事项

  • 实例的第一个账号必须创建为高权限账号,且每个实例只能创建一个高权限账号。

  • 不建议使用Terraform创建高权限用户。高权限账户目前无法通过Terraform来删除,如果使用Terraform创建了高权限账户,该账号无法通过Terraform来删除,可能会导致实例也无法正常释放。

  • 同一实例下的数据库共享该实例下的所有资源。

  • 账号名称或数据库名称不能与关键字重复。

  • 为保障数据库的安全,请将数据库账号的密码设置为强密码,并定期更换。您也可以为账号设置密码策略,以控制账号密码的使用时长,增强账号的安全性。

  • 分配数据库账号权限时,请按最小权限原则和业务角色创建账号,并合理分配只读和读写权限。必要时可以把数据库账号和数据库拆分成更小粒度,使每个数据库账号只能访问其业务之内的数据。如果不需要数据库写入操作,请分配只读权限。

账号权限规则

高权限账号管理规则

操作场景

权限行为说明

创建高权限账号

创建时该账号将自动获得已有数据库的db_owner角色权限,无需额外手动授权。

新增数据库

  • 创建账号后新建的数据库,该账号默认无访问权限。

  • 需登录RDS控制台,修改高权限账号的权限范围,授权后方可获得该数据库的db_owner权限。

删除高权限账号

  • 删除操作会彻底移除该账号,及其在所有数据库中的操作权限。

  • 账号无法再用于登录或执行任何数据库操作。

重新创建高权限账号

  • 再次创建高权限账号,无论是否使用原账号名,系统将自动授予其对当前实例中所有已存在数据库db_owner权限。

  • 对此后新创建的数据库,仍需手动修改权限才能获得该数据库的db_owner权限。

普通账号管理规则

操作场景

权限行为说明

创建普通账号

  • 创建时需手动指定授权数据库和对应权限(读写、只读或所有者)。

  • 若未选择任何数据库,则该账号创建成功但无任何数据库访问权限。

  • 账号无任何数据库的权限,必须手动授权

新增数据库

删除普通账号

  • 删除后,该账号的所有数据库访问权限被彻底清除。

  • 无法再通过该账号登录或执行任何数据库操作。

  • 已绑定的应用连接将失败,需及时更新账号密码信息。

重新创建同名普通账号

  • 即使使用与之前相同的账号名称重新创建,也不会自动恢复原有权限。

  • 新建账号为“空白状态”,无任何数据库的权限。

  • 必须手动重新授权数据库并设置权限,才能恢复访问能力。

创建账号

高权限账号

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏单击账号管理

  3. 单击创建账号,设置如下参数。

    参数

    说明

    数据库账号

    填写数据库账号名称,需由小写字母、数字、下划线组成,以字母开头,以字母或数字结尾。

    账号类型

    选择高权限账号,一个实例仅支持有一个高权限账号。

    新密码

    填写账号密码。要求如下:

    • 长度为8~32个字符。

    • 由大写字母、小写字母、数字、特殊字符中的任意三种组成。

    • 特殊字符为!@#$%^&*()_+-=

    确认密码

    填写与新密码一致的字段,需确保密码输入正确。

    应用密码策略

    创建账号时,选择是否应用密码策略,以控制账号密码的使用时长,增强账号的安全性。应用前您需要先设置账号密码策略

    备注

    输入备注说明,最多256个字符。

  4. 单击确定

    单击刷新按钮,即可查看已创建的账号。

普通账号

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏单击账号管理

  3. 单击创建账号,设置如下参数。

    参数

    说明

    数据库账号

    填写数据库账号名称,需由小写字母、数字、下划线组成,以字母开头,以字母或数字结尾。

    账号类型

    选择普通账号,一个实例支持有多个普通账号。

    授权数据库:

    您可以为普通账号授权一个或多个数据库,并为其设置不同的权限。若尚未创建数据库,该值可以为空,后续为账号重新授权数据库即可。授权操作如下:

    1. 未授权数据库栏中,选中要授权的数据库。

    2. 单击image.png,将数据库添加到已授权数据库栏中。

    3. 为该账号设置数据库权限,可设置为读写(DML)只读所有者。权限详情,请参见账号权限列表

    新密码

    填写账号密码。要求如下:

    • 长度为8~32个字符。

    • 由大写字母、小写字母、数字、特殊字符中的任意三种组成。

    • 特殊字符为!@#$%^&*()_+-=

    确认密码

    填写与新密码一致的字段,需确保密码输入正确。

    应用密码策略

    创建账号时,选择是否应用密码策略,以控制账号密码的使用时长,增强账号的安全性。应用前您需要先设置账号密码策略

    备注

    输入备注说明,最多256个字符。

  4. 单击确定

    单击刷新按钮,即可查看已创建的账号。

相关文档

常见问题

主实例创建的账号是否可以在只读实例上使用?

主实例创建的账号会同步到只读实例,只读实例无法管理账号。只读实例上的账号权限仅限于读操作,不能进行写操作。

RDS SQL Server实例如何跳过用户账号密码复杂度的限制?

为保障数据库的安全,RDS SQL Server限制用户的账号密码必须由大写字母、小写字母、数字、特殊字符中的任意三种组成,并要求密码长度在8~32字符间

但若因业务需要,必须跳过密码复杂度的限制,可按照如下操作进行:

重要

密码过于简单会增加系统被攻击的风险,建议您将数据库账号的密码设置为强密码,并定期更换。

  1. RDS实例中创建一个用户账号A,并使用账号A通过SSMS连接SQL Server实例

  2. 通过账号A创建目标账号,并在创建目标账号时关闭密码检查复杂度的策略,SQL如下:

    说明

    通过DMS连接SQL Server数据库无法切换到master库,请通过SSMS连接并执行SQL。

    -- 先切换到master库
    USE master
    GO
    -- 创建目标账号
    CREATE LOGIN [目标账号名称] WITH PASSWORD=N'目标账号密码', CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
    GO
    -- 启用目标账号
    ALTER LOGIN [目标账号名称] ENABLE
    GO

    CHECK_EXPIRATION = OFF表示将关闭密码过期功能,CHECK_POLICY = OFF表示将关闭密码复杂性策略的检查(例如密码长度、复杂性等要求)。

    说明

    您可以通过RDS控制台为RDS SQL Server实例的用户账号单独自定义账号密码策略,以实现精细化的密码管理,增强账号的安全性。

RDS SQL Server账号显示未激活,且登录报错The account is disabled.

问题描述

RDS SQL Server实例账号管理页面中,用户账号状态显示为未激活。通过未激活的账号登录数据库时,会报错The account is disabled.

image

image

问题原因

通过RDS SQL Server实例账号管理页面或API创建的用户账号默认是已激活状态,无需用户手动激活。如果账号状态变为未激活,通常可能是:

  • 用户通过SQL自行创建账号时,指定了账号状态为禁用(Disabled)。

  • 用户通过RDS控制台或API创建账号后,手动修改了账号状态为禁用(Disabled)。

解决方案

  1. 使用其他处于激活状态的账号,通过SSMS连接到SQL Server实例

  2. 检查目标用户账号的禁用状态,若被禁用则修改状态为启用(Enabled)。

    • 方法一:通过SSMS图形化界面查看并修改目标账号的使用状态。

      image

    • 方法二:通过SQL查看并修改目标账号的使用状态。

      1. 执行以下SQL查询,确认目标账号的当前状态:

        -- 查询目标登录名的状态
        SELECT 
            name AS LoginName,          -- 登录名
            is_disabled AS IsDisabled   -- 状态:1表示禁用,0表示启用
        FROM 
            sys.server_principals
        WHERE 
            name = '替换为目标登录名';

        image

      2. 如果目标账号被禁用(is_disabled = 1),执行以下SQL命令启用账号:

        ALTER LOGIN [替换为目标登录名] ENABLE;

        image

通过CreateAccount接口创建用户时报错AccountLimitExceeded

问题描述

用户通过CreateAccount接口创建数据库账号时,如果参数设置不正确,可能出现如下报错

"Code": "AccountLimitExceeded",
"Message": "AccountQuotaExceeded: Exceeding the allowed amount of account"

此错误表明当前实例中已达到允许的最大账号数量限制。

image

报错原因

  • 账号数量限制:最多允许一个高权限账号和一个超级权限账号,且高权限账号不可删除。

  • 参数设置问题:在SQL Server中,若AccountType设置为Sysadmin(超级权限账号)或Super(高权限账号),但数据库中已有对应权限账号,则会触发AccountLimitExceeded报错。

解决方案

  • 创建普通账号:确保AccountType设置为Normal,RDS通常对普通账号数量无限制,具体的数量与实例内核有关。

  • 创建高权限账号:确保AccountType设置为Super,可通过RDS控制台账号管理页面检查实例中是否已存在高权限账号,若已存在,请避免重复创建

  • 创建超级权限账号:确保AccountType设置为Sysadmin,可通过RDS控制台账号管理页面检查实例中是否已存在高权限账号,若已存在,请避免重复创建