MariaDB

来自 Alpine Linux

MariaDB 是 MySQL 关系数据库管理系统的一个社区开发的 fork 分支,旨在根据 GNU GPL 保持自由开源。 值得注意的是,它由 MySQL 的原始开发者领导,他们由于担心 Oracle 的收购而 fork 了它。

安装

Alpine Linux 仓库不再包含实际的 MySQL 二进制文件,安装 mysql-* 软件包将改为安装 MariaDB。

安装 mariadb 将创建用户 mysql。当数据库初始化时,将向数据库添加两个用户:rootmysql。 默认情况下,只有当您以相应的系统用户身份登录时,这些用户才能访问。

apk add mariadb mariadb-client

安装上述软件包将向系统添加 MariaDB 的主要组件:mariadb-cientmariadb-server。 下表描述了其他可用的软件包,并按生产服务器的相关性顺序列出。

MySQL 名称 软件包 自 Alpine 版本 简要用途 相关软件包
mysql v2 安装 mariadb 的过渡软件包 mariadb
mysql-client v2 安装 mariadb 客户端工具的过渡软件包 mariadb-client
mariadb v2 server 等同于 mysql-server mariadb-common
mariadb-client v2 连接命令行和工具 mariadb-common
mariadb-doc v3.0 mariadb 的手册页 man man-pages
mariadb-connector-odbc edge 编码或进行操作系统级别的连接,无需安装库即可连接到任何数据库 .
mariadb-connector-c v3.8 C 源代码上的编码连接 mariadb-connector-c-dev
mariadb-backup v3.8 用于物理在线备份的工具,不再广泛使用 .
mariadb-server-utils v3.8 不广泛使用的服务器命令,过去包含在 MariaDB 软件包中 .
mariadb-dev v3.1 MariaDB 的开发文件 .
mariadb-test v3.3 来自 MariaDB 工具的测试套件 .
mariadb-mytop v3.9 数据性能监控 .
mariadb-plugin-rocksdb v3.9 用于数据的纯键值事件关系 .
mariadb-static v3.8 用于构建中静态非依赖链接的静态库 .
mariadb-embedded v3.9 与 C 客户端具有相同接口的 libmysqld mariadb-embedded-dev
mariadb-embedded-dev v3.9 使用正常的 mysql.h 并与 libmysqld 而不是 libmysqlclient 链接 mariadb-dev
mariadb-openrc v3.8 单独的脚本,过去嵌入在服务器软件包中 .

初始化

Alpine 仓库中 MariaDB 的版本行为类似于 MySQL tarball。 不包含图形工具。

位于 /var/lib/mysqldatadir 必须由 mysql 用户和组拥有。 可以通过编辑 /etc/init.d 中的 mariadb 服务文件来更改 datadir 的位置。 新位置还需要通过在 mariadb 配置文件中的 [mysqld] 部分中添加 datadir=<YOUR_DATADIR> 来设置。

mariadb 的正常初始化可以按如下方式完成

  1. 启动主服务。 此时将不会设置 root 密码。 rc-service mariadb start
  2. 通过运行 mysql_secure_installation 来保护数据库安全
  3. 设置权限以管理其他用户和数据库,请参阅:配置
  4. 将 MariaDb 添加到 OpenRC。 rc-update add mariadb default

配置

为了帮助数据库引擎的基本配置,MariaDB 提供了 mariadb-secure-installation

运行此脚本的许多原因不再必要,因为自 MariaDB 10.4 以来,MariaDB 默认使用 Unix 套接字身份验证。

此脚本将引导您完成保护数据库安全的基本步骤。 选项解释如下。

  1. 输入 root 用户的当前密码(如果没有密码,请按 Enter 键): 如果您之前设置了 root 密码,请在此处提供密码并按 Enter 键。 如果没有,只需按 Enter 键。
  2. 切换到 unix_socket 身份验证 [Y/n] 设置 root 密码或使用 Unix_socket 确保只有管理员可以登录引擎数据库。 对于非生产服务器,只需按“n”即可设置 root 密码,这将给您响应 ... skipping.
  3. 更改 root 密码? [Y/n] 在这里您可以更改 root 密码,或者在需要时设置一个密码。 按“Y”并输入新密码。
  4. 删除匿名用户? [Y/n] 删除为使用套接字身份验证登录而创建的匿名用户。 除非您确定需要这样做,否则请回答“Y”以删除它们。
  5. 禁止 root 用户远程登录? [Y/n] 通常,为了防止通过网络进行密码嗅探尝试,应仅允许 root 用户从“localhost”连接。 回答“Y”。
  6. 删除测试数据库并禁止对其的访问? [Y/n] 默认情况下,MariaDB 附带一个名为“test”的数据库,任何人都可以访问。 如果不需要,请回答“Y”。
  7. 现在重新加载权限表? [Y/n] 重新加载权限表将确保到目前为止所做的所有更改立即生效。 回答“Y”。

脚本退出后,使用 rc-service mariadb restart 重新启动服务

要在每次启动时启动数据库守护程序,请运行 rc-update add mariadb default

配置文件和自定义

MariaDB 的配置设置现在组织在单独的文件中,而不是存储在 my.cnf 中。 主要配置是通过将文件添加到 /etc/my.cnf.d/ 完成的。 用户特定的配置文件存储在 ~/.my.cnf 中。 用户特定的配置文件在系统范围的配置之后加载。 下面列出了各种配置文件的位置。

配置文件 Alpine 版本 要配置的内容
/etc/mysql/my.cnf v2 到 v3.8 所有指令,全局配置文件
/etc/my.cnf.d/mariadb-server.cnf 自 3.9 起 第一个全局配置文件,主要指令
$HOME/.my.cnf 所有版本 仅用户名配置指令

如前所述,此页面描述了 MariaDB 的基本用法。 对于专业用途,也应参考 MySQL

  • 以下命令将配置服务器以接受所有传入连接。 这应该仅在开发时完成,或者如果数据库未暴露于 Internet 或敏感网络。

sed -i "s|.*bind-address\s*=.*|bind-address=0.0.0.0|g" /etc/mysql/my.cnf sed -i "s|.*bind-address\s*=.*|bind-address=0.0.0.0|g" /etc/my.cnf.d/mariadb-server.cnf

  • 对于简单的安装,禁用主机名搜索可以提高性能,但仅对本地服务器有用。

sed -i "s|.*skip-networking.*|skip-networking|g" /etc/mysql/my.cnf sed -i "s|.*skip-networking.*|skip-networking|g" /etc/my.cnf.d/mariadb-server.cnf

更新或从升级版本迁移

在 Alpine Linux 版本之间升级时,MariaDB 也可能有主要版本更改,应升级数据库以匹配。 此过程的推荐步骤在下面详细介绍。

  1. 虽然可能不再是严格必要的,但在升级数据库版本之前备份数据库很有用。
  2. 更新 Alpine Linux 和 MariaDB/MySQL 软件包。
  3. 通过运行 apk add mariadb-server-utils 安装 mariadb-server-utils。
  4. 运行 mysql_upgrade -u root -p 脚本,并提供 root 数据库用户的密码。
  5. 通过运行 rc-service mariadb restart 重新启动服务。

如果 mysql_upgrade 因为 MySQL 无法启动而失败,请尝试使用 mysqld_safe --datadir=/var/lib/mysql/ 在安全模式下运行 MySQL,然后再次运行 mysql_upgrade -u root -p

创建用户

您可能想要创建一个具有远程访问数据库权限的用户。

打开 mariadb 客户端:mariadb

添加具有关联主机和密码的用户: CREATE OR REPLACE USER admin@'%' IDENTIFIED BY 'ASecurePassword';

注意:@'%' 允许来自任何主机的连接

这不足以允许远程访问。 请参阅 配置 MariaDB 以进行远程客户端访问

参见