#postgresql #amazon-web-services #amazon-ec2 #postgresql-9.3
#postgresql #amazon-веб-сервисы #amazon-ec2 #postgresql-9.3
Вопрос:
У меня возникла проблема с экземпляром Amazon Linux (на базе CentOS) при попытке установить последнюю стабильную версию Postgres (версия 9.3).
Эта версия не поставляется в основных репозиториях этого дистрибутива, и я попробовал некоторые из RPM, которые доступны на сайте загрузки Postgres. Версии CentOS и Fedora не работали, так как они жаловались на то, что дистрибутив, который я использую, не соответствует тому, для которого они созданы. Red Hat .rpm работал хорошо, и я мог видеть новые пакеты, доступные для yum.
Я использовал следующее:
wget http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm
rpm -Uvh pgdg-redhat93-9.3-1.noarch.rpm
Итак, я установил пакеты Postgres интересующей меня версии:
yum install postgresql93 postgresql93-devel postgresql93-server
Пока все идет так хорошо. Все было установлено красиво (просто конфликтовал php-пакет, но я его взорвал).
Как сказано в каждом блоге и справочной странице, я инициализировал базу данных. Для меня возникла необходимость изменить ПОРТ, поэтому я сделал это в /etc/init.d/postgresql-9.3
скрипте, изменив порт на 5552, который доступен в этом окне. Для инициализации и запуска сервера ничего нового:
service postgresql-9.3 initdb
service postgresql-9.3 start
(название службы имеет версию, отличную от версии службы, установленной из основных репозиториев Amazon)
Это просто работает. У меня нет никаких признаков проблемы, пока я не попытался подключиться с помощью psql
утилиты:
[root@local]# su - postgres
-bash-4.1$ psql
psql: FATAL: role "postgres" does not exist
Как обычно, я также не могу сделать это с помощью root, но с пользователем «postgres» кажется разумным, что роль, по крайней мере, должна была быть создана.
Я не могу использовать createdb
по той же странной причине. Я получал ту же ошибку для любой операции, которую я пытаюсь выполнить в папке bin, которая может взаимодействовать с базой данных. Для этого я застрял с «рабочей» базой данных, но ни один пользователь не может подключиться к ней.
При поиске подсказки, которые я мог найти, всегда связаны с пользователем, пытающимся подключиться с помощью пользователя root, и решение заключается в использовании пользователя postgres, и я это делаю, как вы видели.
Это проблема, которая только что возникла при попытке установить версию 9.3. Когда я попробовал пакет репозитория (который по-прежнему 9.2), он работал просто отлично. Я мог бы нормально подключиться и протестировать базу данных.
Перед этим пакетом я пытался скомпилировать Postgres из исходного кода, но ад зависимостей просто не отпускал меня.
Есть ли какие-либо другие настройки, которые я мог бы пропустить, какой-либо необходимый пакет или даже предположение, которым вы могли бы поделиться, чтобы помочь мне решить эту проблему?
Комментарии:
1. Неясно, какие из этих команд вы выполняли как root, а какие выполняли как ec2-user. И
service postgresql-9.3
сама по себе не является законной командой, после нее должно быть `start`?2. Все, что не было указано для запуска как «postgres», было запущено как «root». В сервисе была опечатка. Только что исправил это.
3. Поскольку вы изменили порт сервера с порта по умолчанию, вам необходимо указать этот порт, отличный от порта по умолчанию, при запуске psql. (Сообщение об ошибке, которое вы получаете, предполагает, что какой -то экземпляр PostgreSQL запущен на порту по умолчанию, просто не тот экземпляр, который вам нужен, но как он туда попал?)
4. Это имеет смысл. Я собираюсь попробовать как можно скорее.
Ответ №1:
У меня была та же проблема, что и у вас, после установки Postgresql на CentOS с помощью yum. Дело в том, что Postgresql поставляется со встроенным пользователем called postgres
, который вы должны использовать для выполнения первого входа в систему. Итак, просто попробуйте с:
su - postgres
psql
Затем вы можете создавать базы данных, пользователей и так далее.
Надеюсь, это поможет!
Комментарии:
1. Я бы добавил, что до того, как мне нужно было поставить sudo -i, это моя консоль: [ec2-user@ip-172-30-0-245 достойный.master.spec]$ sudo -i [root@ip-172-30-0-245 ~]# su — postgres Последнийвойдите в систему: Пн 10 июля 09:32:50 UTC 2017 на pts / 0 -bash-4.2 $ psql psql (9.6.3) Введите «справка» для получения справки. postgres =#
Ответ №2:
Я думаю, вы уже заметили проблему: для всех операций требуется пользователь «postgres», который является пользователем, настроенным postgresql syetem в качестве администратора базы данных. пользователь root не может этого сделать.
Один из способов, исходя из моего предыдущего опыта: попытка перезапустить службу (перезапуск службы sudo postgresqlxxx). Если что-то не так, процесс перезапуска сообщит об ошибке.
Как я уже сказал, этот пользователь является администратором базы данных, и вы не можете обойти это. Если все это не работает, просто переустановите его, используя «sudo yum install»