2016-02-09 5 views
1

Я пытаюсь развернуть Mantis BT на Heroku, используя PostgreSQL в качестве базы данных, в качестве доказательства концепции и обучения (или, возможно, более точно, как «поднять крутую кривую обучения», так как я являюсь итогом новичок для всех трех технологий).Развертывание Mantis BT на Heroku: настройка Postgresql?

Развертывание PHP-приложения в Heroku прошло хорошо, и доступ к URL приложения приводит к его странице admin/install.php. Provisioning базы данных PostgreSQL прошло хорошо, и дал мне базу данных URL, который (обфусцированную) выглядит следующим образом:

postgres://useruseruser:[email protected]com:5432/dbnamedbname 

Я могу получить доступ к базе данных через psql, используя эти учетные данные, и пользователь (предсказуемо) Безразлично» t имеет привилегию «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 для своей «высокой защищенностью базы данных Счет."

Таким образом, казалось бы, что у меня есть все, что нужно, чтобы заполнить Mantis BT admin/install.php форме:

  • Hostname: ec2-107-21-219-201.compute-1.amazonaws.com
  • Имя пользователя: useruseruser
  • Пароль: passwordpasswordpassword
  • База данных: dbnamedbname
  • Администратор Имя пользователя: useruseruser
  • Admin Password: passwordpasswordpassword

Два примечания здесь:

  1. Да, я знаю, что обычный пользователь БД не должен иметь все привилегии пользователя администратора, но Heroku только дала мне одно имя БД, и (потому что на данный момент это просто доказательство концепции), я не хотел начинать пустую тупик, пытаясь - и не сумев - создать еще второго пользователя.
  2. Форма Бланка Mantis говорит, что имя пользователя и пароль администратора являются «при необходимости создавать базу данных». Поскольку база данных («dbnamedbname») уже существует, изначально я думал, что могу оставить эти пробелы, но Mantis BT настаивает на наличии для них значений (и install documentation говорит, что если они не будут предоставлены, «пользователь базы данных будет использоваться») ,

Тем не менее, когда я заполнить форму, используя значения выше и нажмите кнопку «Установить/обновление базы данных» кнопку, я получаю отказ, указывающий, что приложение не может подключиться к базе данных с учетными данными, предоставленных (в точно такие же полномочия, кстати, что я использовал для подключения к базе данных с использованием psql):

enter image description here

(один подозрительный предмет на скриншоте выше, - что я не еще закалили себя идти охота в коде: o bscured Admin password на странице, возвращаемой отправкой формы, показывает только шесть патронов, тогда как фактический пароль, который я вставил, составлял 30 символов.)

Итак, вопросы всем, кто понимает, как работает настройка базы данных Mantis BT.

  1. Действительно ли это передается только на шесть символов на сервер БД или это просто сбои пользовательского интерфейса?
  2. Даже после того, как я выясню, почему он не подключается к базе данных - если это действительно так - это обозначение «для создания базы данных , если необходимо,» (по имени пользователя и паролям администратора) действительно значительна? Или будет глупа и попытаться создать базу данных, даже если указанная база данных уже существует?
  3. Если ответ на 2 выше: «Да, он попытается создать базу данных в любом случае», какой рекомендуемый способ обойти это, учитывая, как Heroku занимается предоставлением баз данных PostgreSQL?

ответ

1

«Ошибка подключения к базе данных» является результатом первоначальной попытки подключения, в которой не указано имя базы данных.

Попытка получить доступ к серверу, таким образом, от 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() вызова вызывает попытку подключения к успеху, и после этого все создание таблицы шаги и проверки успешны.

Неясно, является ли проблема с PostgreSQL 9.4.5 per se, или это то, как Heroku, в частности, настраивает свои серверы PostgreSQL.

Издание подано: https://www.mantisbt.org/bugs/view.php?id=20589

Так, с кодом исправлен, ответы на вопросы, я спросил, являются:

  1. Он передает все параметры, введенные, не усечения.
  2. Это не делает пытается создать базу данных, если она уже существует.
  3. N/A: Mantis поступает правильно.

В качестве бонусного ответа это, по-видимому, not possible to create a lower-privileged user в базе данных PostgreSQL, предоставленной Heroku, - вы застряли с одним пользователем, который они вам дают. Какая-то отстойная.

 Смежные вопросы

  • Нет связанных вопросов^_^