我试图在Heroku上部署Mantis BT,使用PostgreSQL作为数据库,作为概念验证和学习练习(或者更准确地说,作为“爬上陡峭的学习曲线”,因为我对所有三种技术都是新手)。
将PHP应用程序部署到Heroku的过程很顺利,访问应用程序的URL会打开
admin/install.php
页设置PostgreSQL数据库很顺利,并给了我一个数据库URL(模糊),如下所示:
postgres://useruseruser:passwordpasswordpassword@ec2-107-21-219-201.compute-1.amazonaws.com:5432/dbnamedbname
我可以通过访问数据库
psql
使用这些凭据,用户(可以预见)没有“usecreatedb”权限。我无法真正理解PostgreSQL的输出
\z
命令,这似乎说明我有
不
我创建的表的权限:
dbnamedbname=> \z foo;
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+------+-------+-------------------+--------------------------
public | foo | table | |
(1 row)
但我把这种印象归结为还不了解PostgreSQL的习惯用法。
从经验上看,我已经能够确定我拥有CREATE(表和索引)、SELECT、INSERT、UPDATE、DELETE、ALTER和DROP的权限
what Mantis BT requires
它的“高特权数据库帐户”
所以,我似乎有了填写螳螂BT所需的一切
管理员/安装.php
形式:
-
主机名:ec2-107-21-219-201.compute-1.amazonaws.com
-
用户名:useruseruser
-
密码:passwordpassword
-
数据库:dbnamedbname
-
管理员用户名:useruseruser
-
管理员密码:passwordpassword
这里有两个注意事项:
-
是的,我知道普通的DB用户不应该拥有Admin用户所拥有的所有权限,但Heroku只给了我一个DB用户名,(因为这只是一个概念的证明)我不想在创建第二个用户时走上一条可能的死胡同。
-
Mantis BT表单显示,管理员用户名和密码是“在需要时创建数据库”。由于数据库(“dbnamedbname”)已经存在,我最初认为可以将其保留为空,但Mantis BT坚持为其保留值(以及
install documentation
表示如果不提供,“将使用数据库用户”)。
然而,当我使用上面的值填写表格并单击“安装/升级数据库”按钮时,我会收到一个失败消息,表明应用程序无法使用提供的凭据连接到数据库(
完全相同的凭据
,顺便说一句,我曾经使用
psql语言
):
(上述截图中有一件可疑的事情——我
没有
但我还是鼓起勇气去寻找代码:表单提交返回的页面中模糊的Admin密码只显示六个项目符号,而我粘贴的实际密码只有30个字符长。)
因此,向了解Mantis BT数据库设置工作原理的任何人提问。
-
它实际上只向DB服务器传递了六个字符的密码,还是只是UI故障?
-
即使在我弄清楚为什么它没有连接到数据库之后——如果真的是这样的话——“创建数据库
如果需要
“(在Admin用户名和密码条目上)真的很重要吗?或者即使指定的数据库已经存在,愚蠢的事情还会继续尝试创建数据库吗?
-
如果上面2的答案是“是的,它无论如何都会尝试创建数据库”,那么考虑到Heroku如何配置PostgreSQL数据库,建议采用什么方法来解决这个问题?