this is what i have tried with a remote metastore:

    > set hive.security.authorization.enabled=false;
hive>
    >
    >
    > drop table src2;
OK
Time taken: 1.002 seconds
hive> create table src2 (key int, value string);
OK
Time taken: 0.03 seconds
hive>
    >
    >
    > set hive.security.authorization.enabled=true;
hive> grant select on table src2 to user heyongqiang;
OK
Time taken: 0.113 seconds
hive> select * from src2;
OK
Time taken: 0.188 seconds
hive> show grant user heyongqiang on table src2;
OK

database        default 
table   src2    
principalName   heyongqiang     
principalType   USER    
privilege       Select  
grantTime       Wed Aug 24 15:03:51 PDT 2011    
grantor heyongqiang     

can u do a show grant?

(But with remote metastore, i think hive should not return empty list
instead of null for list_privileges etc.)



On Wed, Aug 24, 2011 at 2:34 PM, Alex Holmes <grep.a...@gmail.com> wrote:
> Authorization works for me with the local metastore.  The remote
> metastore works with authorization turned off, but as soon as I turn
> it on and issue any commands I get these exceptions on the hive
> client.
>
> Could you also try the remote metastore please?  I'm pretty sure that
> authorization does not work with it at all.
>
> Thanks,
> Alex
>
> On Wed, Aug 24, 2011 at 5:20 PM, yongqiang he <heyongqiang...@gmail.com> 
> wrote:
>> I am using local metastore,  and can not reproduce the problem.
>>
>> what message did you get when running local metastore?
>>
>> On Wed, Aug 24, 2011 at 1:58 PM, Alex Holmes <grep.a...@gmail.com> wrote:
>>> Thanks for opening a ticket.
>>>
>>> Table-level grants aren't working for me either (HIVE-2405 suggests
>>> that the bug is only related to global grants).
>>>
>>> hive> set hive.security.authorization.enabled=false;
>>> hive> CREATE TABLE pokes (foo INT, bar STRING);
>>> OK
>>> Time taken: 1.245 seconds
>>> hive> LOAD DATA LOCAL INPATH 'hive1.in' OVERWRITE INTO TABLE pokes;
>>> FAILED: Error in semantic analysis: Line 1:23 Invalid path 'hive1.in':
>>> No files matching path file:/app/hadoop/hive-0.7.1/conf/hive1.in
>>> hive> LOAD DATA LOCAL INPATH '/app/hadoop/hive1.in' OVERWRITE INTO TABLE 
>>> pokes;
>>> Copying data from file:/app/hadoop/hive1.in
>>> Copying file: file:/app/hadoop/hive1.in
>>> Loading data to table default.pokes
>>> Moved to trash: hdfs://localhost:54310/user/hive/warehouse/pokes
>>> OK
>>> Time taken: 0.33 seconds
>>> hive> select * from pokes;
>>> OK
>>> 1       a
>>> 2       b
>>> 3       c
>>> Time taken: 0.095 seconds
>>> hive> grant select on table pokes to user hduser;
>>> OK
>>> Time taken: 0.251 seconds
>>> hive> set hive.security.authorization.enabled=true;
>>> hive> select * from pokes;
>>> FAILED: Hive Internal Error:
>>> org.apache.hadoop.hive.ql.metadata.HiveException(org.apache.thrift.TApplicationException:
>>> get_privilege_set failed: unknown result)
>>> org.apache.hadoop.hive.ql.metadata.HiveException:
>>> org.apache.thrift.TApplicationException: get_privilege_set failed:
>>> unknown result
>>>        at 
>>> org.apache.hadoop.hive.ql.metadata.Hive.get_privilege_set(Hive.java:1617)
>>>        at 
>>> org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider.authorizeUserPriv(DefaultHiveAuthorizationProvider.java:201)
>>>        at 
>>> org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider.authorizeUserAndDBPriv(DefaultHiveAuthorizationProvider.java:226)
>>> ...
>>>
>>> mysql> select * from TBL_PRIVS;
>>> +--------------+-------------+--------------+---------+--------------+----------------+----------------+----------+--------+
>>> | TBL_GRANT_ID | CREATE_TIME | GRANT_OPTION | GRANTOR | GRANTOR_TYPE |
>>> PRINCIPAL_NAME | PRINCIPAL_TYPE | TBL_PRIV | TBL_ID |
>>> +--------------+-------------+--------------+---------+--------------+----------------+----------------+----------+--------+
>>> |            1 |  1314219701 |            0 | hduser  | USER         |
>>> hduser         | USER           | Select   |      1 |
>>> +--------------+-------------+--------------+---------+--------------+----------------+----------------+----------+--------+
>>>
>>> Also, I noticed in HIVE-2405 that you get a meaningful error message:
>>>
>>>  Authorization failed:No privilege 'Create' found for outputs {
>>> database:default}. Use show grant to get more details.
>>>
>>> Whereas I just get an exception (as you can see above).  Were you also
>>> running with the remote metastore?  I get these meaningful messages
>>> with the local metastore (and authorization on), but with the remote
>>> metastore with authorization turned on, I always get exceptions.
>>>
>>> Many thanks,
>>> Alex
>>>
>>> On Wed, Aug 24, 2011 at 3:38 PM, yongqiang he <heyongqiang...@gmail.com> 
>>> wrote:
>>>> This is a bug. Will open a jira to fix this. and will backport it to 0.7.1.
>>>> https://issues.apache.org/jira/browse/HIVE-2405
>>>>
>>>> thanks for reporting this one!
>>>>
>>>> On Wed, Aug 24, 2011 at 6:25 AM, Alex Holmes <grep.a...@gmail.com> wrote:
>>>>> I created the mysql database (with the simple create database command)
>>>>> and the remote metastore seemed to creat the mysql tables.  Here's
>>>>> some grant information and what I see in the database:
>>>>>
>>>>> [hduser@aholmes-desktop conf]$ hive
>>>>> hive> grant all to user hduser;
>>>>> OK
>>>>> Time taken: 0.334 seconds
>>>>> hive> show grant user hduser;
>>>>> OK
>>>>>
>>>>> principalName   hduser
>>>>> principalType   USER
>>>>> privilege       All
>>>>> grantTime       1314191500
>>>>> grantor hduser
>>>>> Time taken: 0.046 seconds
>>>>> hive> CREATE TABLE pokes (foo INT, bar STRING);
>>>>> FAILED: Hive Internal Error:
>>>>> org.apache.hadoop.hive.ql.metadata.HiveException(org.apache.thrift.TApplicationException:
>>>>> get_privilege_set failed: unknown result)
>>>>> org.apache.hadoop.hive.ql.metadata.HiveException:
>>>>> org.apache.thrift.TApplicationException: get_privilege_set failed:
>>>>> unknown result
>>>>>        at 
>>>>> org.apache.hadoop.hive.ql.metadata.Hive.get_privilege_set(Hive.java:1617)
>>>>>        at 
>>>>> org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider.authorizeUserPriv(DefaultHiveAuthorizationProvider.java:201)
>>>>>        at 
>>>>> org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider.authorizeUserAndDBPriv(DefaultHiveAuthorizationProvider.java:226)
>>>>>        at 
>>>>> org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider.authorize(DefaultHiveAuthorizationProvider.java:89)
>>>>> ...
>>>>>
>>>>> mysql> use hive;
>>>>> Database changed
>>>>> mysql> select * from GLOBAL_PRIVS;
>>>>> +---------------+-------------+--------------+---------+--------------+----------------+----------------+-----------+
>>>>> | USER_GRANT_ID | CREATE_TIME | GRANT_OPTION | GRANTOR | GRANTOR_TYPE
>>>>> | PRINCIPAL_NAME | PRINCIPAL_TYPE | USER_PRIV |
>>>>> +---------------+-------------+--------------+---------+--------------+----------------+----------------+-----------+
>>>>> |             1 |  1314191500 |            0 | hduser  | USER
>>>>> | hduser         | USER           | All       |
>>>>> +---------------+-------------+--------------+---------+--------------+----------------+----------------+-----------+
>>>>> 1 row in set (0.00 sec)
>>>>>
>>>>>
>>>>> Thanks for your help,
>>>>> Alex
>>>>>
>>>>> On Tue, Aug 23, 2011 at 1:27 PM, yongqiang he <heyongqiang...@gmail.com> 
>>>>> wrote:
>>>>>> Have you created the metastore mysql tables for authorization? Can u
>>>>>> do a show grant?
>>>>>>
>>>>>> thanks
>>>>>> yongqiang
>>>>>> On Tue, Aug 16, 2011 at 2:55 PM, Alex Holmes <grep.a...@gmail.com> wrote:
>>>>>>> Hi all,
>>>>>>>
>>>>>>> I've been struggling with getting Hive authorization to work for a few
>>>>>>> hours, and I really hope someone can help me.  I installed Hive 0.7.1
>>>>>>> on top of Hadoop 0.20.203.  I'm using mysql for the metastore, and
>>>>>>> configured Hive to enable authorization:
>>>>>>>
>>>>>>> <property>
>>>>>>>  <name>hive.security.authorization.enabled</name>
>>>>>>>  <value>true</value>
>>>>>>>  <description>enable or disable the hive client 
>>>>>>> authorization</description>
>>>>>>> </property>
>>>>>>>
>>>>>>> I kept all the other Hive security configs with their default settings.
>>>>>>>
>>>>>>> I'm running in pseudo-distributed mode on a single node.  HDFS, the Hive
>>>>>>> metastore and the Hive CLI are all running as the same user (the HDFS
>>>>>>> superuser).  Here are the sequence of steps that are causing me issues.
>>>>>>> Without authorization everything works perfectly (creating, loading, 
>>>>>>> selecting).
>>>>>>> I've also tried creating and loading the table without authorization, 
>>>>>>> granting
>>>>>>> the select privilege at various levels (global, table, database), 
>>>>>>> turning on
>>>>>>> auth and performing the select, resulting in the same exception.
>>>>>>>
>>>>>>> Any help with this would be greatly appreciated!
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Alex
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> [hduser@aholmes-desktop ~]$ hive
>>>>>>> Hive history 
>>>>>>> file=/tmp/hduser/hive_job_log_hduser_201108162158_1976573160.txt
>>>>>>> hive> set hive.security.authorization.enabled=false;
>>>>>>> hive> grant all to user hduser;
>>>>>>> OK
>>>>>>> Time taken: 0.233 seconds
>>>>>>> hive> set hive.security.authorization.enabled=true;
>>>>>>> hive> CREATE TABLE pokes3 (foo INT, bar STRING);
>>>>>>> FAILED: Hive Internal Error:
>>>>>>> org.apache.hadoop.hive.ql.metadata.HiveException(org.apache.thrift.TApplicationException:
>>>>>>> get_privilege_set failed: unknown result)
>>>>>>> org.apache.hadoop.hive.ql.metadata.HiveException:
>>>>>>> org.apache.thrift.TApplicationException: get_privilege_set failed:
>>>>>>> unknown result
>>>>>>>        at 
>>>>>>> org.apache.hadoop.hive.ql.metadata.Hive.get_privilege_set(Hive.java:1617)
>>>>>>>        at 
>>>>>>> org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider.authorizeUserPriv(DefaultHiveAuthorizationProvider.java:201)
>>>>>>>        at 
>>>>>>> org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider.authorizeUserAndDBPriv(DefaultHiveAuthorizationProvider.java:226)
>>>>>>>        at 
>>>>>>> org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider.authorize(DefaultHiveAuthorizationProvider.java:89)
>>>>>>>        at 
>>>>>>> org.apache.hadoop.hive.ql.Driver.doAuthorization(Driver.java:433)
>>>>>>>        at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:393)
>>>>>>>        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:736)
>>>>>>>        at 
>>>>>>> org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:164)
>>>>>>>        at 
>>>>>>> org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:241)
>>>>>>>        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:456)
>>>>>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>>        at 
>>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>>>>        at 
>>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>>>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>>>>>>        at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
>>>>>>> Caused by: org.apache.thrift.TApplicationException: get_privilege_set
>>>>>>> failed: unknown result
>>>>>>>        at 
>>>>>>> org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.recv_get_privilege_set(ThriftHiveMetastore.java:2414)
>>>>>>>        at 
>>>>>>> org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.get_privilege_set(ThriftHiveMetastore.java:2379)
>>>>>>>        at 
>>>>>>> org.apache.hadoop.hive.metastore.HiveMetaStoreClient.get_privilege_set(HiveMetaStoreClient.java:1042)
>>>>>>>        at 
>>>>>>> org.apache.hadoop.hive.ql.metadata.Hive.get_privilege_set(Hive.java:1615)
>>>>>>>        ... 14 more
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to