零基础OceanBase数据库入门(4):创建MySQL模式数据库

上一篇我们完成了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]> ,表示已进入该数据库,可正常执行后续操作。

四、补充实操:数据库授权与删除(实用场景)

结合官方文档,补充两个高频操作:数据库授权(多用户访问)和数据库删除(清理无用数据库),贴合实际开发需求。

  1. 数据库授权(重点)

实际开发中,我们不会用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

登录成功且能正常操作(如创建表),说明授权成功。

  1. 数据库删除(谨慎操作)

如果数据库不再使用,可执行删除命令,注意:删除数据库会删除其下所有表和数据,不可恢复,实操如下:

sql 复制代码
-- 删除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模式数据库的创建、验证、授权和删除,核心要点总结:

  1. 前提:创建数据库必须先登录目标租户,不能用sys租户直接操作;

  2. 核心命令:创建(CREATE DATABASE)、查看(SHOW DATABASES)、切换(USE)、删除(DROP DATABASE),和MySQL完全兼容;

  3. 推荐实践:创建数据库时指定utf8mb4字符集,避免中文乱码;业务场景中使用普通用户操作数据库,授予最小必要权限,提升安全性;

  4. 关键提醒:数据库字符集创建后不可修改,删除数据库需谨慎,避免误删数据。

数据库创建完成后,下一步就是核心的"建表与插入数据"------这是我们真正存储业务数据的环节。下一篇,我们将结合官方文档,实操创建数据表、插入/查询数据,彻底完成从部署到数据存储的全流程。

往期回顾:

零基础OceanBase数据库入门:搭建你的第一个OceanBase数据库

零基础OceanBase数据库入门(2):查看集群基本信息

零基础OceanBase数据库入门(3):创建租户

本系列可以为信创项目国产化改造、分布式数据库学习的小伙伴们做参考。

相关推荐
知识分享小能手4 小时前
MongoDB入门学习教程,从入门到精通,MongoDB创建副本集知识点梳理(10)
数据库·学习·mongodb
老衲提灯找美女4 小时前
数据库事务
java·大数据·数据库
会飞的大可4 小时前
Redis 竞品与替代方案选型可行性分析报告
数据库·redis·缓存
周杰伦的稻香4 小时前
PostgreSQL基础命令
数据库·postgresql
先做个垃圾出来………5 小时前
JSON序列化问题
数据库·json
我科绝伦(Huanhuan Zhou)5 小时前
InnoDB Undo Log 深度解析:从原理到实现(基于 MySQL 8.0)
数据库·mysql
jackiehome5 小时前
SQL数据库无法操作,日志文件损坏修复
数据库·sql·oracle
荒川之神5 小时前
ORACLE导入导出实验
数据库·oracle
执笔为剑5 小时前
利用逻辑备份修复误操作的库
数据库·kingbase