DB2权限管理核心命令:GRANT语句用于授权,REVOKE用于收回权限。基本语法:GRANT authority ON object TO user。实例管理员常用db2inst1用户登录,执行db2 connect to sample,然后GRANT DATAACCESS ON DATABASE TO PUBLIC; 这样所有用户都能访问数据库了。
创建用户和组
在Linux下,groupadd db2admingrp; useradd -g db2admingrp dbauser; 然后su - db2inst1,db2 grant dbadm on database to user dbauser; 测试连接db2 connect to sample user dbauser using password。
权限级别介绍
DB2有系统权限如SYSADM、DBADM,对象权限如SELECT、INSERT。网友分享:最实用是给特定表授权,GRANT SELECT ON TABLE schema.tablename TO ROLE myrole; 先CREATE ROLE myrole; 避免直接给用户权限,便于管理。
操作步骤详解
1. 登录db2实例:su - db2inst1 2. 连接数据库:db2 connect to MYDB 3. 查看当前权限:db2 get authorizations 4. 授权:db2 "GRANT CREATETAB ON DATABASE TO USER myuser" 5. 验证:db2 connect to MYDB user myuser using pass 检查能否建表。
常见授权场景
对于应用用户,只给CONNECT和DATAACCESS;报表用户加SELECT ON SCHEMA;开发用户给BINDADD、CONNECT、CREATETAB。执行db2 "GRANT CONNECT, DATAACCESS, SELECT ON SCHEMA TO USER appuser"; 超级实用,减少安全风险。
收回权限
db2 "REVOKE DATAACCESS ON DATABASE FROM USER olduser"; 如果要彻底,REVOKE ALL PRIVILEGES ON * FROM USER; 注意级联:REVOKE ... CASCADE; 防止权限残留。
角色管理
CREATE ROLE analyst; GRANT SELECT ON ALL TABLES IN SCHEMA sales TO ROLE analyst; GRANT ROLE analyst TO USER user1; 这比逐个授权省事,网友强烈推荐给中大型团队。
FAQ
Q: 如何查看用户权限?
A: db2 "SELECT grantee, authdesc FROM SYSCAT.DBAUTH WHERE grantee='USER1'";
Q: 忘记密码怎么授权?
A: 用SYSADM用户连接,不需密码授权,直接GRANT;
Q: PUBLIC组权限怎么管?
A: REVOKE CONNECT ON DATABASE FROM PUBLIC; 限制匿名访问;
Q: 授权后不生效?
A: 断开重连用户会话,或检查是否是实例级权限。