上一篇我们完成了MySQL模式租户的创建,成功拥有了属于自己的"独立数据库实例"。接下来,我们将进入更贴近实际开发的环节------创建数据库。
数据库(Database)是租户下的"数据容器",用于隔离不同业务的数据(比如电商的"订单库"和"用户库"),和我们熟悉的MySQL数据库用法高度一致。今天就结合OceanBase官方demo和单机版文档,从零实操,完成数据库的创建、验证、授权及基础管理。
一、租户与数据库
很多新手会混淆"租户"和"数据库",这里用一句话讲透(结合单机版特性)
租户 = 独立数据库实例(有自己的资源、管理员),数据库 = 租户内的业务数据容器(归属于某个租户,受租户资源限制)。
举个例子,我们上一篇创建的mq_t1租户,就相当于一个"MySQL实例",今天要创建的数据库,就是这个"实例"里的一个个独立数据库,用于存放不同业务的数据,租户间的数据库完全隔离,互不影响。
核心要点:创建数据库必须先登录目标租户(不能用sys租户直接创建),且OceanBase MySQL模式的数据库,支持和MySQL一致的字符集、权限管理,学习成本极低。
二、前置准备:登录目标租户
延续上一篇的操作,我们先登录之前创建的mq_t1租户(如果已退出,重新执行登录命令),这是创建数据库的前提:
nginx
# 登录mq_t1租户(密码用自己上一篇设置的,这里以123456为例)obclient -h127.0.0.1 -P2881 -uroot@mq_t1 -p'123456' -A

登录成功后,终端会显示 obclient [(none)]> ,表示已进入租户,且未切换到任何数据库,此时即可开始创建数据库。
补充:如果忘记租户密码,可通过sys租户登录,执行ALTER USER root@mq_t1 IDENTIFIED BY '新密码'; 重置(后续会专门讲权限管理)。
三、核心实操:创建MySQL模式数据库
OceanBase MySQL模式创建数据库,支持两种方式:基础创建(默认参数)和自定义参数创建(指定字符集、读写属性等),结合官方demo,我们重点实操这两种方式,满足不同场景需求。
步骤1:查看租户内现有数据库
登录租户后,先查看默认存在的数据库,避免创建重名数据库:
sql
-- 查看当前租户下所有数据库SHOW DATABASES;

执行后会显示3个默认系统数据库(和MySQL一致),无需修改/删除:
-
information_schema:系统元数据数据库,存储数据库、表、列等信息
-
mysql:系统数据库,存储用户、权限等信息
-
oceanbase:OceanBase租户专属系统数据库,用于存储租户相关配置
步骤2:基础创建(默认参数)
如果不需要自定义字符集、读写属性,直接用最简命令创建,语法和MySQL完全一致:
sql
-- 创建名为test的数据库(自定义数据库名,建议小写)CREATE DATABASE IF NOT EXISTS test;

参数说明:
-
IF NOT EXISTS:可选,避免数据库已存在时报错(推荐加上);
-
test:自定义数据库名,命名规范:小写字母、数字、下划线,不能用关键字(如sys、mysql),长度不超过64个字符。
执行成功后,会提示 Query OK, 1 row affected ,表示数据库创建成功。
步骤3:自定义参数创建
实际开发中,我们通常需要指定数据库的字符集(避免中文乱码)、读写属性(如只读库),结合官方文档,实操如下:
sql
-- 创建名为ob_business的数据库,指定字符集为utf8mb4,读写属性为可读写CREATE DATABASE IF NOT EXISTS ob_businessDEFAULT CHARACTER SET utf8mb4 -- 指定字符集(支持utf8mb4、gbk、gb18030等)DEFAULT COLLATE utf8mb4_general_ci -- 指定字符序(对应字符集的默认排序规则)READ WRITE; -- 读写属性:READ WRITE(可读写,默认)、READ ONLY(只读)

关键补充(结合官方文档重点):
-
字符集选择:OceanBase支持utf8mb4、gbk、gb18030、binary、utf16等字符集,其中utf8mb4 支持所有 emoji 表情和特殊字符,是目前最常用的字符集,推荐优先使用;值得注意的是,OceanBase在语法上将UTF8视为UTF8MB4的同义词,方便无缝迁移现有MySQL数据
-
读写属性:可根据业务需求设置,比如报表统计类数据库可设置为READ ONLY,防止误操作修改数据;业务库设置为默认的READ WRITE即可
-
字符集修改:数据库创建后,字符集和字符序暂不支持修改,因此创建时一定要确认好字符集配置,避免后续返工
步骤4:验证数据库创建结果
创建完成后,再次执行查看命令,确认数据库已成功创建:
nginx
SHOW DATABASES;

执行结果中,会新增我们创建的test和ob_business两个数据库,说明创建成功。
补充:也可以通过查询系统表,查看数据库的详细信息(如字符集、创建时间):
sql
-- 查看指定数据库(ob_business)的详细信息SELECT *FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'ob_business';

步骤5:切换到目标数据库
数据库创建后,需要切换到该数据库,才能进行后续的建表、插入数据等操作,命令和MySQL一致:
css
-- 切换到ob_business数据库USE ob_business;

切换成功后,终端会显示 obclient [ob_business]> ,表示已进入该数据库,可正常执行后续操作。
四、补充实操:数据库授权与删除(实用场景)
结合官方文档,补充两个高频操作:数据库授权(多用户访问)和数据库删除(清理无用数据库),贴合实际开发需求。
- 数据库授权(重点)
实际开发中,我们不会用root用户直接操作业务数据库,通常会创建普通用户,并授予数据库的操作权限(如查询、插入、修改),实操如下:
sql
-- 1. 创建普通用户(用户名:ob_user,密码:Ob@123456,生产环境用复杂密码)CREATE USER IF NOT EXISTS ob_user IDENTIFIED BY 'Ob@123456';-- 2. 授予ob_user用户对ob_business数据库的所有操作权限GRANT ALL ON ob_business.* TO 'ob_user'@'%';-- 3. 刷新权限(使授权立即生效)FLUSH PRIVILEGES;

权限说明(结合官方文档):
-
ALL:授予所有操作权限(SELECT、INSERT、UPDATE、DELETE等),也可根据需求指定单个权限(如SELECT、INSERT);
-
ob_business.*:指定权限范围为ob_business数据库下的所有表;
-
'ob_user'@'%':允许ob_user用户从任何IP连接(%表示所有IP),也可指定具体IP(如'192.168.1.100'),提升安全性;
-
若需要让该用户拥有权限转授能力,可在授权时加上WITH GRANT OPTION 子句。
验证授权:用普通用户登录,查看是否能访问目标数据库:
nginx
# 退出当前root用户连接exit# 用ob_user用户登录mq_t1租户,访问ob_business数据库obclient -h127.0.0.1 -P2881 -uob_user@mq_t1 -p'Ob@123456' -A -Dob_business
登录成功且能正常操作(如创建表),说明授权成功。
- 数据库删除(谨慎操作)
如果数据库不再使用,可执行删除命令,注意:删除数据库会删除其下所有表和数据,不可恢复,实操如下:
sql
-- 删除ob_demo数据库(谨慎执行!)DROP DATABASE IF EXISTS ob_demo;
参数说明:IF EXISTS 避免数据库不存在时报错,推荐加上,防止误操作。
五、重要注意事项(结合单机版文档)
-
权限限制:只有租户的管理员(如root@mq_t1),才有创建、删除数据库的权限,普通用户需授权后才能操作指定数据库,MySQL模式暂不支持角色管理,权限需直接授予用户;
-
资源限制:数据库的资源使用,受所在租户的资源池限制(如CPU、内存),创建多个数据库时,无需额外分配资源,共享租户的资源配额;
-
命名规范:数据库名不能包含特殊字符(如@、#、空格),不能使用OceanBase预留关键字(如SYS、OCEANBASE),建议用"业务标识+数据库类型"命名(如ob_order、ob_user),长度不超过64个字符;
-
单机版特性:OceanBase单机版(all-in-one部署)的MySQL模式,数据库操作和MySQL完全兼容,可直接迁移MySQL的建库语句,无需修改;生产环境建议将数据库的数据目录和日志目录分配到不同磁盘,提升性能和稳定性;
-
客户端字符集配置:若连接后出现中文乱码,可临时修改客户端字符集(set names utf8mb4;),或永久性修改全局字符集参数,确保客户端与数据库字符集一致。
六、小结
本文我们完成了OceanBase MySQL模式数据库的创建、验证、授权和删除,核心要点总结:
-
前提:创建数据库必须先登录目标租户,不能用sys租户直接操作;
-
核心命令:创建(CREATE DATABASE)、查看(SHOW DATABASES)、切换(USE)、删除(DROP DATABASE),和MySQL完全兼容;
-
推荐实践:创建数据库时指定utf8mb4字符集,避免中文乱码;业务场景中使用普通用户操作数据库,授予最小必要权限,提升安全性;
-
关键提醒:数据库字符集创建后不可修改,删除数据库需谨慎,避免误删数据。
数据库创建完成后,下一步就是核心的"建表与插入数据"------这是我们真正存储业务数据的环节。下一篇,我们将结合官方文档,实操创建数据表、插入/查询数据,彻底完成从部署到数据存储的全流程。
往期回顾:
零基础OceanBase数据库入门:搭建你的第一个OceanBase数据库
本系列可以为信创项目国产化改造、分布式数据库学习的小伙伴们做参考。