mysql - 如何在 docker mariadb 中启用联合引擎
问题描述
我需要federated engine
在容器中预填充数据库的入口点。为了启用federated engine
我编写了一个 bash 脚本来手动将联合命令插入到 my.cnf,但在下面出现错误
2021-07-20 16:14:22+00:00 [注意] [入口点]:/usr/local/bin/docker-entrypoint.sh:运行/docker-entrypoint-initdb.d/_enable_federated.sh sed:不能'不打开临时文件 /etc/mysql/sedHjVLxp: 权限被拒绝
_enable_federated.sh
#!/bin/bash
sed -i '/\[mysqld\]/a federated' /etc/mysql/my.cnf
我可以知道启用的正确方法是什么federated engine
解决方案
安装联合存储引擎的最简单方法是使用命令行参数运行容器 --plugin-load-add=ha_federatedx
或者,对于基于配置文件的方法,请使用(参考:文档中的“使用自定义 MariaDB 配置文件” ):
$ cat config/federated.cnf
[mariadbd]
plugin-load-add=ha_federated
$ podman run -v=./config/:/etc/mysql/conf.d/ -e MARIADB_ALLOW_ROOT_EMPTY_PASSWORD=1 mariadb:10.5
最后一种方法是在脚本中/docker-entrypoint-initdb.d/
使用federated.sql
:
INSTALL SONAME 'ha_federatedx';
推荐阅读
- python - 为什么不能在 python 2 中将 print 分配给 foo?
- vba - 通过 VBA 宏关闭时延迟关闭 Powerpoint
- python - 如何在一个窗口中显示多个页面?
- c# - 为什么以及何时应该在 C# 继承期间使用“this”来访问基类中的方法?
- python - 如何从 sqlalchemy 的另一个目录中的模型类创建表?
- python - 区分 xpath
- shell - Shellscript Echo 打印输出
- python - 第 2 列中的分组值,在第 1 列中选择值并从剩余(三)列中的每一列中绘制值 [针对第一列值]
- php - preg_match 不会忽略换行符
- mysql - AWS:“无效的身份池配置。检查为该池分配的 IAM 角色。” AWS Lambda 查询 MYSQL 数据库时出错