Как настроить postgresql в первый раз?

Я только что установил postgresql, и я указал пароль x во время установки. Когда я пытаюсь сделать createdb и указать любой пароль, я получаю сообщение:

createdb: не удалось подключиться к postgres базы данных: FATAL: аутентификация пароля для пользователя

То же самое для createuser.

Как мне начать? Могу ли я добавить себя в качестве пользователя в базу данных?

Ответ 1

Другие ответы не полностью удовлетворяли меня. Вот что работало для postgresql-9.1 на Xubuntu 12.04.1 LTS.

  • Подключитесь к базе данных по умолчанию с помощью postgres пользователя:

    sudo -u postgres psql template1

  • Задайте пароль для пользовательских postgres, затем выйдите из psql (Ctrl-D):

    ПОЛЬЗОВАТЕЛИ postgres с зашифрованным паролем 'xxxxxxx';

  • Отредактируйте файл pg_hba.conf:

    sudo vim/etc/postgresql/9.1/main/pg_hba.conf

    И измените "peer" на "md5" в строке относительно postgres:

    локальный       все     Postgres     <удаp > равныйудар > md5

  • Перезагрузите базу данных:

    sudo/etc/init.d/postgresql restart

    (Здесь вы можете проверить его работу с psql -U postgres.)

  • Создайте пользователя с тем же именем, что и вы (чтобы найти его, вы можете ввести whoami):

    createuser -U postgres -d -e -E -l -P -r -s <my_name>

    Параметры говорят postgresql о создании пользователя, который может войти в систему, создавать базы данных, создавать новые роли, является суперпользователем и будет иметь зашифрованный пароль. Действительно важными являются -P -E, поэтому вас попросят ввести пароль, который будет зашифрован, и -d, чтобы вы могли сделать createdb.

    Остерегайтесь паролей. Сначала он дважды запрашивает у вас новый пароль (для нового пользователя), а затем после пароля postgres (тот, который указан на шаге 2).

  • Снова отредактируйте файл pg_hba.conf (см. шаг 3 выше) и измените "peer" на "md5" в строке, касающейся "всех" других пользователей:

    локальный       все     все     <удаp > равногоудар > md5

  • Перезагрузите (как на шаге 4) и убедитесь, что вы можете войти в систему без -U postgres:

    psql template1

    Обратите внимание, что если вы делаете простой psql, он будет терпеть неудачу, так как он попытается подключить вас к базе данных по умолчанию, имеющей то же имя, что и вы (т.е. whoami). template1 - это база данных admin, которая находится здесь с самого начала.

  • Теперь createdb <dbname> должен работать.

Ответ 2

В Linux PostgresQL обычно настраивается так, чтобы позволить пользователю root войти в качестве суперпользователя postgres postgres из оболочки (консоли или ssh).

$ psql -U postgres

Затем вы просто создадите новую базу данных, как обычно:

CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;

Это должно работать, не касаясь pg_hba.conf. Если вы хотите, чтобы это можно было использовать с помощью какого-либо инструмента GUI через сеть, тогда вам нужно будет возиться с pg_hba.conf.

Ответ 3

Это мое решение:

su root
su postgres
psql

Ответ 4

Есть два метода, которые вы можете использовать. Оба требуют создания пользовательских и базы данных.

  1. Использование createuser и createb,

    $ sudo -u postgres createuser --superuser $USER
    $ createdb mydatabase
    $ psql -d mydatabase
    
  2. Использование команд администрирования SQL и подключение по паролю через TCP

    $ sudo -u postgres psql postgres
    

    И затем в оболочке psql

    CREATE ROLE myuser LOGIN PASSWORD 'mypass';
    CREATE DATABASE mydatabase WITH OWNER = myuser;
    

    Тогда вы можете войти,

    $ psql -h localhost -d mydatabase -U myuser -p <port>
    

    Если вы не знаете порт, вы всегда можете получить его, выполнив следующую команду от имени пользователя postgres,

    SHOW port;
    

    Или

    $ grep "port =" /etc/postgresql/*/main/postgresql.conf
    

Sidenote: пользователь postgres

Я предлагаю НЕ изменять пользователя postgres.

  1. Обычно он заблокирован от ОС. Никто не должен "входить" в операционную систему как postgres. Вы должны иметь root для аутентификации как postgres.
  2. Обычно он не защищен паролем и делегируется операционной системе хоста. Это хорошая вещь. Обычно это означает, что для входа в систему как postgres, который является эквивалентом PostgreSQL для SQL Server SA, необходимо иметь доступ на запись к базовым файлам данных. И это означает, что вы все равно можете разрушить хаос.
  3. Если этот параметр отключен, вы устраняете риск атаки методом грубой силы через именованного суперпользователя. Сокрытие и скрытие имени суперпользователя имеет свои преимущества.

Ответ 5

ОБНОВЛЕНИЕ: Предупреждение: Пожалуйста, прочитайте ответ, опубликованный Эван Кэрролл. Похоже, это решение небезопасно и не рекомендуется.

Это сработало для меня в стандартной установке Ubuntu 14.04 64 бита.

Я следовал инструкциям с небольшими изменениями, которые я нашел в http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html

  1. Установите postgreSQL (если он еще не установлен на вашем компьютере):

sudo apt-get install postgresql

  1. Запустите psql, используя пользователя postgres

sudo –u postgres psql postgres

  1. Установите новый пароль для пользователя postgres:

\password postgres

  1. Выход из psql

\q

  1. Отредактируйте /etc/postgresql/9.3/main/pg_hba.conf и измените:

#Database administrative login by Unix domain socket local all postgres peer

Кому:

#Database administrative login by Unix domain socket local all postgres md5

  1. Перезапустите postgreSQL:

sudo service postgresql restart

  1. Создать новую базу данных

sudo –u postgres createdb mytestdb

  1. Запустите psql снова с пользователем postgres:

psql –U postgres –W

  1. Перечислите существующие базы данных (ваша новая база данных должна быть там сейчас):

\l

Ответ 6

Вероятно, вам необходимо обновить файл pg_hba.conf. Этот файл управляет тем, что пользователи могут входить в систему с IP-адресов. Я думаю, что пользователь postgres по умолчанию заблокирован.

Ответ 7

Если вы используете macOS, как я, у вас может не быть пользователя postgres.

При попытке запустить sudo -u postgres psql я получил ошибку sudo: unknown user: postgres

К счастью, есть исполняемые файлы, которые предоставляет postgres.

createuser -D /var/postgres/var-10-local --superuser --username=nick
createdb --owner=nick

Тогда я смог получить доступ к psql без проблем.

psql
psql (10.2)
Type "help" for help.

nick=#

Если вы создаете новый экземпляр postgres с нуля, вот шаги, которые я предпринял. Я использовал порт не по умолчанию, чтобы запустить два экземпляра.

mkdir /var/postgres/var-10-local
pg_ctl init -D /var/postgres/var-10-local

Затем я отредактировал /var/postgres/var-10-local/postgresql.conf с моим предпочтительным портом, 5433.

/Applications/Postgres.app/Contents/Versions/10/bin/postgres -D /Users/nick/Library/Application\ Support/Postgres/var-10-local -p 5433

createuser -D /var/postgres/var-10-local --superuser --username=nick --port=5433
createdb --owner=nick --port=5433

Готово!

Ответ 8

Note: textdb is the database which you are going to explore with 'alex' user 

[email protected]:~# sudo su - postgres 
postgres=#  psql   
postgres=#  create database testdb;
postgres=#  create user alex with password 'alex';
postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb TO alex;'enter code here'

Ответ 9

Просто перейдите к каталогу установки и выполните этот файл "pg_env.bat", поэтому перейдите в папку bin и выполните pgAdmin.exe. Это не должно сомневаться!