You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更换Moodle数据库连接至AWS RDS MariaDB失败求助

Moodle从AWS RDS MySQL切换到MariaDB后数据库连接失败的排查与解决

问题背景

原本运行在AWS RDS(MySQL)上的Moodle实例,切换到AWS RDS(MariaDB)时执行了以下操作:

  • 备份运行中的MySQL数据库
  • 将备份恢复到新的MariaDB RDS实例
  • 修改配置文件中的数据库连接信息
  • 重启Moodle实例

但现在Moodle抛出数据库连接错误:

Error: Database connection failed

It is possible that the database is overloaded or otherwise not running
properly.

The site administrator should also check that the database details have
been correctly specified in config.php

更新信息

  • 源数据库引擎:MySQL
  • 目标数据库引擎:MariaDB

当前config.php内容

<?php  // Moodle configuration file

  unset($CFG);
  global $CFG;
  $CFG = new stdClass();

  $CFG->dbtype    = 'mariadb';
  $CFG->dblibrary = 'native';
  $CFG->dbhost    = 'xxxx.rds.amazonaws.com';
  $CFG->dbname    = 'xxx_lms';
  $CFG->dbuser    = 'admin';
  $CFG->dbpass    = 'uAnaxxxxxxxx';
  $CFG->prefix    = 'mdl_';
  $CFG->dboptions = array (
       'dbpersist' => 0,
       'dbport' => '',
       'dbsocket' => '',
       'dbcollation' => 'utf8mb4_unicode_ci',
  );

  $CFG->wwwroot   = 'http://xx.xxx.xxx.23';
  $CFG->dataroot  = '/var/www/moodledata';
  $CFG->admin     = 'admin';
  $CFG->directorypermissions = 0777;

  require_once(__DIR__ . '/lib/setup.php');

排查步骤与解决方案

1. 验证网络连通性

在Moodle服务器上用命令行直接测试数据库连接:

mysql -h xxxx.rds.amazonaws.com -u admin -p
  • 若能成功登录,说明网络、账号密码无问题;
  • 若失败,检查:
    • AWS RDS安全组是否开放Moodle服务器IP访问3306端口;
    • RDS实例是否处于可用状态(登录AWS控制台查看)。

2. 检查数据库账号权限

登录MariaDB实例,确认账号拥有目标库的完整权限:

SHOW GRANTS FOR 'admin'@'%';
  • 确保输出包含GRANT ALL PRIVILEGES ON xxx_lms.* TO 'admin'@'%';
  • 若权限不足,执行授权命令:
    GRANT ALL PRIVILEGES ON xxx_lms.* TO 'admin'@'%';
    FLUSH PRIVILEGES;
    

3. 修正config.php配置细节

  • 显式指定端口:AWS RDS MariaDB默认端口为3306,避免自动识别问题,修改dboptions:
    $CFG->dboptions = array (
         'dbpersist' => 0,
         'dbport' => '3306',
         'dbsocket' => '',
         'dbcollation' => 'utf8mb4_unicode_ci',
    );
    
  • 校验字符集一致性:登录MariaDB执行以下命令,确认数据库字符集与配置一致:
    SELECT @@character_set_database, @@collation_database;
    
    若不一致,需修改RDS实例的参数组(部分参数修改后需重启实例)。

4. 检查备份恢复完整性

登录MariaDB实例,验证数据是否完整:

USE xxx_lms;
SHOW TABLES LIKE 'mdl_%';
  • 对比原MySQL数据库的表数量,确认无遗漏;
  • 检查mdl_config等核心表的数据是否正常。

5. 验证PHP扩展

确认Moodle服务器已安装MariaDB所需的PHP扩展:

php -m | grep -E 'mysqli|pdo_mysql'
  • 若缺少扩展,安装对应扩展后重启Web服务器(如Apache/Nginx)。

6. 查看详细错误日志

  • 查看Moodle日志:/var/www/moodledata/logs目录下的文件,获取具体连接失败原因;
  • 查看Web服务器日志:如Apache的/var/log/apache2/error.log,排查PHP层面的连接问题。

内容的提问来源于stack exchange,提问作者kallada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:20:25