Nextcloud -4- 连接 MariaDB

本文最后更新于:2022年7月4日 上午

Nextcloud 可以连接本地数据库,对于系统维护有很多好处,本文记录 nextcloud 连接mariadb数据库的方法。

操作流程

mariadb 开源高效,我们尝试使用 mariadb 作为数据库

创建数据库容器

  • 使用命令创建容器
1
docker run -it -d --name nextcloud_db -e MYSQL_ROOT_PASSWORD=<YOUR_PASSWORD> -p 3306:3306 --restart=always mariadb

4047 InnoDB 错误

1
Error while trying to initialise the database: An exception occurred while executing a query: SQLSTATE[HY000]: General error: 4047 InnoDB refuses to write tables with ROW_FORMAT=COMPRESSED or KEY_BLOCK_SIZE.
解决方案一
  • 使用 mysql 代替 mariadb
解决方案二
解决方案三(临时方案)
  • 需要修改 mariadb,关闭一个只读的设置
1
2
3
docker exec -it mysql mysql -u root -p
# 输入创建容器时设定的密码
SET GLOBAL innodb_read_only_compressed=OFF;
  • 该解决方案会在容器重启后失效
解决方案四(最优方案)
  • 创建容器后进入容器
1
docker exec -it nextcloud_db bash
  • 修改 /etc/mysql/my.cnf 文件
  • 添加内容:
1
2
[mariadbd]
innodb_read_only_compressed=0

创建 nextcloud-fpm版本容器

1
docker run -it -d --name=nextcloud --link nextcloud_db:db --privileged -p 8080:80 -p 8443:443 --restart=always nextcloud
  • 登录 宿主IP:8080 可以访问 nextcloud 配置界面,填入管理员账户信息和数据库信息

  • 填好后点击完成配置,等待一会nextcloud 完成初始化

验证数据库连接是否成功

  • 进入数据库,查看数据库列表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker exec -it nextcloud_db mysql -u root -p
Enter password:
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| nextcloud_db |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.003 sec)

  • 可以看到 nextcloud_db 被创建,说明链接成功

参考资料


Nextcloud -4- 连接 MariaDB
https://www.zywvvd.com/notes/environment/nas/nextcloud/nextcloud-mysql/nextcloud-mysql/
作者
Yiwei Zhang
发布于
2022年1月19日
许可协议