一文弄懂 OceanBase 用户管理和访问控制

MySQL 向 OceanBase 迁移数据的基本方法 薅OBCP考试券的社区活动本次实验目的:掌握从 MySQL 向 OceanBase 迁移数据的基本方法:mysqldump、datax 、canal 等。 阅读详情

本文主要以 MySQL 和 OceanBase 对比的方式,来介绍 OceanBase(MySQL 模式)安全体系中关于用户管理和访问控制的相关内容,包括用户管理、用户操作权限控制、网络安全访问控制、行级权限控制、角色管理。

作者:金长龙

爱可生测试工程师,负责 DMP 产品的测试工作。

本文来源:原创投稿

* 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

本文主要以 MySQL 和 OceanBase 对比的方式,来介绍 OceanBase(MySQL 模式)安全体系中关于用户管理和访问控制的相关内容,包括用户管理、用户操作权限控制、网络安全访问控制、行级权限控制、角色管理。

用户管理

1.1 基本概念

租户

OceanBase 数据库租户是一个逻辑概念,是资源分配的单位。OceanBase 数据库租户间的数据是完全隔离的,每个租户都相当于传统数据库的一个数据库实例。

OceanBase 数据库租户分为:系统租户和普通租户。

  • OceanBase 数据库预定义了用于管理的系统租户(sys 租户),其兼容模式为 MySQL
  • 普通租户又分为 Oracle 模式租户和 MySQL 模式租户

用户

OceanBase 数据库用户分为:系统租户用户和普通租户用户。

  • 系统租户的内置系统管理员为用户 root
  • MySQL 租户的内置租户管理员为用户 root
  • Oracle 租户的内置租户管理员为用户 sys
  • 创建用户时,如果当前会话的租户为系统租户,则新建的用户为系统租户用户,反之为普通租户用户

1.2 用户名称语法

用户名称出现在 SQL 语句中(如:CREATE USER, GRANT, SET PASSWORD)需要遵循一些规则,测试这些规则在 OceanBase 和 MySQL 中的表现是否一致。

OceanBase

# 用户名称语法为 'user_name'@'host_name'
obclient [oceanbase]> create user 'test01'@'%' identified by '123456';
Query OK, 0 rows affected (0.017 sec)

# @'host_name' 部分是可选的
obclient [oceanbase]> create user test02;
Query OK, 0 rows affected (0.017 sec)

# 如果用户名和主机名作为不带引号的标识符是合法的,则无需将其引号括起来。如果 user_name 字符串包含特殊字符(如空格或 -),或者 host_name 字符串包含特殊字符或通配符(如 . 或 %),则必须使用引号
obclient [oceanbase]> create user test02@%;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '%' at line 1
obclient [oceanbase]> create user test02@sun;
Query OK, 0 rows affected (0.027 sec)

# 主机值可以是主机名或 IP 地址(IPv4 或 IPv6)
obclient [oceanbase]> create user 'test02'@'127.0.0.1';
Query OK, 0 rows affected (0.021 sec)

# 主机名或 IP 地址值中允许使用 % 和 _ 通配符
obclient [oceanbase]> create user 'test02'@'%.mysql.com';
Query OK, 0 rows affected (0.016 sec)

# 对于指定为 IPv4 地址的主机值,可以提供一个网络掩码来指示要用于网络号的地址位数
obclient [oceanbase]> CREATE USER 'test02'@'198.51.100.0/255.255.255.0';
Query OK, 0 rows affected (0.017 sec)

# 指定为 IPv4 地址的主机值可以使用 CIDR 表示法写入
obclient [oceanbase]> CREATE USER 'test02'@'198.51.100.0/24';
Query OK, 0 rows affected (0.028 sec)

MySQL

# 用户名称语法为'user_name'@'host_name'
mysql [localhost:8031] {msandbox} ((none)) > create user 'test01'@'%' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.03 sec)

# @'host_name' 部分是可选的
mysql [localhost:8031] {root} ((none)) > create user test02;
Query OK, 0 rows affected (0.03 sec)

# 如果用户名和主机名作为不带引号的标识符是合法的,则无需将其引号括起来。如果 user_name 字符串包含特殊字符(如空格或 -),或者 host_name 字符串包含特殊字符或通配符(如 . 或 %),则必须使用引号
mysql [localhost:8031] {root} ((none)) > create user test02@%;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%' at line 1
mysql [localhost:8031] {root} ((none)) > create user test02@sun;
Query OK, 0 rows affected (0.03 sec)

# 主机值可以是主机名或 IP 地址(IPv4 或 IPv6)
mysql [localhost:8031] {root} ((none)) > create user 'test02'@'127.0.0.1';
Query OK, 0 rows affected (0.01 sec)

# 主机名或 IP 地址值中允许使用 % 和 _ 通配符
mysql [localhost:8031] {root} ((none)) > create user 'test02'@'%.mysql.com';
Query OK, 0 rows affected (0.03 sec)

# 对于指定为 IPv4 地址的主机值,可以提供一个网络掩码来指示要用于网络号的地址位数
mysql [localhost:8031] {root} ((none)) > CREATE USER 'test02'@'198.51.100.0/255.255.255.0';
Query OK, 0 rows affected (0.02 sec)

# 从 MySQL 8.0.23 开始,指定为 IPv4 地址的主机值可以使用 CIDR 表示法写入
mysql [localhost:8031] {root} ((none)) > CREATE USER 'test02'@'198.51.100.0/24';
Query OK, 0 rows affected (0.04 sec)

测试结果:表现一致。

1.3 用户密码设置

常见的密码分配语句有:CREATE USER, ALTER USER, SET PASSWORD,测试在 OceanBase 和 MySQL 中语法的支持情况。

OceanBase

obclient [oceanbase]> CREATE USER 'jeffrey'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.018 sec)

obclient [oceanbase]> ALTER USER 'jeffrey'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.017 sec)

obclient [oceanbase]> SET PASSWORD FOR 'jeffrey'@'%' = 'password';
ERROR 1827 (42000): The password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function.

obclient [oceanbase]> SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('password');
Query OK, 0 rows affected (0.015 sec)

obclient [(none)]> ALTER USER USER() IDENTIFIED BY 'password';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '() IDENTIFIED BY 'password'' at line 1

MySQL

mysql [localhost:8031] {msandbox} ((none)) > CREATE USER 'jeffrey'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.53 sec)

mysql [localhost:8031] {msandbox} ((none)) > ALTER USER 'jeffrey'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql [localhost:8031] {msandbox} ((none)) > SET PASSWORD FOR 'jeffrey'@'%' = 'password';
Query OK, 0 rows affected (0.02 sec)

mysql [localhost:8031] {msandbox} ((none)) > SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('password');
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PASSWORD('password')' at line 1

mysql [localhost:8031] {jeffrey} ((none)) > ALTER USER USER() IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.03 sec)

测试结果:

  • 两种数据库的 set password 语法略有不同。
  • MySQL 的 alter user 语句支持带 user() 函数,而在 OceanBase 中暂不支持该写法。

通过命令行工具修改密码:

  • OceanBase:暂无。
  • MySQL:可以通过 mysqladmin 工具修改。

密码特有问题:

  • OceanBase:暂无。
  • MySQL:如果使用的是 MySQL 复制,目前副本用作 CHANGE REPLICATION SOURCE TO 语句(来自 MySQL 8.0.23)或 CHANGE MASTER TO 到语句(MySQL 8.0.23 之前)的密码实际上限制为 32 个字符的长度;如果密码较长,则任何多余的字符都将被截断。这不是由于 MySQL 服务器通常施加的任何限制,而是 MySQL 复制特有的问题。

1.4 用户锁定

测试 OceanBase 和 MySQL 的 ALTER USER, CREATE USER 语句,是否支持用户锁定。

OceanBase

obclient [oceanbase]> alter user 'jeffrey'@'%' account unlock;
Query OK, 0 rows affected (0.004 sec)

obclient [oceanbase]> alter user 'jeffrey'@'%' account lock;
Query OK, 0 rows affected (0.019 sec)

obclient [oceanbase]> create user 'jin'@'%' account lock;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'account lock' at line 1

OceanBase 可以通过 __all_user 表中 is_locked 字段来确认用户的锁定状态。

MySQL

mysql [localhost:8031] {msandbox} ((none)) > alter user 'jeffrey'@'%' account unlock;
Query OK, 0 rows affected (0.03 sec)

mysql [localhost:8031] {msandbox} ((none)) > alter user 'jeffrey'@'%' account lock;
Query OK, 0 rows affected (0.03 sec)

mysql [localhost:8031] {msandbox} ((none)) > create user 'jin'@'%' account lock;
Query OK, 0 rows affected (0.01 sec)

MySQL 可以通过 mysql.user 表中的 account_locked 字段来确认用户的锁定状态。

测试结果:

  • OceanBase:ALTER USER 支持用户锁定,CREATE USER 不支持用户锁定。
  • MySQL:ALTER USER 和 CREATE USER 都支持用户锁定。

用户操作权限控制

2.1 权限管理

OceanBase

OceanBase(MySQL 模式)的权限分为 3 个级别:

  1. 管理权限:可以影响整个租户的权限,例如:修改系统设置、访问所有的表等权限。
  2. 数据库权限:可以影响某个特定数据库下所有对象的权限,例如:在对应数据库下创建删除表,访问表等权限。
  3. 对象权限:可以影响某个特定对象的权限,例如:访问一个特定的表、视图或索引的权限。

当前 OceanBase(MySQL 模式)的所有权限列表,可查询 OB 官方文档 MySQL 模式下的权限分类。

MySQL

MySQL 权限同样分为 3 个级别:

  1. 管理权限:管理权限使用户能够管理 MySQL 服务器的操作。这些特权是全局的,因为它们不特定于特定数据库。

  2. 数据库权限:数据库权限适用于数据库及其中的所有对象。可以为特定数据库授予这些权限,也可以全局授予这些权限,以便将它们应用于所有数据库。

  3. 对象权限:可以为数据库中的特定对象、数据库中给定类型的所有对象(例如,数据库中的所有表)或对所有数据库中给定类型的所有对象全局授予数据库对象(如表、索引、视图和存储例程)的权限。

MySQL 还区分静态权限和动态权限,具体的权限列表可查询 MySQL 官方文档Privileges Provided by MySQL。

权限管理对比

  1. 用户权限级别都分为 3 个级别,且表达的含义一致。
  2. 细分的权限上大同小异,OceanBase 目前还有些尚未支持。 从 OB 的官方文档看,目前授权表里预留了一些字段但尚未支持。
  3. OceanBase 特有的几个权限:ALTER TENANT, ALTER SYSTEM, CREATE RESOURCE POOL, CREATE RESOURCE UNIT。
  4. 关于 MySQL 的动态权限,OceanBase 暂不支持。

2.2 授权语句

  1. 授权 GRANT
  2. 撤销授权 REVOKE
  3. 权限转授 WITH GRANT OPTION
  4. 查看用户权限 SHOW GRANTS

测试结果:OceanBase(MySQL 模式)和 MySQL 在授权语句、语法上都一致。

2.3 授权表

OceanBase

相关库相关表
mysqlmysql.user
mysql.db
information_schemainformation_schema.COLUMN_PRIVILEGES
information_schema.SCHEMA_PRIVILEGES
information_schema.TABLE_PRIVILEGES
information_schema.USER_PRIVILEGES
oceanbaseoceanbase.DBA_OB_DATABASE_PRIVILEGE
oceanbase.CDB_OB_DATABASE_PRIVILEGE

MySQL

相关库相关表
mysqluser
global_grants
db
tables_priv
columns_priv
procs_priv
proxies_priv
default_roles
role_edges
password_history
information_schemainformation_schema.COLUMN_PRIVILEGES
information_schema.SCHEMA_PRIVILEGES
information_schema.TABLE_PRIVILEGES
information_schema.USER_PRIVILEGES

测试结果:OceanBase(MySQL 模式)和 MySQL 在授权表的实现上差别比较大。

2.4 部分撤销权限限制

OceanBase

不支持部分撤销全局权限。

MySQL

开启变量 partial_revokes 后,可以部分撤销全局权限。

测试结果:OceanBase 暂不支持部分撤销全局权限。

网络安全访问控制

OceanBase

OceanBase 数据库提供租户白名单策略,实现网络安全访问控制。租户白名单指的是该租户允许登录的客户端列表,系统支持以下多种租户白名单格式:

  • IP 地址的形式,例如:10.10.10.10, 10.10.10.11
  • 子网/掩码的形式,例如:10.10.10.0/24
  • 模糊匹配的形式,例如:10.10.10.% 或者 10.10.10._
  • 多种格式混合的形式,例如:10.10.10.10, 10.10.10.11, 10.10.10.%, 10.10.10._, 10.10.10.0/24

可以通过修改变量 ob_tcp_invited_nodes 设置租户的白名单。

MySQL

MySQL 自身没有找到类似功能。

测试结果:OceanBase 在网络安全访问控制上支持白名单,但 MySQL 自身不支持。

行级权限控制

OceanBase

MySQL 租户模式不支持,在 Oracle 租户模式下通过 Label Security 实现。

MySQL

没有相关功能,可以通过视图/触发器间接实现。

测试结果:OceanBase(MySQL 模式)和 MySQL 均不支持行级别的权限控制。

角色管理

OceanBase

MySQL 租户模式不支持,在 Oracle 租户模式下支持。

MySQL

支持角色管理。

测试结果:OceanBase 不支持角色管理。

这里我们思考一个问题:因为 MySQL 是支持角色管理的,如果从 MySQL 迁移至 OceanBase 应该怎么处理?

从我个人的理解,角色就是一组权限的集合,它的好处是替代单个授权的便捷方式和概念化所有分配的权限。 所以如果从 MySQL 迁移至 OceanBase,理论上对角色的权限展开就可以了。

小结

在用户管理方面,OceanBase 和 MySQL 对用户名称出现在 SQL 语句中遵循的规则是一致的,分配密码的 SQL 语法方面略有差异,用户锁定的 SQL 语句支持略有差异。

在权限管理方面,OceanBase 和 MySQL 的授权语句和语法是一致的,两种数据库都有各自特有的授权表,OceanBase 暂时不支持动态权限和部分撤销全局权限。

在角色管理和行级权限功能方面,OceanBase 在 MySQL 租户模式不支持,但在 Oracle 租户模式下可以支持。

值得一提的是,OceanBase 还提供租户白名单功能,用来控制允许登录的客户端。

关于 SQLE

爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。

SQLE 获取

类型地址
版本库https://github.com/actiontech/sqle
文档https://actiontech.github.io/sqle-docs/
发布信息https://github.com/actiontech/sqle/releases
数据审核插件开发文档https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_auditplugin/auditplugin_development.html
OceanBase数据库-学习笔记4-租户 主要讲述了,租户的概念、分类、特点,已经资源池的创建,租户如何关联到资源池 阅读详情

相关推荐

《OceanBase 数据库系统概念》首次发布,系统精准定义 OceanBase

一本能够全面精准定义 OceanBase 的书 终于诞生啦! 伴随着 OceanBase 在去年6月1日的正式开源,我们听到不少外部小伙伴们的声音,他们希望有一本手册能够全面精准“定义” OceanBase。经过近一年的准备,今天,我们首次发布《OceanBase 数据库系统概念》这本用户手册。这本书第一次全面系统、精准详细地向我们的用户讲解 OceanBase 的概念和原理,即 OceanBase 是什么、不是什么,有什么、没有什么,为什么,怎么做的。这本书(手册)的受众包括使用 OceanBa..

seeyousoonhhh的博客 3706

深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作

OceanBase与MySQL模式下兼容性序在当今的大数据时代,数据库技术的选择对于企业的信息化发展至关重要。OceanBase作为一种高性能、高可用的分布式关系数据库,在与MySQL模式的兼容性方面展现出了显著的优势,为企业数据迁移、整合与升级提供了极大的便利。OceanBase与MySQL的兼容性不仅体现在数据类型、SQL语法等基本面,更深入到了存储引擎、优化器等多个层次。这种高度的兼容性使得企业在不改变原有业务逻辑的情况下,能够轻松地将数据和应用从MySQL迁移到OceanBase,从而享受到Ocea

码到三十五 4万+

OceanBase数据库安全与权限管理实战指南:从用户认证到数据加密

数据库安全是保障企业核心数据资产的基础,其核心在于构建纵深防御体系。从身份认证与权限管理入手,通过用户验证、角色授权和最小权限原则,实现访问控制。数据加密技术则从传输层(SSL/TLS)和存储层(透明数据加密)双重保障数据机密性。在分布式数据库场景下,这些技术对于满足合规要求、防止数据泄露至关重要。OceanBase作为分布式数据库,其安全体系融合了传统数据库的严谨与分布式系统的灵活性,尤其在列加密、数据保护规则和审计监控方面提供了强大支持。本文基于OceanBase数据库安全与权限管理实践,深入解析用户管

weixin_34008933的博客 328

OceanBase简介及其与MySQL的比较

俗话说得好,“三个臭皮匠顶过一个诸葛亮”,假设总共有3台服务器,每个事务操作要求至少在2台服务器上成功,无论任何一台服务器发生故障,系统中还有1台包含了全部数据的服务器能够正常工作,从而做到完全不丢数据,并在30秒之内选出新的主库恢复服务,RPO等于0,RTO小于 30秒。不仅如此,OceanBase底层实现的Paxos高可用协议,在主库故障后,剩余的服务器会很快自动选举出新的主库,实现自动切换,并继续提供服务,在实际的生产系统中做到RTO在20秒之内。2、OB的存储结构使用的是两级的LSM tree。

zelxnxy的博客 3554

OceanBase数据库安全与权限完全指南:从用户管理到数据加密的20大核心技术与实战解析

OceanBase 采用基于角色的访问控制(RBAC)模型,用户是数据库权限体系的基础单元。与达梦数据库类似,OceanBase 的用户分为系统用户和普通用户,但实现机制有显著差异。GRANT 与 REVOKE 机制详解、OceanBase 角色管理、OceanBase 数据安全机制、OceanBase 审计与监控

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 511

OceanBase数据库:行级安全(Row-Level Security)之数据行访问控制全面指南

行级安全(RLS)是数据库精细化权限控制机制,通过动态条件实现行级数据访问过滤。OceanBase提供Label Security(Oracle模式)和视图+触发器(MySQL模式)两种实现方式。Label Security基于多级安全模型(MLS),通过标签策略、组件和数值化标签实现高效访问控制,并优化存储与计算性能。实施步骤包括启用组件、创建策略、绑定表、设置用户标签和数据标签。RLS遵循最小权限原则,适用于多租户隔离和合规场景,确保数据安全的同时保持查询性能。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 522

OceanBase 安全体系解析:用户管理与访问控制

​将通过MySQL与OceanBaseMySQL模式的对比分析,来阐述OceanBase安全体系中关于用户管理与访问控制的能力。这涵盖了用户管理的机制、如何控制用户操作权限、网络层面的安全访问控制、行级权限控制,以及角色管理。

OceanBase分布式数据库的博客 1385

OceanBase数据库多云与混合云部署:跨云环境管理的全面指南

多云与混合云部署的核心概念 多云与混合云部署已成为现代企业数据库架构的主流选择,OceanBase作为原生分布式数据库,在这两种环境中展现出独特优势。多云部署指的是企业同时使用两个或更多公有云服务(如阿里云、腾讯云、AWS等),而混合云则是将私有云与公有云结合使用的架构模式。 技术本质:OceanBase的多云部署不是简单的数据复制,而是通过其原生分布式架构实现真正的"Active-Active"多活模式。每个云环境中的OceanBase集群都能同时处理业务请求,通过实时数据同步技术保持强一致性。这种架构

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1109

OceanBase权限和访问控制

通过创建角色、授予权限和创建用户的操作,可以灵活地管理和控制用户对数据库的访问和操作。使用权限和访问控制可以提高数据库的安全性和隐私性,确保只有授权用户能够访问和操作数据。通过角色可以简化权限管理,将一组相关的权限分配给角色,然后将角色分配给用户。系统级权限用于控制对数据库系统的操作,而对象级权限则用于控制对具体数据库对象的操作。用户可以被授予对特定对象的不同权限,例如只读权限、写权限等。中,权限和访问控制可以分为两个层次:系统级权限和对象级权限。角色是一组权限的集合,而权限则是对特定操作的授权。

互联网知识分享 1559

新手必看:如何用PhaGCN2和vConTACT2搞定宏病毒组注释(附避坑指南)

本文为宏病毒组研究新手提供了使用PhaGCN2和vConTACT2进行病毒注释的完整实战指南。内容涵盖从Conda环境配置、软件安装、参数解析到结果解读的全流程,并重点分享了整合双工具进行交叉验证的策略与常见报错解决方案,旨在帮助研究者高效、准确地完成病毒分类注释工作。

j2k3l4的博客 797

51单片机自学笔记(六)数码管动态扫描与消影实战

本文详细解析了51单片机数码管动态扫描原理与视觉暂留效应,通过硬件电路分析和C语言代码实战,重点介绍了三种数码管消影技术(段选清零法、位选屏蔽法、硬件消影法),解决了显示重影问题,并提供了常见问题调试技巧与定时器中断优化方案,帮助开发者掌握稳定的多位数码管显示技术。

y9z0a1b的博客 1103

如何高效管理OceanBase数据库的用户访问权限【DBA早下班系列】

OceanBase 开发者中心(ODC)作为 OceanBase 数据库官方配套的开发平台,提供了公共资源的全生命周期权限管理能力,本文将以数据库的访问控制为例,介绍了 ODC 在权限管理上的产品形态和实现原理。

OceanBase分布式数据库的博客 1376

手把手教你用AFL挖掘C程序漏洞:从安装到实战(附常见错误排查)

本文详细介绍了如何使用American Fuzzy Lop (AFL)对C/C++程序进行模糊测试,从环境准备、目标程序插桩编译、初始语料库构建到实战运行与结果分析。重点讲解了AFL的安装、常见错误排查(如核心转储配置、执行速度优化)以及提升测试效率的高级策略(如持久模式、并行化),帮助开发者和安全工程师高效挖掘程序漏洞。

weixin_29014237的博客 407

OceanBase安全权限

OceanBase数据库提供了一套完整的企业级安全体系,确保数据的安全性。其安全特性包括身份鉴别和认证、访问控制、数据加密、监控告警和安全审计。身份鉴别和认证通过用户管理和角色管理提升安全性;访问控制通过系统、对象权限和角色管理用户对数据的访问;数据加密支持传输和存储过程中的数据保护,包括全链路加密和透明加密;安全审计记录用户操作和数据库对象访问,确保数据访问的真实记录。此外,OceanBase还支持密码复杂度设置和登录失败处理策略,防止恶意密码攻击,进一步提升数据库的安全性。

Made In SQL 1110

告别零碎资料!手把手教你搞定ASTER L1T数据的预处理全流程(附ENVI实操)

本文详细介绍了ASTER L1T数据的预处理全流程,包括数据获取、质量检查、ENVI实操步骤(辐射定标、大气校正、几何精校正)以及热红外波段深度处理。特别适合地信领域初学者和研究人员,帮助快速掌握ASTER L1T数据处理技巧,提升定量反演研究效率。

weixin_30385925的博客 353

AI 大模型在电商精准营销中的应用

例如,对于用户 A 和用户 B,通过比较他们对共同评价过的商品的评分差异来确定相似度。其中,(Gain(D,a))表示特征(a)对数据集(D)的信息增益,(Ent(D))表示数据集(D)的信息熵,(V)表示特征(a)的取值个数,(D^{v})表示特征(a)取值为(v)的样本子集。其中,(sim(A,B))表示用户 A 和用户 B 的相似度,(I)表示用户 A 和用户 B 共同评价过的商品集合,(R_{A,i})和(R_{B,i})分别表示用户 A 和用户 B 对商品(i)的评分。(三)营销活动效果预测。

alittlehippo的博客 1627

OceanBase + LLM,免费搭建RAG智能问答机器人 | OceanBase AI实践

本文将介绍如何基于 OceanBase 一体化的向量能力,更加敏捷地搭建可扩展且易用的 RAG AI 问答助手。

OceanBase分布式数据库的博客 2179

058、时域降噪(Temporal Denoise):运动补偿与递归滤波在视频降噪中的应用

本文深入探讨了时域降噪(Temporal Denoise)技术在视频处理中的应用。作者通过车载环视项目案例,揭示了空域降噪的局限性,提出利用帧间信息进行降噪的核心思路。文章详细解析了递归滤波和运动补偿两大关键技术,指出递归滤波简单但易产生拖影,而运动补偿通过计算运动矢量解决此问题。作者还分享了多帧降噪方案的优势与算力挑战,并总结了噪声模型匹配、运动矢量一致性等实战调优经验。最后强调时域降噪需要与空域降噪平衡,指出调试工具的重要性,提出"在保证运动区域无鬼影的前提下追求信噪比"的实践原则,体现了算法复杂度与效

zzfmlxs的博客 92

项目二:OceanBase集群运维管理

本文档基于OceanBase 4.2.x企业版,提供全面的集群运维管理指南,涵盖监控、参数调整、备份恢复、故障处理、租户管理、性能优化、安全审计和应急预案等关键运维任务。 1.1.2 节点级监控 1.1.3 租户级监控 1.2 性能监控指标 1.2.1 关键性能指标 1.2.2 存储监控 1.3 监控工具集成 1.3.1 OCP监控配置 1.3.2 Prometheus集成 1.3.3 Grafana Dashboard配置 参考文档: 2.1.2 租户级参数 2.2 性能优化参数 2.2.

喝醉酒的小白 545

Flow Matching05:概率路径与插值【概率路径:线性插值路径(最简单)、高斯插值路径】【先尝试线性插值,看效果如何;若不够好,尝试高斯插值】

好的,我将从数学角度详细解释Flow Matching,从高中生能理解的基础知识开始,逐步深入到高级概念。

u013250861的博客 173

SAP生产订单技术性完成(TECO)操作指南与实战应用

生产订单技术关闭操作指南主要包括单笔和批量关闭两种方式,通过CO02/COHV事务码完成。

m0_47402127的博客 1932

构建坚不可摧的数据库防线:OceanBase安全加固实战指南

在数字化转型浪潮席卷全球的今天,数据已成为企业的核心资产。然而,随着数据价值的飙升,针对数据库的攻击也日益猖獗。仅2024年上半年,全球就报告了超过5000起数据库安全事件,其中因配置不当导致的数据泄露占比高达67%。作为企业级分布式数据库,OceanBase承载着海量关键业务数据,其安全性直接关系到企业的生存与发展。 传统安全思维往往将数据库视为"黑盒",仅在外围部署防火墙和入侵检测系统。但现

gitblog_00103的博客 398

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

OceanBase备份加密实战:从密钥管理到外部KMS配置全解析

数据库备份是保障业务连续性和灾难恢复的基石,而数据加密则是确保备份文件安全的最后一道防线。其核心原理在于通过加密算法对数据进行转换,使得未经授权者无法读取,从而在存储和传输过程中保护数据隐私与完整性。这项技术的核心价值在于实现数据生命周期的端到端安全,满足等保2.0、GDPR等合规性要求,防止因备份文件泄露导致的全量数据外泄风险。典型的应用场景包括金融、政务等对数据安全有严苛要求的行业,以及任何将数据备份至对象存储或磁带库的环境。本文聚焦于分布式数据库OceanBase的备份加密体系,深入剖析其双层密钥管理

weixin_34126557的博客 344

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

在K8S上部署OceanBase的最佳实践

解决方案在 OBCluster的CRD中新增了 schedulerName 字段,用于指定调度器,具体修改可以参考 MR:, 用法如下:metadata:name: testspec:observer:podFields:schedulerName: custom-scheduler # 指定调度器为 custom-schedulerresource:cpu: 8...解决方案。

Being self-discipline leads to freedom 2030

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【赵渝强老师】OceanBase数据库从零开始:Oracle模式

现在你已经了解到《OceanBase数据库从零开始:MySQL模式》这门课程主要内容了,那就开始学习吧。

赵渝强老师优快云博客主页 846

OceanBase数据库安全加固终极指南:从配置到审计的7个关键步骤

OceanBase作为企业级分布式关系数据库,其**数据库安全加固**功能为企业数据提供了全方位的保护。本文将详细介绍OceanBase数据库安全加固的全流程,从基础配置到高级审计,帮助您构建安全可靠的数据环境。 ## 🔐 数据库安全加固的基础配置 ### 1. 访问权限控制 OceanBase提供了完善的用户权限管理体系,通过[src/observer/mysql/](https://li

gitblog_00422的博客 387
上一篇: 如何校验 MySQL&Oracle 时间字段合规性?
下一篇: 一个慢日志问题引出的 MySQL 半一致性读的应用场景
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值