问题描述
公司排查弱口令问题,需要修改生产环境nacos服务器的默认账号密码nacos/nacos,本人修改后忘记备份密码,导致后面无法登录。
解决方案:
1、有其他账号(管理员角色)
正常情况下,登录自己账号后可以重置密码。
也可以登录其他管理员角色的账号,新建、修改用户密码。
2、部署nacos时如果你在nacos配置中设置了MySQL数据库,可以直接在数据库重置密码
①启一个demo,定义好新的nacos密码,获取加密后的字符串;
@Test
public void test5() {
System.out.println(new BCryptPasswordEncoder().encode("nacos2024"));
}
需要引入依赖才能使用上面的加密方法
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
②找到nacos_config数据库,users表,将要替换的密码加密后的值覆盖原账号的密文;
③重新登录
3、部署nacos时如果使用了nacos内置数据库
可通过调用nacos内置API修改密码,方法如下(已经过测试)。
linux系统中,执行以下命令:
#新增用户
curl -X POST 'http://{nacos服务器ip}:{nacos服务器端口}/nacos/v1/auth/users' -d 'username={新增的用户名}&password={新增的用户密码明文}'
#更新密码
curl -X PUT 'http://{nacos服务器ip}:{nacos服务器端口}/nacos/v1/auth/users' -d 'username={要更新的用户名}&newPassword={要更新的用户密码明文}'
也可以通过postman等接口调用工具,模拟post请求。
需要注意,第三种方法的前提是nacos没有启动鉴权认证,如果启用了认证,可以修改nacos的config包下面的application.properties中的配置,将nacos.core.auth.enabled改为false,重启nacos再试。