Как войти в систему и пройти аутентификацию в Postgresql после новой установки? - PullRequest
56 голосов
/ 31 января 2010

Сделал новую установку Postgres 8.4 на Mint Ubuntu. Как мне создать пользователя для postgres и войти в систему с помощью psql?

Когда я набираю psql, он просто говорит мне

psql: FATAL: Ident authentication failed for user "my-ubuntu-username"

Ответы [ 5 ]

86 голосов
/ 31 января 2010

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

По умолчанию psql подключается к базе данных с тем же именем, что и пользователь. Таким образом, существует соглашение, согласно которому «база данных пользователей» . И нет никаких причин нарушать это соглашение, если вашему пользователю нужна только одна база данных. Мы будем использовать mydatabase в качестве примера базы данных.

  1. Используя createuser и createb , мы можем явно указать имя базы данных,

    $ sudo -u postgres createuser -s $USER
    $ createdb mydatabase
    $ psql -d mydatabase
    

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

    $ sudo -u postgres createuser -s $USER
    $ createdb
    $ psql
    
  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 для SA SQL Server, необходимо иметь доступ на запись к базовым файлам данных. И это означает, что вы все равно можете разрушить хаос.
  3. Если этот параметр отключен, вы устраняете риск атаки методом грубой силы через именованного суперпользователя. Сокрытие и скрытие имени суперпользователя имеет преимущества.
34 голосов
/ 31 января 2010

по умолчанию вам нужно использовать пользователя postgres:

sudo -u postgres psql postgres
14 голосов
/ 31 января 2010

Ошибка, которую вы получаете, заключается в том, что ваше-ubuntu-username не является действительным пользователем Postgres.

Вы должны указать psql, какое имя пользователя базы данных использовать

psql -U postgres

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

psql -U postgres -d <dbname>
5 голосов
/ 27 июля 2014

Вы также можете подключиться к базе данных как «обычный» пользователь (не postgres):

postgres=# \connect opensim Opensim_Tester localhost;

Password for user Opensim_Tester:    

You are now connected to database "opensim" as user "Opensim_Tester" on host "localhost" at port "5432"
3 голосов
/ 08 апреля 2011

Если ваш клиент базы данных соединяется с TCP / IP, и вы настроили auth auth в вашем файле pg_hba.conf, убедитесь, что у вас установлен и работает Это обязательно, даже если у вас есть только локальные клиенты, подключающиеся к «localhost».

Также имейте в виду, что в настоящее время для идентификации можно использовать IPv6 , чтобы Postgresql мог принимать клиентов, подключающихся к локальному хосту.

...