在 Heroku 上部署 Mantis BT:Postgresql 设置?
Deploying Mantis BT on Heroku: Postgresql setup?
我正在尝试在 Heroku 上部署 Mantis BT,使用 PostgreSQL 作为数据库,作为概念证明和学习练习(或者更准确地说,作为 "climb up a steep learning curve,",因为我是一个新手所有三种技术)。
将 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
命令的输出,这似乎表明我对我创建的 table 没有 no 权限:
dbnamedbname=> \z foo;
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+------+-------+-------------------+--------------------------
public | foo | table | |
(1 row)
但我把这种印象归结为还没有真正了解 PostgreSQL 的习语。
根据经验,我已经能够确定我拥有 CREATE(对于 tables 和索引)、SELECT、INSERT、UPDATE、DELETE、ALTER 和 DROP 的权限,这似乎what Mantis BT requires 因为 "high-privileged database account."
所以,看来我已经具备了填写 Mantis BT admin/install.php
表格所需的一切:
- 主机名:ec2-107-21-219-201.compute-1.amazonaws.com
- 用户名:useruseruser
- 密码:passwordpassword密码
- 数据库:dbnamedbname
- 管理员用户名:useruseruser
- 管理员密码:passwordpasswordpassword
这里有两个注意事项:
- 是的,我知道普通数据库用户不应该拥有管理员用户拥有的所有权限,但是 Heroku 只给了我一个数据库用户名,并且(因为这只是一个概念证明)我没有'我不想走上可能的死胡同,尝试创建第二个用户,但失败了。
- Mantis BT 表单显示管理员用户名和密码是 "to create Database if required." 由于数据库 ("dbnamedbname") 已经存在,我最初认为我可以将这些留空,但 Mantis BT 坚持让它们的值(install documentation 表示如果未提供它们,"the database user will be used")。
然而,当我使用上面的值填写表格并单击 "Install/Upgrade Database" 按钮时,我收到一个失败消息,表明该应用程序无法使用提供的凭据连接到数据库 (完全相同的凭据,顺便说一句,我曾经使用 psql
):
连接到数据库
(上面屏幕截图中的一个可疑之处——我 还没有 鼓起勇气在代码中寻找:在返回的页面中模糊的管理员密码表单提交仅显示六个项目符号,而我粘贴的实际密码长度为 30 个字符。)
因此,请向了解 Mantis BT 数据库设置工作原理的任何人提问。
- 它实际上只向数据库服务器传递了六个字符的密码,还是只是一个 UI 故障?
- 即使在我弄清楚为什么它没有连接到数据库之后——如果这是真的——符号 "to create Database if required"(在管理员用户名和密码条目上)真的很重要吗?还是愚蠢的事情会去尝试创建数据库,即使指定的数据库已经存在?
- 如果以上 2 的答案是 "Yes, it will try to create the database anyway," 考虑到 Heroku 如何配置 PostgreSQL 数据库,推荐的解决方法是什么?
"Database connection failed" 是未指定数据库名称的初始连接尝试的结果。
尝试从 psql
以这种方式访问服务器会导致以下错误:
$ psql -h ec2-107-21-219-102.compute-1.amazonaws.com -U useruseruser
Password for user useruseruser:
psql: FATAL: database "useruseruser" does not exist
将数据库名称作为附加参数添加到该 Connect()
调用会导致连接尝试成功,然后所有 table 创建步骤和检查都会成功。
我不清楚问题是出在 PostgreSQL 9.4.5 本身,还是出在 Heroku 特别是如何配置他们的 PostgreSQL 服务器上。
提交问题:https://www.mantisbt.org/bugs/view.php?id=20589
因此,随着代码的修补,我提出的问题的答案是:
- 它按输入的方式传递所有参数,没有截断。
- 如果数据库已经存在,它不会尝试创建数据库。
- N/A:螳螂做对了。
作为一个额外的答案,它显然是 not possible to create a lower-privileged user 在 Heroku 提供的 PostgreSQL 数据库中——你被他们给你的一个用户困住了。有点烂。
我正在尝试在 Heroku 上部署 Mantis BT,使用 PostgreSQL 作为数据库,作为概念证明和学习练习(或者更准确地说,作为 "climb up a steep learning curve,",因为我是一个新手所有三种技术)。
将 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
命令的输出,这似乎表明我对我创建的 table 没有 no 权限:
dbnamedbname=> \z foo;
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+------+-------+-------------------+--------------------------
public | foo | table | |
(1 row)
但我把这种印象归结为还没有真正了解 PostgreSQL 的习语。
根据经验,我已经能够确定我拥有 CREATE(对于 tables 和索引)、SELECT、INSERT、UPDATE、DELETE、ALTER 和 DROP 的权限,这似乎what Mantis BT requires 因为 "high-privileged database account."
所以,看来我已经具备了填写 Mantis BT admin/install.php
表格所需的一切:
- 主机名:ec2-107-21-219-201.compute-1.amazonaws.com
- 用户名:useruseruser
- 密码:passwordpassword密码
- 数据库:dbnamedbname
- 管理员用户名:useruseruser
- 管理员密码:passwordpasswordpassword
这里有两个注意事项:
- 是的,我知道普通数据库用户不应该拥有管理员用户拥有的所有权限,但是 Heroku 只给了我一个数据库用户名,并且(因为这只是一个概念证明)我没有'我不想走上可能的死胡同,尝试创建第二个用户,但失败了。
- Mantis BT 表单显示管理员用户名和密码是 "to create Database if required." 由于数据库 ("dbnamedbname") 已经存在,我最初认为我可以将这些留空,但 Mantis BT 坚持让它们的值(install documentation 表示如果未提供它们,"the database user will be used")。
然而,当我使用上面的值填写表格并单击 "Install/Upgrade Database" 按钮时,我收到一个失败消息,表明该应用程序无法使用提供的凭据连接到数据库 (完全相同的凭据,顺便说一句,我曾经使用 psql
):
(上面屏幕截图中的一个可疑之处——我 还没有 鼓起勇气在代码中寻找:在返回的页面中模糊的管理员密码表单提交仅显示六个项目符号,而我粘贴的实际密码长度为 30 个字符。)
因此,请向了解 Mantis BT 数据库设置工作原理的任何人提问。
- 它实际上只向数据库服务器传递了六个字符的密码,还是只是一个 UI 故障?
- 即使在我弄清楚为什么它没有连接到数据库之后——如果这是真的——符号 "to create Database if required"(在管理员用户名和密码条目上)真的很重要吗?还是愚蠢的事情会去尝试创建数据库,即使指定的数据库已经存在?
- 如果以上 2 的答案是 "Yes, it will try to create the database anyway," 考虑到 Heroku 如何配置 PostgreSQL 数据库,推荐的解决方法是什么?
"Database connection failed" 是未指定数据库名称的初始连接尝试的结果。
尝试从 psql
以这种方式访问服务器会导致以下错误:
$ psql -h ec2-107-21-219-102.compute-1.amazonaws.com -U useruseruser
Password for user useruseruser:
psql: FATAL: database "useruseruser" does not exist
将数据库名称作为附加参数添加到该 Connect()
调用会导致连接尝试成功,然后所有 table 创建步骤和检查都会成功。
我不清楚问题是出在 PostgreSQL 9.4.5 本身,还是出在 Heroku 特别是如何配置他们的 PostgreSQL 服务器上。
提交问题:https://www.mantisbt.org/bugs/view.php?id=20589
因此,随着代码的修补,我提出的问题的答案是:
- 它按输入的方式传递所有参数,没有截断。
- 如果数据库已经存在,它不会尝试创建数据库。
- N/A:螳螂做对了。
作为一个额外的答案,它显然是 not possible to create a lower-privileged user 在 Heroku 提供的 PostgreSQL 数据库中——你被他们给你的一个用户困住了。有点烂。