Меню

Psql ошибка важно роль root не существует

причины проблемы

Postgresql не может использовать пользователя root для запуска службы, поэтому вы должны переключиться на другого пользователя, чтобы запустить обычную службу, но иногда нам нужно использовать пользователя root для использования postgresql

Решение

метод первый

Не используйте postgresql как пользователь root без необходимости

Метод второй

Вручную создайте корневую роль, здесь я использую имя пользователя postgres для запуска службы postgresql

su postgres
# Создать пользователя root
postgres=#create user root with password 'password';    
CREATE ROLE

 # Предоставить права доступа к базе данных пользователю root
postgres=# GRANT ALL PRIVILEGES ON DATABASE mydatabase to root;
GRANT

 # Измените пользователя на суперпользователя (см. Фактические потребности)
postgres=# ALTER ROLE root WITH SUPERUSER;

postgres=# q

Вы также можете напрямую создать root как суперпользователь, вход в систему означает разрешение входа в систему

CREATE ROLE root superuser PASSWORD 'password' login;

ВНИМАНИЕ ! ! ! Если мы работаем от root пользователя, то мы не сможем подключиться к СУБД PostgreSQL. Мы получим ошибку вида.

psql: ошибка: подключиться к серверу через сокет "/var/run/postgresql/.s.PGSQL.5432" не удалось: ВАЖНО: роль "root" не существует

PostgreSQL - роль root не существует

PostgreSQL — роль root не существует

Нам нужно изменить пользователя в терминале Debian. Меняем root на кого? После установки PostgreSQL в систему, вместе с ней устанавливается и новый пользователь. Его зовут postgres. По умолчанию он не имеет пароля для входа.

Команда смены пользователя root на postgres в Debian:

su - postgres

Обратите внимание на терминальную оболочку. В ней изменилась запись пользователя:

Сменили пользователя root на postgres в Debian

Сменили пользователя root на postgres в Debian

Теперь мы сможем работать с утилитой psql. Подключаемся к СУБД при помощи утилиты:

psql

Нам возвращаются версии ПО.

Вызвали psql от имени postgres в Debian

Вызвали psql от имени postgres в Debian

Обратите внимание на самую низкую запись:

postgres=#

Она говорит о том, что теперь мы находимся в самом интерфейсе СУБД PostgreSQL. Ещё она говорит о том, что мы сразу подключились к базе данных, которая тоже называется postgres. Есть пользователь postgres, а есть база данных postgres. Оба они устанавливаются по умолчанию. Не путайте! С этого момент мы можем начать вводить команды.

Во внутреннем интерфейсе вводим мета-команду:

du
или
dg

Вы получите список доступных пользователей в системе PostgreSQL. Вам будут известны их атрибуты ролей и список групп ролей, членами которых они являются.

Вызвали команду du в интерфейсе СУБД PostgreSQL в Debian

Вызвали команду du в интерфейсе СУБД PostgreSQL в Debian

В нашем случае есть только один пользователь. Это тот самый postgres, от имени которого мы подключились к СУБД.

Справка

Метакоманды — это всё, что вводится в psql не взятое в кавычки и начинающееся с обратной косой черты, является метакомандой psql и обрабатывается самим psql. Эти команды делают psql полезным для задач администрирования и разработки скриптов.

Формат команды psql следующий: обратная косая черта, сразу за ней команда, затем аргументы. Аргументы отделяются от команды и друг от друга любым количеством пробелов.

Чтобы выйти нужно использовать клавишу с буквой Q.

Информационные ссылки

Список команд программы PSQL — https://postgrespro.ru/docs/postgresql/14/app-psql

Официальный сайт PostgreSQL — https://www.postgresql.org

Графический веб-интерфейс для управления СУБД PostgreSQL — https://www.pgadmin.org

Вопрос:

Я создаю команду bash в PHP скрипт. Встроенная команда такова:

su postgres -c "for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" demodoo` ;do  psql -c "alter table $tbl owner to postgres" demodoo ;done "

Когда я пытаюсь запустить эту команду в оболочке, я получаю эту ошибку:

 psql: FATAL:  role "root" does not exist

Почему это происходит, тогда как я выполняю команду под пользователем postgres?

Спасибо
Cheers,

ИЗМЕНИТЬ
Я меняю команду на

sudo -u postgres for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" demodoo` ;do  psql -c "alter table $tbl owner to postgres" demodoo ;done

но теперь я получаю еще одну ошибку, которая не может понять происхождение:

-bash: syntax error near unexpected token `do'

Ответ №1

попробовать:

sudo -u postgres psql

> CREATE USER root WITH SUPERUSER;

Ответ №2

Я хочу, чтобы он работал, сохраняя содержимое команды

for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" demodoo` ;do  psql -c "alter table $tbl owner to postgres" demodoo ;done

в файле myfile.sh, затем вызовите файл следующим образом:

sudo -u postgres /bin/bash myfile.sh

Спасибо за помощь

This article is half-done without your Comment! *** Please share your thoughts via Comment ***

A PostgreSQL Fatal error like role or username does not exist. This is a very common error which is facing by PostgreSQL Users.

Actually, this is happening because of misconfiguration of System username and Database Username.

Most of the Linux users are trying to log in PostgreSQL using root user. But actually, this is wrong.

You will need to become the operating system user under which PostgreSQL was installed to create the first user account.

Generally, the default user name is Postgres and default database is also Postgres.
Once you install PostgreSQL on Linux, you should set the password for the Postgres user which is the default super user of PostgreSQL.

Please do not try to log in with any other default Linux or Unix system user name.

Set password for the default Postgres user:

Create another role using “postgres”:
Creating new role “dbrnd”. -p = set the password and -d = allow to create database.

sudo -u postgres createuser dbrnd -d -P

PostgreSQL: How to Install PostgreSQL 9.4 on Ubuntu 14.04?

PostgreSQL: How to Install PostgreSQL 9.6 on Ubuntu 16.04?

Jan 23, 2017

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Psp vita ошибка c1 6775 5
  • Psn произошла ошибка 80023102