RT5.0.3安装阶段数据库配置方法及常见问题排查
RT5数据库配置的"鸡生蛋"问题排查记录
核心矛盾问题
- 数据库用户创建权限冲突:待创建的数据库用户尚未存在,无法用于创建自身或数据库
- 手动在MySQL中创建用户并分配rt5数据库权限后,该用户不具备数据库初始化ACL环节所需的创建用户权限
- 若为该用户授予
mysql.*的INSERT权限及GRANT选项,会带来安全隐患(尤其是未及时收回权限时)
- Schema文件缺失:创建数据库所需的schema文件不存在于默认安装目录
/opt/rt5/etc中
注:以下操作均以shell中的root用户执行,若偏好普通用户操作,可在每条命令前添加sudo
问题触发场景
make initialize-database命令无法正常运行,原因是它会读取/opt/rt5/etc/RT_SiteConfig.pm文件中的数据库用户rt_admin,并尝试使用该用户的权限完成所有操作(包括创建自身),逻辑上存在矛盾。
由于make initialize-database本质是运行/opt/rt5/sbin/rt-setup-database --action init,因此尝试手动创建用户和数据库后,带参数执行该命令:
手动创建数据库及用户
create database rt5; grant all on rt5.* to 'rt_admin'@'localhost' identified by 'password'; flush privileges;
执行初始化命令
/opt/rt5/sbin/rt-setup-database --action acl,coredata,insert
执行报错及分析
执行上述命令后,首先出现如下报错:
[24841] [Thu Dec 14 23:58:59 2023] [warning]: DBD::mysql::st execute failed: You are not allowed to create a user with GRANT at /opt/rt5/sbin/../lib/RT/Handle.pm line 475, <STDIN> line 1. (/opt/rt5/sbin/../lib/RT/Handle.pm:475)
即便为rt_admin用户追加GRANT权限,仍会触发新的权限报错:
[25007] [Fri Dec 15 00:10:13 2023] [warning]: DBD::mysql::st execute failed: Access denied for user 'rt_admin'@'localhost' to database 'mysql' at /opt/rt5/sbin/../lib/RT/Handle.pm line 475, <STDIN> line 1. (/opt/rt5/sbin/../lib/RT/Handle.pm:475)
结论
上述报错表明,rt_admin用户需要具备mysql.*的访问权限及额外的超级用户级权限,才能完成RT5的数据库初始化流程。
内容的提问来源于stack exchange,提问作者math
相关产品推荐
相关产品推荐

