美文网首页
如何免ROOT密码安装Apache Ranger Admin

如何免ROOT密码安装Apache Ranger Admin

作者: _Kantin | 来源:发表于2021-05-09 21:59 被阅读0次

    背景

    • 在ranger admin部署的官方文档中,配置文件要求要有DB的root用户名和密码。但在实际生产应用中,一般都是使用DBA创建好的库,很难要到root用户的密码。
    • 网上的很多参考文章,一般都是自己本地部署的mysql服务器,因此是能获取到root密码的。如果没有root密码的话则可参考下此文章
    • 刚开始以为要不到账户的话,那么我可以就要权限啊,毕竟有权限的了也就不需要root用户了,但是实际权限也是要不到的!那么只能从逻辑入手了。

    解决

    • ranger admin每次修改配置(install.properties)都需要重新的编译(./setup.sh),编译过程会把配置重新写入,不然怎么重启ranger admin都不生效的。
    • 简单来说,编译过程主要代码逻辑是执行dba_script.py, ranger_credential_helper.py,db_setup.py三个py脚本,其中需要root权限是在dba_script.py中使用到的。
    • dba_script.py执行授权的过程,使用root权限除了一些对元数据的select请求外,核心作用是为用户授予库的权限。如假设我当前是A用户,那么会使用root用户去执行命令
    grant all privileges on ranger.* to 'A'@'%' with grant option;
    grant all privileges on ranger.* to 'A'@'localhost' with grant option;
    
    • 从setup.sh中查看调用dba_script.py执行的代码
    run_dba_steps(){
        getPropertyFromFileNoExit 'setup_mode' $PROPFILE setup_mode false
        if [ "x${setup_mode}x" == "xSeparateDBAx" ]; then
            log "[I] Setup mode is set to SeparateDBA. Not Running DBA steps. Please run dba_script.py before running setup..!";
        else
            log "[I] Setup mode is not set. Running DBA steps..";
                    python dba_script.py -q
            fi
    }
    
    • 因为知道ranger使用root密码的目的是为用户授予库的权限,如果我们已经授权好,那么root密码应该可以是非必须的。从上面看如果setup_mode设置为xSeparateDBAx的话,则if逻辑不会走dba_script.py这个脚本(前提是我们先把授权操作做了)
    • 关于如何将setup_mode,从setup.sh可以指定这个install.properties中的配置项,因此只要设置它的值即可。
    #------------------------- DB CONFIG - BEGIN ----------------------------------
    # Uncomment the below if the DBA steps need to be run separately
    setup_mode=SeparateDBA
    
    

    例子

    • 如下创建用户并授权,然后重新执行./setup.sh就可以编译通过了。下例演示的是本地mysql的例子,如果是平时生产应用由DBA提供的话,则只有确保对应用户拥有库的全部权限即可。
    #修改install.properties中的配置
    setup_mode=SeparateDBA
    
    #用root登陆本地mysql服务器
    CREATE USER 'test'@'localhost' IDENTIFIED BY 'test123';
    grant all privileges on ranger.* to 'test'@'%' with grant option;
    grant all privileges on ranger.* to 'test'@'localhost' with grant option;
    FLUSH PRIVILEGES;
    
    #修改install.properties中的配置
    db_root_user=test
    db_root_password=******
    db_user=test
    db_password=******
    

    相关文章

      网友评论

          本文标题:如何免ROOT密码安装Apache Ranger Admin

          本文链接:https://www.haomeiwen.com/subject/hvivdltx.html