【 使用环境 】测试环境
【 OB or 其他组件 】ob
【 使用版本 】4.2.1
【问题描述】使用user1数据库创建表test,执行grant select,update,delete,insert on user1.test to user2; 显示执行成功。切换到user2,执行select * from user1.test;报错无权限访问user1数据库
请问这个是什么原因?
可以把整个赋权和查询 SQL和报错信息贴出来,另外可以查下user2有哪些权限
show grant 也 看看 use2 的都有啥权限
赋权语句是这个grant select,update,delete,insert on user1.test to user2,报错的是无权限访问user1,然后我切换到user2查看权限,show grants,显示了这个grant select,update,delete,insert on “user1”.“test” to “user2”
还有grant usage on . to ‘user2’
请问下 user1 和 user2 是 database 还是 user ?
请问下如何切换的 user?或者说有没有详细的操作步骤可以复现这个问题?
user1和user2是登录的时候是不同的账户登录的,然后user1用户下有user1命名的数据库,user2有user2命名的数据库,切换user2的时候直接切换了不同的账户
哦哦,user 名和 database 名都相同是吧?我们本地复现下看看~
我这边复现不出来您说的问题,麻烦帮忙看看我的复现步骤哪里和您执行的步骤不一致?
最好还是麻烦您也提供一个类似于我这边的详细的复现步骤?不然我们只能去猜您执行过的 SQL 序列是什么,很难复现出您说的问题。
我这边是先用 root 用户创建 user1 和 user2
obclient -h 11.124.5.43 -u root@mysql -P22603 -Dtest
obclient [test]> create user user1;
Query OK, 0 rows affected (0.171 sec)
obclient [test]> create user user2;
Query OK, 0 rows affected (0.122 sec)
obclient [test]> create database user1;
Query OK, 1 row affected (0.146 sec)
obclient [test]> create database user2;
Query OK, 1 row affected (0.124 sec)
obclient [test]> grant ALL PRIVILEGES ON *.* TO user1 WITH GRANT OPTION;
Query OK, 0 rows affected (0.136 sec)
然后登录 user1 给 user2 赋权限
obclient -h 11.124.5.43 -u user1@mysql -P22603 -Duser1
obclient [user1]> create table test(c1 int);
Query OK, 0 rows affected (0.208 sec)
obclient [user1]> grant select,update,delete,insert on user1.test to user2;
Query OK, 0 rows affected (0.249 sec)
最后登录 user2 查询 user1.test
obclient -h 11.124.5.43 -u user2@mysql -P22603 -Duser1
obclient [user1]> select * from user1.test;
Empty set (0.047 sec)
obclient [user1]> show grants;
+-------------------------------------------------------------------+
| Grants for user2@% |
+-------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user2' |
| GRANT DELETE, INSERT, UPDATE, SELECT ON `user1`.`test` TO 'user2' |
+-------------------------------------------------------------------+
2 rows in set (0.051 sec)
感谢您帮我复现这个场景,可能是我没有说清楚,使用obclient黑窗命令去赋权和查询,都是可以成功的,你复现的这个场景是没有问题的,我这边在命令窗口也就是obclient命令下切换到user2是可以查询成功的,但是在白屏状态下显示赋权成功,切换用户user2是显示无权限访问user1数据库
这里rpt就是user1,rptapp是user2
哦哦,ODC 的问题是吧?我找个熟悉 ODC 的同学来看下~
麻烦确认下 RPT 库是否加入到了同一个项目下。
目前在单个 SQL 窗口不支持跨数据源访问哈,这个报错信息我们后续优化下。
相同的数据源是可以查询的是嘛