首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >零基础OceanBase数据库入门(5):MySQL模式用户创建与权限管理

零基础OceanBase数据库入门(5):MySQL模式用户创建与权限管理

作者头像
俊才
发布2026-04-13 17:05:54
发布2026-04-13 17:05:54
820
举报
文章被收录于专栏:数据库干货铺数据库干货铺

上一篇我们完成了MySQL 模式租户下的数据库创建,已经有了存放业务数据的 “容器”。但在实际生产中,绝对不能用root账号直接操作业务库,合理创建用户、精细化分配权限,才是数据库安全运维的基础。

本篇结合OceanBase官方demo与单机版文档,带你从零学会:创建用户、授予不同层级权限、查看权限、基础用户运维,全程贴合MySQL使用习惯,新手也能快速上手。

一、 2个核心前提

1. 谁有资格创建用户

只有拥有CREATE USER系统权限的用户才能创建用户,默认只有:

  • 集群管理员
  • 租户管理员(如租户内root用户)
  • 普通用户需被授予CREATE USER权限后,才可创建新用户

2. 用户名命名规则(官方强制要求)

  • 唯一性:用户名在租户内唯一,不同租户可同名,全局唯一标识为用户名@租户名
  • 长度限制:OBClient/ODC创建时≤64字节;OCP创建时2~64字符
  • 命名规范:字母开头,可含大小写、数字、下划线,建议见名知意(如app_read、dba_manager)

二、前置准备:登录目标业务租户

延续前序环境,登录我们创建的mysql_tenant租户(管理员账号):

代码语言:javascript
复制
# 登录mysql_tenant 租户(密码替换为你设置的密码)
obclient -h127.0.0.1 -P2881 -uroot@mysql_tenant  -p'123456' -A

登录成功后,即可执行用户创建与授权操作。

三、创建用户

创建用户使用CREATE USER语句,坚持最小权限原则,先创建再授权,不默认赋予高权限。

1. 基础创建用户(最常用)

代码语言:javascript
复制
-- 创建用户app_user,密码设置为App@123456(生产用复杂密码)
CREATE USER IF NOT EXISTS 'app_user' IDENTIFIED BY 'App@123456';
  • IF NOT EXISTS:避免用户已存在时报错,强烈建议添加
  • IDENTIFIED BY:指定明文密码,服务端会自动密文存储

2. 带SSL安全策略创建

代码语言:javascript
复制
-- 创建用户并要求必须使用SSL连接
CREATE USER 'sec_user' IDENTIFIED BY 'Sec@123456' REQUIRE SSL;

四、授予权限(4 种常用层级)

OceanBase MySQL模式权限分为全局、数据库级、表级、列级,用GRANT语句授权,完全兼容MySQL语法。

1. 数据库级权限(最常用,最小权限)

授予用户仅操作指定数据库的权限,符合生产最小权限原则:

代码语言:javascript
复制
-- 授予app_user对ob_business库的 查/增/改 权限
GRANT SELECT,INSERT,UPDATE ON ob_business.* TO 'app_user';
-- 刷新权限,立即生效
FLUSH PRIVILEGES;

2. 全局权限(高权限,谨慎使用)

代码语言:javascript
复制
-- 授予dba_user所有库的所有权限(仅DBA使用,生产慎用)
GRANT ALL ON *.* TO 'dba_user';

3. 表级权限

代码语言:javascript
复制
-- 仅授予app_user对ob_business库下user表的查询权限
GRANT SELECT ON ob_business.user TO 'app_user';

4. 列级权限(精细化控制)

代码语言:javascript
复制
-- 仅授予查询id、name列,插入id、name列的权限(可以指定到库表)
GRANT SELECT(id,name), INSERT(id,name) ON *.* TO 'app_user';

5. 允许权限转授(可选)

代码语言:javascript
复制
GRANT SELECT ON ob_business.* TO 'app_user' WITH GRANT OPTION;

添加WITH GRANT OPTION,用户可将自身权限转授给其他用户。

五、查看用户与权限

官方提供3种查看方式,覆盖日常运维场景。

1. 快速查看权限(SHOW GRANTS)

代码语言:javascript
复制
-- 查看当前用户权限
SHOW GRANTS;
-- 查看指定用户app_user的权限
SHOW GRANTS FOR 'app_user';

2. 查看用户全局权限(mysql.user视图)

代码语言:javascript
复制
-- 查看test的全局权限详情
SELECT * FROM mysql.user WHERE user='test'\G

3 查看数据库级权限(mysql.db视图)

代码语言:javascript
复制
-- 查看test在各库的权限
SELECT * FROM mysql.db WHERE user='test'\G

六、实用运维:用户常用操作

1. 修改用户密码

代码语言:javascript
复制
-- 修改app_user密码
ALTER USER 'app_user' IDENTIFIED BY 'NewApp@123456';

2. 回收权限

代码语言:javascript
复制
-- 回收app_user对ob_business库的修改权限
REVOKE UPDATE ON ob_business.* FROM 'app_user';
FLUSH PRIVILEGES;

3. 删除用户(谨慎操作)

代码语言:javascript
复制
-- 删除用户app_user
DROP USER IF EXISTS 'app_user';

七、生产安全必看(官方建议)

  • 最小权限原则:只授予用户完成工作必需的权限,禁止随意授予ALL或*.*全局权限
  • 密码规范:使用大小写+数字+特殊字符组合,定期更换,禁止弱密码
  • 连接限制:生产不使用%放开所有IP,限定业务服务器IP
  • 禁止共享账号:一人一户,便于权限审计与问题追溯
  • 定期巡检:查看冗余用户、过期权限,及时清理

八、小结

本篇我们完成了OceanBase MySQL模式用户全生命周期管理,核心记住3点:

  • 创建:CREATE USER+强密码,坚持租户内唯一;
  • 授权:优先库级权限,遵循最小原则,用GRANT分配;
  • 查看:SHOW GRANTS快速查,mysql.user/db视图看详情。

用户与权限配置完成,下一步就可以进入创建数据表+插入业务数据环节,真正实现“存数据、用数据”。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据库干货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档