GridDB中10090 TXN_OTHER_PRIVILEGE_EXISTS错误排查与权限咨询
GridDB 10090 TXN_OTHER_PRIVILEGE_EXISTS 错误排查与解决
问题背景
在使用GridDB时,执行以下创建用户并授权的操作:
-- 创建新用户 CREATE USER test_user WITH PASSWORD 'securepassword'; -- 为用户授予权限 GRANT ALL PRIVILEGES ON test_db TO test_user;
反复触发以下错误:
10090 TXN_OTHER_PRIVILEGE_EXISTS ERROR User/DB administration operation failed. Authority may have been duplicated. Check the user name and DB name.
已尝试操作:检查用户存在性、验证权限分配、撤销重授权限、重启GridDB服务,但问题仍存在。
1. 错误具体含义
10090错误核心是权限重复冲突:你尝试授予的权限(此处为ALL PRIVILEGES)中,已有部分或全部权限已经被分配给test_user对test_db的权限组。GridDB不允许同一用户对同一数据库重复授予相同权限,哪怕是通过不同操作路径分配的。
2. 查看用户现有权限的方法
要避免重复授权,需先查询用户已拥有的权限,执行以下SQL语句:
-- 查询指定用户的所有权限 SELECT * FROM INFORMATION_SCHEMA.USER_PRIVILEGES WHERE GRANTEE = 'test_user'; -- 精准查询用户对指定数据库的权限 SELECT * FROM INFORMATION_SCHEMA.USER_PRIVILEGES WHERE GRANTEE = 'test_user' AND TABLE_SCHEMA = 'test_db';
查询结果会显示该用户已拥有的权限类型(如SELECT、INSERT、ALL等)以及对应数据库,明确哪些权限无需重复授予。
3. GridDB正确管理用户权限的方式
- 授权前先查权限状态:每次执行
GRANT前,先用上述查询语句确认目标权限是否已存在,从根源避免重复操作。 - 按需授权,避免过度授予:不要直接用
ALL PRIVILEGES,仅授予用户实际需要的权限,既减少冲突概率也提升安全性:-- 示例:仅授予查询和插入权限 GRANT SELECT, INSERT ON test_db TO test_user; - 精准撤销权限:如需调整权限,先撤销对应权限再重新授予,避免权限叠加:
-- 撤销用户对test_db的所有权限 REVOKE ALL PRIVILEGES ON test_db FROM test_user; -- 重新授予所需权限 GRANT SELECT, UPDATE ON test_db TO test_user; - 提前验证用户/数据库合法性:执行操作前确认用户和数据库存在,避免拼写错误导致的异常:
-- 检查用户是否存在 SELECT * FROM INFORMATION_SCHEMA.USERS WHERE USER_NAME = 'test_user'; -- 检查数据库是否存在 SELECT * FROM INFORMATION_SCHEMA.DATABASES WHERE DATABASE_NAME = 'test_db';
内容的提问来源于stack exchange,提问作者Samar Mohamed
相关产品推荐
相关产品推荐

