У меня проблемы с использованием PostgreSQL. Недавно я установил эту версию (13+223.pgdg20.04+1) пакета postgresql в Ubuntu 20.04.
Я пытаюсь запустить команду psql
, но получаю следующую ошибку:
psql: ошибка: FATAL: роль "my_username" не существует
Я попытался создать нового пользователя с помощью createuser me
, но получаю следующую ошибку:
createuser: ошибка: не удалось подключиться к базе данных template1: FATAL: роль «my_username» не существует
Я также пытался заставить пользователя postgres использовать createuser me --username=postgres
, но получаю следующую ошибку:
createuser: ошибка: не удалось подключиться к базе данных template1: FATAL: Ошибка одноранговой аутентификации для пользователя «postgres»
Как мне решить эти проблемы, чтобы использовать PostgreSQL локально на моем компьютере без этих проблем?
PD: Я переустановил postgres и теперь получаю другую ошибку при выполнении psql
:
psql: ошибка: не удалось подключиться к серверу: нет такого файла или каталога Сервер работает локально и принимает соединения в сокете домена Unix "/var/run/postgresql/.s.PGSQL.5432"?
Вам нужно указать имя пользователя в команде psql
, используя опцию -U.
psql -U postgres
Postgresql
поставляется с предопределенной ролью суперпользователя под названием postgres
. Если вы хотите создать больше ролей, вам сначала нужно подключиться в качестве этой начальной роли.
Одноранговая аутентификация означает (есть расширенные возможности, но они не будут использоваться по умолчанию, в то время как простой метод используется по умолчанию для apt-установленного PostgreSQL), что вы должны быть пользователем ОС «postgres», чтобы подключиться как пользователь базы данных «постгрес». Итак, вы бы сделали:
sudo -u postgres createuser me
Вам не нужно указывать --username=postgres
, так как это поведение по умолчанию в любом случае, когда вы используете sudo -u postgres
Кроме того, вы можете изменить свой pg_hba.conf, чтобы использовать другой метод аутентификации, отличный от однорангового, если хотите.
Я не уверен, почему у меня была плохая установка, но я полностью удалил postgres после этого поста:
https://kb.objectrocket.com/postgresql/how-to-completely-uninstall-postgresql-757
после этого я перезагрузил свой компьютер и снова установил posgres, следуя инструкциям в:
https://www.postgresql.org/download/linux/ubuntu/
и теперь вроде работает без проблем
первая проверка пользователя postgres существует:
$ идентификатор постгреса
Затем:
$su — постгрес
Пароль:
$ psql psql (15.1 (Debian 15.1-1.pgdg110+1)) Введите "помощь" для помощи.
Если пароль для пользователя postgres неизвестен, измените его: $su — постгрес
Пароль: su: Ошибка аутентификации
$ sudo пароль postgres
Новый пароль:
Введите повторно новый пароль:
passwd: пароль успешно обновлен
Наконец снова:
$su — постгрес
Пароль:
$ psql
psql (15.1 (Debian 15.1-1.pgdg110+1)) Введите "помощь" для помощи.
Это не сработало, но я переустановил postgre (у меня было 2 версии, я удалил обе и установил последнюю версию), и теперь команда «psql» показывает другую ошибку: psql: ошибка: не удалось подключиться к серверу: Нет такой файл или каталог Сервер работает локально и принимает соединения через сокет домена Unix "/var/run/postgresql/.s.PGSQL.5432"?