
上一篇我们完成了MySQL 模式租户下的数据库创建,已经有了存放业务数据的 “容器”。但在实际生产中,绝对不能用root账号直接操作业务库,合理创建用户、精细化分配权限,才是数据库安全运维的基础。
本篇结合OceanBase官方demo与单机版文档,带你从零学会:创建用户、授予不同层级权限、查看权限、基础用户运维,全程贴合MySQL使用习惯,新手也能快速上手。
一、 2个核心前提
1. 谁有资格创建用户
只有拥有CREATE USER系统权限的用户才能创建用户,默认只有:
2. 用户名命名规则(官方强制要求)
二、前置准备:登录目标业务租户
延续前序环境,登录我们创建的mysql_tenant租户(管理员账号):
# 登录mysql_tenant 租户(密码替换为你设置的密码)
obclient -h127.0.0.1 -P2881 -uroot@mysql_tenant -p'123456' -A
登录成功后,即可执行用户创建与授权操作。
三、创建用户
创建用户使用CREATE USER语句,坚持最小权限原则,先创建再授权,不默认赋予高权限。
1. 基础创建用户(最常用)
-- 创建用户app_user,密码设置为App@123456(生产用复杂密码)
CREATE USER IF NOT EXISTS 'app_user' IDENTIFIED BY 'App@123456';
2. 带SSL安全策略创建
-- 创建用户并要求必须使用SSL连接
CREATE USER 'sec_user' IDENTIFIED BY 'Sec@123456' REQUIRE SSL;
四、授予权限(4 种常用层级)
OceanBase MySQL模式权限分为全局、数据库级、表级、列级,用GRANT语句授权,完全兼容MySQL语法。
1. 数据库级权限(最常用,最小权限)
授予用户仅操作指定数据库的权限,符合生产最小权限原则:
-- 授予app_user对ob_business库的 查/增/改 权限
GRANT SELECT,INSERT,UPDATE ON ob_business.* TO 'app_user';
-- 刷新权限,立即生效
FLUSH PRIVILEGES;
2. 全局权限(高权限,谨慎使用)
-- 授予dba_user所有库的所有权限(仅DBA使用,生产慎用)
GRANT ALL ON *.* TO 'dba_user';
3. 表级权限
-- 仅授予app_user对ob_business库下user表的查询权限
GRANT SELECT ON ob_business.user TO 'app_user';
4. 列级权限(精细化控制)
-- 仅授予查询id、name列,插入id、name列的权限(可以指定到库表)
GRANT SELECT(id,name), INSERT(id,name) ON *.* TO 'app_user';
5. 允许权限转授(可选)
GRANT SELECT ON ob_business.* TO 'app_user' WITH GRANT OPTION;
添加WITH GRANT OPTION,用户可将自身权限转授给其他用户。
五、查看用户与权限
官方提供3种查看方式,覆盖日常运维场景。
1. 快速查看权限(SHOW GRANTS)
-- 查看当前用户权限
SHOW GRANTS;
-- 查看指定用户app_user的权限
SHOW GRANTS FOR 'app_user';2. 查看用户全局权限(mysql.user视图)
-- 查看test的全局权限详情
SELECT * FROM mysql.user WHERE user='test'\G
3 查看数据库级权限(mysql.db视图)
-- 查看test在各库的权限
SELECT * FROM mysql.db WHERE user='test'\G
六、实用运维:用户常用操作
1. 修改用户密码
-- 修改app_user密码
ALTER USER 'app_user' IDENTIFIED BY 'NewApp@123456';
2. 回收权限
-- 回收app_user对ob_business库的修改权限
REVOKE UPDATE ON ob_business.* FROM 'app_user';
FLUSH PRIVILEGES;
3. 删除用户(谨慎操作)
-- 删除用户app_user
DROP USER IF EXISTS 'app_user';
七、生产安全必看(官方建议)
八、小结
本篇我们完成了OceanBase MySQL模式用户全生命周期管理,核心记住3点:
用户与权限配置完成,下一步就可以进入创建数据表+插入业务数据环节,真正实现“存数据、用数据”。