apache服务器Permission denied:access to / denied解决方法

Permission denied:access to / denied

请教了好人都说是由于apache的配置文件httpd.conf中的<Directory / > 中的的deny from all的原因,可是我翻遍了所有的有关跟用户权限相关的配置,都没有解决。后来才发现/usr目录的访问权限是任何人可读,但是不可执行,因此改变 /usr目录的访问权限,chmod -R o+x /usr,一切ok

Connected to: Apache Hive (version 3.1.2) Driver: Hive JDBC (version 3.1.2) Transaction isolation: TRANSACTION_REPEATABLE_READ Beeline version 3.1.2 by Apache Hive 0: jdbc:hive2://bigdata1:10000> use ods; No rows affected (0.145 seconds) 0: jdbc:hive2://bigdata1:10000> SHOW TABLES LIKE 'customer_inf'; +---------------+ | tab_name | +---------------+ | customer_inf | +---------------+ 1 row selected (0.452 seconds) 0: jdbc:hive2://bigdata1:10000> select * from ods.crstomer_inf;Closing: 0: jdbc:hive2://bigdata1:10000 ^C^C[root@bigdata1 ~]# ^C [root@bigdata1 ~]# beeline -u "jdbc:hive2://bigdata1:10000" -p root SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/module/hadoop-3.1.3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/module/hive-3.1.2/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] Connecting to jdbc:hive2://bigdata1:10000 Connected to: Apache Hive (version 3.1.2) Driver: Hive JDBC (version 3.1.2) Transaction isolation: TRANSACTION_REPEATABLE_READ Beeline version 3.1.2 by Apache Hive 0: jdbc:hive2://bigdata1:10000> use ods; No rows affected (0.142 seconds) 0: jdbc:hive2://bigdata1:10000> select * from customer_inf; Error: Error while compiling statement: FAILED: SemanticException Unable to determine if hdfs://bigdata1:9000/user/hive/warehouse/ods.db/customer_inf is encrypted: org.apache.hadoop.security.AccessControlException: Permission denied: user=anonymous, access=EXECUTE, inode="/user":root:supergroup:drwx------ at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:399) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:315) at org.apache.hadoop.
最新发布
03-09
<think>嗯,用户在使用Hive查询时遇到了权限问题,报错是Permission denied: user=anonymous, access=EXECUTE。我需要根据提供的引用内容来找出解决方案。首先,根据引用[1]和[2],用户可能是以匿名用户anonymous连接的,导致没有权限访问HDFS的/tmp目录。 首先,用户可能没有在连接时指定用户名,所以Hive默认使用anonymous。解决方法应该是在使用beeline连接时通过-n参数指定用户,比如-n hdfs。这样用户就会以hdfs的身份执行操作,拥有必要的权限。 另外,可能需要检查HDFS上/tmp目录的权限设置。确保指定用户(比如hdfs)有执行和写入权限。可能需要用hadoop fs -chmod命令修改目录权限,或者更改目录的所有者。 还有可能用户需要配置Hive的权限控制,比如启用Sentry或Ranger来管理权限。此外,检查Hive的配置文件,如hive-site.xml,确保有正确的用户模拟配置,比如hive.server2.enable.doAs。 用户可能还应该检查日志,查看更详细的错误信息,或者尝试直接以hdfs用户身份执行操作。需要一步步引导用户,从连接时的用户指定到目录权限调整,再到可能的Hive配置修改,综合解决问题。</think>### Hive查询权限问题解决方案 #### 1. 检查连接方式指定用户 当使用`beeline`连接Hive时,**必须通过`-n`参数显式指定用户**。未指定用户时默认使用`anonymous`(匿名用户),该用户通常没有HDFS目录的访问权限。 **正确连接命令**: ```bash beeline -u jdbc:hive2://IP:10000 -n hdfs # 以hdfs用户身份连接[^1] ``` #### 2. 验证HDFS目录权限 匿名用户报错通常与`/tmp/hadoop-yarn/staging`目录权限相关。需确保目标用户(如`hdfs`)对该目录有**执行(EXECUTE)**和**写入(WRITE)**权限: ```bash # 查看目录权限 hadoop fs -ls /tmp # 修改权限(示例:赋予所有用户执行和写入权限) hadoop fs -chmod -R 777 /tmp/hadoop-yarn/staging # 或修改目录所有者 hadoop fs -chown -R hdfs:hadoop /tmp/hadoop-yarn/staging ``` #### 3. 配置Hive权限控制(可选) 若问题持续,可能需要启用Hive的细粒度权限管理: - 在`hive-site.xml`中配置权限插件(如Apache Sentry或Ranger) - 开启用户模拟功能: ```xml <property> <name>hive.server2.enable.doAs</name> <value>true</value> </property> ``` #### 4. 其他注意事项 - 检查Hive服务端日志(`/var/log/hive/hiveserver2.log`)获取详细错误信息 - 尝试直接以`hdfs`用户执行操作:`sudo -u hdfs beeline ...` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值