标签存档: 开发
在 MariaDB 和 MySQL 中最流行的插件类型之一是 INFORMATION_SCHEMA 插件类型。INFORMATION_SCHEMA 插件会在 INFORMATION_SCHEMA 中添加新表。INFORMATION_SCHEMA 插件非常多,因为它们可以用于向用户展示任何信息,并且非常易于编写。
MariaDB 10.1.1 带有九个 INFORMATION_SCHEMA 插件
- Feedback — 显示匿名化服务器使用信息,并可选择将其发送到配置的 url。
- Locales — 列出编译进服务器的区域设置,由 Roberto Spadim 实现
- METADATA_LOCK_INFO — 列出服务器中的元数据锁。
…
有时需要有条件地执行某些 SQL 语句。如果您从 PHP(或 Java 等)应用程序中执行此操作,这很简单。但如果您只有纯 SQL 怎么办?MariaDB 和 MySQL 在 mysql_fix_privilege_tables.sql 脚本中使用了两种技术(由 mysql_upgrade 工具应用)。
- 创建一个包含 IF 语句的存储过程,执行一次后删除。这要求用户具有 CREATE ROUTINE 权限,并且 mysql.proc 表必须存在且可用(这不一定为真——我们是从 mysql_upgrade 执行此操作,对吧?)。
- 使用动态 SQL,例如
SET @str = IF (@have_csv = ‘YES’,
‘CREATE TABLE IF NOT EXISTS general_log (
event_time TIMESTAMP(6) NOT NULL,
user_host MEDIUMTEXT NOT NULL,
thread_id BIGINT(21) UNSIGNED NOT NULL,
server_id INTEGER UNSIGNED NOT NULL,
command_type VARCHAR(64) NOT NULL,
argument MEDIUMTEXT NOT NULL
) engine=CSV CHARACTER SET utf8 comment=”通用日志”‘,
‘SET @dummy = 0’);
…
是的!在 MariaDB 10.1.1 中,PERFORMANCE_SCHEMA 中的表不再使用 .frm 文件。这些文件不会被创建,也不会被读取——实际上,PERFORMANCE_SCHEMA 表根本不触及磁盘。
这得益于 MariaDB 一个鲜为人知的功能——新的表发现(“旧表发现”于 2004 年在 MySQL NDB Cluster 中实现),该功能在 MariaDB 10.0.2 中实现。MariaDB 不再读取和解析 .frm 文件,而是直接询问 PERFORMANCE_SCHEMA 表的结构,并且由于这些表始终具有固定结构,该表会直接将其返回给 MariaDB,而无需任何外部数据字典。…
众所周知,MariaDB 从 10.0.5 版本开始支持角色。其实现方式几乎完全符合 SQL Standard 2003 中功能 T331“基本角色”和 T332“扩展角色”的规定。
但我们经常听到抱怨,用户对纯粹的标准功能集不满意。特别是,标准规定必须执行
SET ROLE foobar;
才能使用授予给角色 foobar 的权限。这并非总是方便的,有时甚至不可能(想象一下,您需要将角色权限授予封闭源代码应用程序使用的帐户)。…
今天,我们将 MariaDB-10.0 捆绑的 PCRE 库升级到 PCRE-8.34。此 PCRE 版本包含一些改进,修复了问题以提高稳定性和性能,并提供了与 Perl 正则表达式更好的兼容性。
我将详细介绍对 MariaDB 特别有影响的 PCRE 变更。
PCRE 现在包含对 [[:<:]] 和 [[:>:]] 的支持,这与 BSD POSIX 库(由 Henry Spencer 编写)中使用的含义相同,分别表示“单词的开始”和“单词的结束”。对于那些从 Henry Spencer 库迁移到 PCRE 的项目(如 MariaDB)来说,这是个好消息,因为这种非标准语法似乎使用得相当广泛。…
我们一直在尝试并使用 JIRA 进行项目管理,这已不是秘密。自年初以来使用它后,我们大多数人都喜欢它的感觉,因此决定开始更多地使用它。
如您所知,MariaDB 项目的资源分布零散。我们在 Launchpad 中报告 bug。我们将计划存储在 工作日志 (worklog) 中。正因如此,我们从未使用过 Launchpad Blueprint 功能。我们不使用 Launchpad Answers,因为我们有 知识库 (Knowledgebase)。
随着迁移到托管的 JIRA(是的,这是一个重要链接:https://mariadb.org.cn/jira),我们可以报告 bug,制定未来计划,还能为用户提供路线图,这非常棒。…
您可能知道,自版本 5.2.0(2010 年 4 月发布)起,我们支持可插拔身份验证 (Pluggable Authentication)。利用此功能,可以实现任意的用户身份验证和账户管理策略,完全取代 MariaDB 内置的用户名/密码组合和 mysql.user 表身份验证。
此外,您可能听说过,Oracle 最近为 MySQL 发布了一个 PAM 身份验证插件。可惜,这个插件无法在 MariaDB 上运行——虽然 MySQL 可插拔身份验证的实现基于我们的,但 API 不兼容。而且,由于是闭源的,这个插件无法修改以在 MariaDB 中运行。还有——我不是在编造——这个插件不支持客户端和服务器之间的通信,因此即使有了这个插件和 PAM 的强大功能,唯一的可能身份验证方法仍然是简单的用户名/密码组合。
如果你使用 bazaar,你一定见过它的 URI。完整列表可以在 bzr help urlspec 中找到。虽然我通常只使用其中的一小部分,例如 bzr+ssh://bazaar.launchpad.net/~maria-captains/maria/5.2-serg/ 和 http://bazaar.launchpad.net/%2Bbranch/mysql-server/5.5/。
此外,我经常使用 Launchpad 的别名,例如 lp:~maria-captains/maria/5.3-serg/、lp:maria/5.3 和 lp:869001。
最后,还有一些我们在 MySQL 中常用的缩写,以及一些我们在 MariaDB 中使用的缩写,例如 bug#12345 和 wl#90。
令人烦恼的是,当我想要查找 **wl#90** 对应的任务时,我需要记住它对应于 **http://askmonty.org/worklog/?tid=90**,并在浏览器地址栏中输入后者。...