- Landscape
zookeeper的节点设置ACL权限控制后,无设置超级用户的情况下,不允许更新ACL。给不少开发者带来许多的困扰,因这样权限一经设定,在没设置超级用户的情况下,无法更新权限。为了达到对所有节点的ACL控制权,这里我们演示如何开通zookeeper超级管理员。
1 导入zookeeper jar包
2 生成加密串
public class SupperAccountSetting {
public static void main(String[] args) throws NoSuchAlgorithmException {
String generateDigest = DigestAuthenticationProvider.generateDigest("test:testpwd");
System.out.println(generateDigest);
}
}
输出:
test:P5uxC7NoocCV8UOyZLyg3QIoVCM=
此处test为super账号的账号名
testpwd为super账号的密码
3 配置zookeeper
找到zookeeper的安装路径下的bin目录,编辑zkEnv.sh,加入环境变量
"-Dzookeeper.DigestAuthenticationProvider.superDigest=test:P5uxC7NoocCV8UOyZLyg3QIoVCM= $SERVER_JVMFLAGS"
4 重启zookeeper
在zookeeper安装目录的bin目录下执行如下命令:
[cat@host bin] # ./zkServer.sh restart
5 使用super账号操作zookeeper节点
addauth digest test:testpwd
6 重新设置节点权限
setAcl 节点名称 权限策略