数据库权限管理是运维、开发、DBA必备核心技能,核心包含用户创建、授权、查权、回收权限、用户管理五大核心操作。本文整理 MySQL、Oracle 两大主流数据库的权限命令,附带可直接执行的实操示例,排版清晰、适配落地,可直接用于学习和工作备查。

核心前置说明

  • 所有命令均为标准生产环境语法,兼容主流版本

  • 区分全局权限、库级权限、表级权限,精准管控权限粒度

  • 附带生产最佳实践与避坑注意事项


一、MySQL 权限管理(最常用)

1.1 创建数据库用户

语法格式

CREATE USER '用户名'@'访问地址' IDENTIFIED BY '密码';

参数说明

  • localhost:仅本机登录

  • %:允许任意IP远程登录

  • 192.168.%:指定网段登录

实操示例

# 仅本地登录用户
CREATE USER 'test'@'localhost' IDENTIFIED BY 'Test@123';

# 全网远程登录用户(生产常用)
CREATE USER 'test'@'%' IDENTIFIED BY 'Test@123';

# 限定内网网段登录
CREATE USER 'test'@'192.168.%' IDENTIFIED BY 'Test@123';

1.2 权限授权 GRANT(核心)

通用语法

GRANT 权限列表 ON 数据库.表 TO '用户名'@'访问地址' [WITH GRANT OPTION];

权限粒度分级:全局(*.*) > 库级(库名.*) > 表级(库名.表名)

实操示例

# 1. 单表精准授权(仅查询)
GRANT SELECT ON db_user.tb_user TO 'test'@'%';

# 2. 库级读写权限(开发常用)
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER ON db_user.* TO 'test'@'%';

# 3. 库级全部权限(不含转授权限)
GRANT ALL PRIVILEGES ON db_user.* TO 'test'@'%';

# 4. 全局最高权限(管理员账号)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

关键字说明WITH GRANT OPTION表示该用户可将自身权限转授给其他用户,生产环境非管理员禁止开启。

1.3 刷新权限

MySQL修改用户、授权、回收权限后,必须刷新权限生效

FLUSH PRIVILEGES;

1.4 查看用户权限

# 查看指定用户权限
SHOW GRANTS FOR 'test'@'%';

# 查看当前登录用户权限
SHOW GRANTS;

# 查看所有数据库用户
SELECT user,host FROM mysql.user;

1.5 回收权限 REVOKE

语法格式

REVOKE 权限列表 ON 数据库.表 FROM '用户名'@'访问地址';

实操示例

# 回收删除权限
REVOKE DELETE ON db_user.* FROM 'test'@'%';

# 回收用户所有权限
REVOKE ALL PRIVILEGES,GRANT OPTION FROM 'test'@'%';

# 刷新权限生效
FLUSH PRIVILEGES;

1.6 用户密码修改与删除

# 修改用户密码
ALTER USER 'test'@'%' IDENTIFIED BY 'New@456';
FLUSH PRIVILEGES;

# 删除用户
DROP USER IF EXISTS 'test'@'%';

1.7 MySQL 常用权限清单

权限关键字 权限作用
SELECT 查询数据
INSERT 插入数据
UPDATE 更新数据
DELETE 删除数据
CREATE/DROP 创建/删除库、表
ALTER 修改表结构
INDEX 创建、删除索引
ALL PRIVILEGES 所有权限

二、Oracle 权限管理

Oracle权限分为 系统权限(登录、建表等系统操作)和 对象权限(操作其他用户表/视图),支持角色批量授权,更适合企业级精细化管控。

2.1 创建用户(指定表空间)

生产环境必须指定表空间、临时表空间和存储配额

CREATE USER test
IDENTIFIED BY Test123
DEFAULT TABLESPACE USERS    -- 默认表空间
TEMPORARY TABLESPACE TEMP  -- 临时表空间
QUOTA 100M ON USERS;       -- 最大使用100M存储空间

2.2 系统权限授权

系统权限:控制用户登录、创建数据库对象等系统级操作

# 基础登录权限(必备)
GRANT CREATE SESSION TO test;

# 开发常用权限(建表、视图、序列)
GRANT CREATE TABLE,CREATE VIEW,CREATE SEQUENCE TO test;

# 管理员最高权限
GRANT DBA TO test WITH ADMIN OPTION;

关键字说明WITH ADMIN OPTION 允许转授系统权限

2.3 对象权限授权

对象权限:控制用户操作其他用户的表、视图等数据对象

# 授予查询、修改 scott 用户 emp 表的权限,可转授他人
GRANT SELECT,UPDATE ON scott.emp TO test WITH GRANT OPTION;

# 授予单表全部操作权限
GRANT ALL ON scott.emp TO test;

2.4 角色授权(Oracle核心特性)

角色用于批量打包权限,统一授权用户,简化权限管理

系统内置常用角色

  • CONNECT:基础登录权限

  • RESOURCE:开发人员建表、建对象权限

  • DBA:数据库管理员全权限

实操示例

# 给用户分配开发角色(生产开发标配)
GRANT CONNECT,RESOURCE TO test;

# 自定义角色(精细化权限分组)
CREATE ROLE dev_role;
GRANT SELECT,INSERT,UPDATE ON scott.emp TO dev_role;
GRANT dev_role TO test;

2.5 查看用户权限

# 查看系统权限
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='TEST';

# 查看对象权限
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE='TEST';

# 查看角色权限
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='TEST';

2.6 回收权限与角色

# 回收系统权限
REVOKE CREATE TABLE FROM test;

# 回收对象权限
REVOKE UPDATE ON scott.emp FROM test;

# 回收角色权限
REVOKE RESOURCE FROM test;

2.7 用户管理(修改/删除/锁定)

# 修改用户密码
ALTER USER test IDENTIFIED BY New456;

# 锁定账号(禁用用户)
ALTER USER test ACCOUNT LOCK;

# 解锁账号
ALTER USER test ACCOUNT UNLOCK;

# 删除用户(CASCADE 强制删除用户所有对象)
DROP USER test CASCADE;

三、生产环境完整实操案例

3.1 MySQL 开发账号标准配置

# 1. 创建远程开发账号
CREATE USER 'dev'@'%' IDENTIFIED BY 'Dev@2026';

# 2. 授予业务库读写权限(禁止授予删除、改结构高危权限)
GRANT SELECT,INSERT,UPDATE ON business.* TO 'dev'@'%';

# 3. 刷新权限
FLUSH PRIVILEGES;

# 4. 查看权限确认
SHOW GRANTS FOR 'dev'@'%';

3.2 Oracle 开发账号标准配置

# 1. 创建用户并分配表空间
CREATE USER dev IDENTIFIED BY Dev2026 
DEFAULT TABLESPACE USERS 
TEMPORARY TABLESPACE TEMP 
QUOTA 500M ON USERS;

# 2. 分配开发基础角色
GRANT CONNECT,RESOURCE TO dev;

# 3. 授权业务表操作权限
GRANT SELECT,INSERT,UPDATE,DELETE ON scott.order_info TO dev;

四、生产环境权限最佳实践

  • 最小权限原则:开发账号禁止授予 DBAALL PRIVILEGES 高危权限,按需分配

  • 禁止随意开启转授权限WITH GRANT OPTIONWITH ADMIN OPTION 仅管理员使用

  • 权限粒度精细化:优先表级授权,其次库级,尽量不使用全局授权

  • 定期清理冗余账号:下线离职人员、废弃测试账号,规避安全风险

  • MySQL必刷权限:所有权限变更后必须执行FLUSH PRIVILEGES

 posted on 2026-07-06 09:42  2525256  阅读(11)  评论(0)    收藏  举报