【发布时间】:2016-02-09 07:08:26
【问题描述】:
我正在尝试在 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 命令的输出,这似乎表明我对我创建的表没有 no 权限:
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,因为它的“高权限数据库帐户。”
所以,我似乎拥有填写 Mantis BT admin/install.php 表格所需的一切:
- 主机名:ec2-107-21-219-201.compute-1.amazonaws.com
- 用户名:useruseruser
- 密码:passwordpasswordpassword
- 数据库:dbnamedbname
- 管理员用户名:useruseruser
- 管理员密码:passwordpasswordpassword
这里有两个注意事项:
- 是的,我知道普通 DB 用户不应该拥有 Admin 用户拥有的所有权限,但是 Heroku 只给了我一个 DB 用户名,而且(因为现在这只是一个概念证明)我不想要开始尝试创建第二个用户可能失败的死胡同。
- Mantis BT 表单显示管理员用户名和密码是“在需要时创建数据库”。由于数据库(“dbnamedbname”)已经存在,我最初认为我可以将这些留空,但 Mantis BT 坚持为它们提供值(install documentation 表示如果不提供它们,“将使用数据库用户")。
然而,当我使用上面的值填写表格并单击“安装/升级数据库”按钮时,我得到一个失败,表明应用程序无法使用提供的凭据连接到数据库(确切的相同的凭据,顺便说一句,我使用psql 连接到数据库):
(在上面的截图中有一个可疑的东西——我还没有坚定自己去寻找代码:表单提交返回的页面中隐藏的管理员密码只显示六个项目符号,而我粘贴的实际密码是 30 个字符长。)
所以,向任何了解 Mantis BT 数据库设置工作原理的人提问。
- 实际上是只向数据库服务器传递了六个字符的密码,还是只是一个 UI 故障?
- 即使在我弄清楚为什么它没有连接到数据库之后——如果那是真的——“创建数据库 if required”(在管理员用户名和密码条目上)确实是重大?或者即使指定的数据库已经存在,愚蠢的事情也会去尝试创建数据库?
- 如果上面 2 的答案是“是的,无论如何它都会尝试创建数据库”,考虑到 Heroku 如何配置 PostgreSQL 数据库,推荐的解决方法是什么?
【问题讨论】:
标签: postgresql heroku mantis