Apache Ranger不使用root密码进行初始化

櫰木2年前技术文章1097

1、背景

由于使用的数据库由dba进行管理,我们无法获取到对应的ranger数据库的root密码。需要使用数据库普通用户对表进行初始化

2、解决

  • 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 'ranger'@'%' with grant option;
grant all privileges on ranger.* to 'ranger'@'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 'ranger'@'localhost' IDENTIFIED BY 'Ranger123';
grant all privileges on ranger141.* to 'ranger'@'%' with grant option;
grant all privileges on ranger141.* to 'test'@'localhost' with grant option;
FLUSH PRIVILEGES;

#修改install.properties中的配置
db_root_user=test
db_root_password=******
db_user=test
db_password=******


相关文章

LINUX 安全运维-文件安全

LINUX 安全运维-文件安全

文件的ACL针对文件以及文件夹我们在新建的时候,通常会有一个默认的权限:[rootobogontmplmkdirtest[rootcbogontmp]touchtestxt[rootcbogontmp...

oracle回收站简介

一、回收站简介1、概念和功能回收站从ORACLE 10g开始引入,全称叫Tablespace Recycle Bin。回收站实际是一个逻辑区域,使用的已经分配的表空间,表被drop时,数据不会实际删除...

手动模拟 flannel 的 vxlan 实现节点命名空间互通

手动模拟 flannel 的 vxlan 实现节点命名空间互通

在flannel网络插件中实现两个节点互通方式有host-gw vxlan ipip等方式,之前已经手动模拟过host-gw模式,此处再模拟一下vxlan模式点对点访问。手动实验两个命名空间通信Nod...

MySQL运维实战之备份和恢复(8.1)xtrabackup全量备份

xtrabackup是percona开源的mysql物理备份工具。xtrabackup 8.0支持mysql 8.0版本的备份和恢复。xtrabackup 2.4支持mysql 5.7及以下版本的备份...

Hive架构图及Hive SQL的执行流程

Hive架构图及Hive SQL的执行流程

1、Hive产生背景MapReduce编程的不便性HDFS上的文件缺少Schema(表名,名称,ID等,为数据库对象的集合)2、Hive是什么Hive的使用场景是什么?基于Hadoop做一些数据清洗啊...

hive 报 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster

hive 报 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster

解决办法:关键需要配置两个配置:mapred-site.xml 和 yarn-site.xml下面配置hadoop classpath。先运行shell命令:hadoop classpath添加一个配...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。