云数据库Redis版支持在专有网络环境下开启免密访问,在保障安全性的前提下,实现更便捷的数据库连接。设置免密访问后,同一专有网络内的客户端无需使用密码即可连接Redis实例,同时也继续兼容通过用户名和密码的方式连接Redis实例。
前提条件
实例的网络类型为专有网络。
说明 如果Redis实例的网络类型为经典网络,您需要先将其切换为专有网络。相关操作,请参见切换为专有网络VPC。
注意事项
- 开启专有网络免密访问后,连接Redis使用的是默认账号(即与实例ID同名的账号,例如r-bp1zxszhcgatnx****),该账号拥有读写权限。
- 为保障安全性,开启专有网络免密访问后,通过公网地址连接Redis仍需密码验证。
说明 如果无法使用公网地址连接Redis实例,请升级实例的小版本至最新。相关操作,请参见升级小版本。
- 默认情况下,实例的#no_loose_check-whitelist-always参数被设置为no,即开启免密访问后,同一专有网络的客户端连接Redis实例时,无需将其IP地址添加至Redis实例的白名单中。更多信息,请参见设置实例参数。
说明
- 若开启免密访问后执行命令,提示错误:
(error) ERR illegal address
,表示当前客户端的IP地址未添加至白名单。您也可以将客户端的IP地址添加至Redis实例的白名单中;也可以将#no_loose_check-whitelist-always参数设置为no,Redis将不检查客户端的IP地址是否在白名单中。
- 云盘版不支持设置#no_loose_check-whitelist-always参数,更多信息请参见参数支持。
- 若开启免密访问后执行命令,提示错误:
操作步骤
连接示例
开启专有网络免密后的连接示例如下。
redis-cli -h host -p port // 例如:redis -h r-bp10noxlhcoim2****.redis.rds.aliyuncs.com -p 6379
JedisPoolConfig config = new JedisPoolConfig(); // 最大空闲连接数,需自行评估,不超过Redis实例的最大连接数。 config.setMaxIdle(100); // 最大连接数,需自行评估,不超过Redis实例的最大连接数。 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; try { 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();
说明 关于如何获取Redis实例的连接地址和密码,请参见查看连接地址。
相关API
API接口 | 说明 |
---|---|
ModifyInstanceVpcAuthMode | 开启或关闭专有网络免密访问。 |
常见问题
- Q:开启免密访问后,为什么仍会返回
WRONGPASS invalid username-password pair
报错?A:社区版6.0实例开启免密访问后,若输入错误的账号密码,系统会返回以上报错。请输入正确的账号密码或不输入账号密码。说明 密码格式:- 默认账号(即以实例ID命名的账号):直接填写密码。
- 新创建的账号:密码格式为
<user>:<password>
,例如testaccount:Rp829dlwa
。