云数据库Redis版 支持在专有网络环境下开启免密访问,在保障安全性的前提下,实现更便捷的数据库连接。设置免密访问后,同一专有网络内的客户端无需使用密码即可连接Redis实例,同时也继续兼容通过用户名和密码的方式连接Redis实例。

前提条件

实例的网络类型为专有网络。

说明

如果Redis实例的网络类型为经典网络,您需要先将其切换为专有网络。相关操作,请参见 切换为专有网络VPC

注意事项

  • 开启专有网络免密访问后,连接 Redis 使用的是默认账号(即与实例ID同名的账号,例如r-bp1zxszhcgatnx****),该账号拥有读写权限。

  • 为保障安全性,开启专有网络免密访问后,通过公网地址连接 Redis 仍需密码验证。

  • 默认情况下,实例的 #no_loose_check-whitelist-always 参数被设置为 no ,即开启免密访问后,同一专有网络的客户端连接可直接访问 Redis 实例时,无需将其IP地址添加至实例的白名单中。

    说明

    云盘版不支持设置 #no_loose_check-whitelist-always 参数,更多信息请参见 参数支持

操作步骤

  1. 访问 Redis实例列表 ,在上方选择地域,然后单击目标实例ID。
  2. 连接信息 的右侧,单击 设置免密访问

  3. 在右侧弹出的面板中,阅读相关提示并单击 确定

    设置成功后刷新页面, 设置免密访问 按钮将转变为 关闭免密访问 ,单击该按钮即可关闭免密功能。

    重要

    关闭该功能会导致使用免密访问功能的客户端无法连接到 Tair 实例。

    若您需要关闭该功能,为保障不影响客户端连接,请提前将客户端的验证方式修改为账号和密码的方式。

连接示例

开启专有网络免密后的连接示例如下。

说明

关于如何获取 Redis 实例的连接地址和密码,请参见 查看连接地址

redis-cli免密登录

redis-cli -h host -p port
// 例如:redis -h r-bp10noxlhcoim2****.redis.rds.aliyuncs.com -p 6379 

Jedis免密登录

JedisPoolConfig config = new JedisPoolConfig();
// 最大空闲连接数,需自行评估,不超过实例的最大连接数。
config.setMaxIdle(100);
// 最大连接数,需自行评估,不超过实例的最大连接数。
config.setMaxTotal(200);
config.setTestOnBorrow(false);
config.setTestOnReturn(false);
// host和port的值替换为实例的连接地址、端口,不需要密码参数。
String host = "r-bp10noxlhcoim2****.redis.rds.aliyuncs.com";
int port = 6379;
JedisPool pool = new JedisPool(config, host, port);
Jedis jedis = null;
    jedis = pool.getResource();
    /// ... do stuff here ... for example
    jedis.set("foo", "bar");
    System.out.println(jedis.get("foo"));
    jedis.zadd("sose", 0, "car");
    jedis.zadd("sose", 0, "bike");
    System.out.println(jedis.zrange("sose", 0, -1));
finally
    if(jedis != null)
        // 需要在每一次API调用结束之后close,close是将连接还回连接池,不是销毁。
        jedis.close();
// 只在最终程序退出时候调用一次。
pool.destroy();

相关API

API接口

说明

ModifyInstanceVpcAuthMode

开启或关闭专有网络免密访问。

常见问题

  • Q:开启免密访问后,为什么仍会返回 WRONGPASS invalid username-password pair 报错?

    A:社区版6.0实例开启免密访问后,若输入错误的账号密码,系统会返回以上报错。请输入正确的账号密码或不输入账号密码。

    说明

    密码格式:

    • 默认账号(即以实例ID命名的账号):直接填写密码。

    • 新创建的账号:密码格式为 <user>:<password> ,例如 testaccount:Rp829dlwa

  • Q:开启免密访问后,为什么使用同一专有网络的客户端连接 Redis 实例,仍报错 (error) ERR illegal address

    A:您可能将实例的 #no_loose_check-whitelist-always 参数设置为 yes ,且当前客户端的IP地址未添加至白名单。您可以将客户端的IP地址添加至实例的白名单中,或者将 #no_loose_check-whitelist-always 参数设置为 no