在设置rt 5时有一堆鸡毛蒜皮的问题,花一个小时反复推敲,似乎对其他人来说都是有价值的。
具体有两个问题:
- 要创建的数据库用户不存在,因此无法用于创建其自身或任何数据库
- 如果您在mysql中手动创建用户(并授予它对rt 5数据库的权限),则它没有创建数据库初始化的ACL部分所需的用户的权限。
- 您需要使用grant选项向用户授予对mysql.* 的INSERT权限以允许其执行此操作-但这是一个安全漏洞(尤其是如果不删除的话)。
- /opt/rt 5/etc(缺省安装目录)中不存在用于创建数据库的模式
(note以下所有操作都是以shell中的root用户身份完成的,如果愿意,equiv可以在每个命令前面加上“sudo”)
make initialize-database不工作,因为它读取/opt/rt 5/etc/RT_SiteConfig.pm并找到数据库用户(rt_admin),然后尝试使用其权限执行所有操作(包括创建自身?)
由于make命令只是运行/opt/rt 5/sbin/rt-setup-database --action init,我们可以在自己创建用户和数据库之后,使用选项手动运行该命令:
mysql> create database rt5;
mysql> grant all on rt5.* to 'rt_admin'@'localhost' identified by 'password';
mysql> flush privileges;
字符串
然后:/opt/rt 5/sbin/rt-setup-database --操作acl,核心数据,插入
但这会引发问题:
[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)
型
这会继续发生其他各种错误。即使使用GRANT privs,我们也会得到:
[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.* 访问权限以及其他超级用户级别选项。
1条答案
按热度按时间gc0ot86w1#
第一个问题的解决方案是从/opt/rt 5/etc目录手动运行rt-setup-database(作为root):
(note:rt-setup-database的手册页在此https://docs.bestpractical.com/rt/5.0.5/rt-setup-database.html)
字符串
如果你使用的是root mysql的密码(默认debian没有),那么在你的命令中添加一个--transmitt-for-dba-password)。
但是,我建议一次执行一个操作,以便在错误发生时捕获错误:
型
这应该可以工作,并根据需要创建所有新用户(确保您的rt-admin或RT_SiteConfig.pm中的任何内容作为数据库用户创建)。
第二个问题是,rt-setup-database --action insert 命令没有默认的模式路径。因此必须提供模式的完整路径。
我不明白为什么5.0.3没有一个,我在黑暗中刺入并使用了etc/upgrade/5.0.2(这似乎是由该目录中的'content'代码片段指定的-插入操作将失败,
型
否则。)
解决方案是使用此命令插入(再次从/opt/rt 5/etc目录运行):
../sbin/rt-setup-database --datadir=
pwd
/upgrade/5.0.2 --dba root --action insert这解决了我的问题。