kuaifan / dootask

DooTask是一款开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具;同时消息功能使用非对称加密技术让你的沟通更安全。

Home Page:https://www.dootask.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

数据库初始化失败!解决方法一种

yexing159 opened this issue · comments

检查docker ps -a,发现数据库对应的容器mariadb 处于restart状态:

root@# docker ps -a
CONTAINER ID   IMAGE                             COMMAND                  CREATED        STATUS                          PORTS                                       NAMES
0a64281b096a   kuaifan/php:swoole-8.0.rc14       "/start.sh"              2 hours ago    Up 2 hours                                                                  dootask-php-a1f2eb
07f5c67b1fcf   redis:alpine                      "docker-entrypoint.s…"   2 hours ago    Up 2 hours                      6379/tcp                                    dootask-redis-a1f2eb
6ebf06c9abed   mariadb:10.7.3                    "docker-entrypoint.s…"   2 hours ago    Restarting (1) 44 seconds ago                                               dootask-mariadb-a1f2eb

检查mariadb的日志 docker logs mariadb

2023-10-19 06:14:08+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.7.3+maria~focal started.
2023-10-19 06:14:08+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2023-10-19 06:14:08+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.7.3+maria~focal started.
2023-10-19 06:14:08+00:00 [ERROR] [Entrypoint]: mariadbd failed while attempting to check config
        command was: mariadbd --verbose --help --log-bin-index=/tmp/tmp.4r6Wld3MVt
        mariadbd: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 13 "Permission denied")
Fatal error in defaults handling. Program aborted

可以清晰看到,启动失败原因为mysql/conf.d 文件夹权限不对,无法read

再看cmd源码,数据库初始化失败的检查条件为:
while [ ! -f "${cur_path}/docker/mysql/data/$(env_get DB_DATABASE)/db.opt" ]; do

即可以确定,docker数据库容器mariadb启动失败,导致无法挂载容器目录、认为数据库初始化失败
根因为mysql/conf.d 目录权限设置有问题。
cmd脚本中是将该目录权限设置为775,但估计各种环境差异性,某些环境就会出现权限问题

解决方法:
首先检查mariadb的所需的权限id是多少,如下为999:

# docker run -it --rm --user mysql:mysql mariadb:10.7.3 id
uid=999(mysql) gid=999(mysql) groups=999(mysql)

docker images查看你的mariadb版本是多少,对应吧 10.7.3 这段改成那个版本
然后修改./docker/mysql 所有文件权限
chown -R 999:999 *

再去install就正常了