
上一篇我们完成了MySQL模式租户的创建,成功拥有了属于自己的“独立数据库实例”。接下来,我们将进入更贴近实际开发的环节——创建数据库。
数据库(Database)是租户下的“数据容器”,用于隔离不同业务的数据(比如电商的“订单库”和“用户库”),和我们熟悉的MySQL数据库用法高度一致。今天就结合OceanBase官方demo和单机版文档,从零实操,完成数据库的创建、验证、授权及基础管理。
一、租户与数据库
很多新手会混淆“租户”和“数据库”,这里用一句话讲透(结合单机版特性)
租户 = 独立数据库实例(有自己的资源、管理员),数据库 = 租户内的业务数据容器(归属于某个租户,受租户资源限制)。
举个例子,我们上一篇创建的mq_t1租户,就相当于一个“MySQL实例”,今天要创建的数据库,就是这个“实例”里的一个个独立数据库,用于存放不同业务的数据,租户间的数据库完全隔离,互不影响。
核心要点:创建数据库必须先登录目标租户(不能用sys租户直接创建),且OceanBase MySQL模式的数据库,支持和MySQL一致的字符集、权限管理,学习成本极低。
二、前置准备:登录目标租户
延续上一篇的操作,我们先登录之前创建的mq_t1租户(如果已退出,重新执行登录命令),这是创建数据库的前提:
# 登录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:查看租户内现有数据库
登录租户后,先查看默认存在的数据库,避免创建重名数据库:
-- 查看当前租户下所有数据库
SHOW DATABASES;
执行后会显示3个默认系统数据库(和MySQL一致),无需修改/删除:
步骤2:基础创建(默认参数)
如果不需要自定义字符集、读写属性,直接用最简命令创建,语法和MySQL完全一致:
-- 创建名为test的数据库(自定义数据库名,建议小写)
CREATE DATABASE IF NOT EXISTS test;
参数说明:
执行成功后,会提示 Query OK, 1 row affected ,表示数据库创建成功。
步骤3:自定义参数创建
实际开发中,我们通常需要指定数据库的字符集(避免中文乱码)、读写属性(如只读库),结合官方文档,实操如下:
-- 创建名为ob_business的数据库,指定字符集为utf8mb4,读写属性为可读写
CREATE DATABASE IF NOT EXISTS ob_business
DEFAULT CHARACTER SET utf8mb4 -- 指定字符集(支持utf8mb4、gbk、gb18030等)
DEFAULT COLLATE utf8mb4_general_ci -- 指定字符序(对应字符集的默认排序规则)
READ WRITE; -- 读写属性:READ WRITE(可读写,默认)、READ ONLY(只读)
关键补充(结合官方文档重点):
步骤4:验证数据库创建结果
创建完成后,再次执行查看命令,确认数据库已成功创建:
SHOW DATABASES;
执行结果中,会新增我们创建的test和ob_business两个数据库,说明创建成功。
补充:也可以通过查询系统表,查看数据库的详细信息(如字符集、创建时间):
-- 查看指定数据库(ob_business)的详细信息
SELECT *
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = 'ob_business';
步骤5:切换到目标数据库
数据库创建后,需要切换到该数据库,才能进行后续的建表、插入数据等操作,命令和MySQL一致:
-- 切换到ob_business数据库
USE ob_business;
切换成功后,终端会显示 obclient [ob_business]> ,表示已进入该数据库,可正常执行后续操作。
四、补充实操:数据库授权与删除(实用场景)
结合官方文档,补充两个高频操作:数据库授权(多用户访问)和数据库删除(清理无用数据库),贴合实际开发需求。
1. 数据库授权(重点)
实际开发中,我们不会用root用户直接操作业务数据库,通常会创建普通用户,并授予数据库的操作权限(如查询、插入、修改),实操如下:
-- 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;
权限说明(结合官方文档):
验证授权:用普通用户登录,查看是否能访问目标数据库:
# 退出当前root用户连接
exit
# 用ob_user用户登录mq_t1租户,访问ob_business数据库
obclient -h127.0.0.1 -P2881 -uob_user@mq_t1 -p'Ob@123456' -A -Dob_business登录成功且能正常操作(如创建表),说明授权成功。
2. 数据库删除(谨慎操作)
如果数据库不再使用,可执行删除命令,注意:删除数据库会删除其下所有表和数据,不可恢复,实操如下:
-- 删除ob_demo数据库(谨慎执行!)
DROP DATABASE IF EXISTS ob_demo;参数说明:IF EXISTS 避免数据库不存在时报错,推荐加上,防止误操作。
五、重要注意事项(结合单机版文档)
1. 权限限制:只有租户的管理员(如root@mq_t1),才有创建、删除数据库的权限,普通用户需授权后才能操作指定数据库,MySQL模式暂不支持角色管理,权限需直接授予用户;
2. 资源限制:数据库的资源使用,受所在租户的资源池限制(如CPU、内存),创建多个数据库时,无需额外分配资源,共享租户的资源配额;
3. 命名规范:数据库名不能包含特殊字符(如@、#、空格),不能使用OceanBase预留关键字(如SYS、OCEANBASE),建议用“业务标识+数据库类型”命名(如ob_order、ob_user),长度不超过64个字符;
4. 单机版特性:OceanBase单机版(all-in-one部署)的MySQL模式,数据库操作和MySQL完全兼容,可直接迁移MySQL的建库语句,无需修改;生产环境建议将数据库的数据目录和日志目录分配到不同磁盘,提升性能和稳定性;
5. 客户端字符集配置:若连接后出现中文乱码,可临时修改客户端字符集(set names utf8mb4;),或永久性修改全局字符集参数,确保客户端与数据库字符集一致。
六、小结
本文我们完成了OceanBase MySQL模式数据库的创建、验证、授权和删除,核心要点总结:
数据库创建完成后,下一步就是核心的“建表与插入数据”——这是我们真正存储业务数据的环节。下一篇,我们将结合官方文档,实操创建数据表、插入/查询数据,彻底完成从部署到数据存储的全流程。