更新时间:2024-10-30 GMT+08:00

开启账号直达DB

操作场景

GeminiDB Redis实例支持创建多个子账号,实现多业务共用实例,从而帮助DBA(数据库管理员)有效降本。不同账号之间可以配置DB(数据库)级隔离,防止误操作。通用的账号管理功能仅支持使用auth <user> <pwd> 或者auth <user:pwd>的鉴权方式,对于用户不输入<user>或者不方便在代码中修改<pwd>为<user:pwd>的场景不兼容,这种场景下可以使用DB自动定向功能,即通过auth <pwd>鉴权来达到多用户DB隔离的目的。

示例:

  1. 为业务A分配一组账号/密码(user1/p1),并配置该密码仅可访问“DB 10”。
  2. 为业务B分配另一组账号/密码(user2/p2),并配置该密码仅可访问“DB 18”。

业务往往希望减少应用程序改动,例如业务B不想配置客户端的DB参数为18,而是保持默认。这个场景下就可以开启账号直达DB功能,实现仅用密码即可自动定向指定DB 18的效果。此时即使业务B误操作select到无权限的DB 10,也没有在DB10上操作数据的权限,不用担心业务A的数据受到影响。使用效果如下所示:

使用须知

  • 每个账号仅支持设置1个数据库,否则鉴权失败。
  • 新账号的密码不能与已知密码重复,否则鉴权失败。

开启账号直达DB功能

通过设置实例参数“EnableAclDbDirect”值为“yes”,开启直达DB功能。设置方法请参考修改当前实例的参数

图1 参数

如何使用新账号访问数据库

  1. 命令行访问:auth PWD
  2. 业务程序使用SDK访问:将PWD作为密码参数值。

    使用auth argc登录时,argc中不能含有冒号,若输入的错误密码含有冒号时,返回值与开源输入auth argc1 argc2的返回值相同。