Чем объясняются разные инструкции по установке пароля для postgres?

Я слежу за этим сообщением в блоге http://hendrelouw73.wordpress.com/2012/11/14/how-to-install-postgresql-9-1-on-ubuntu-12-10-linux / для установки postgres на Ubuntu. Это шаги два и три.

STEP 2: INSTALL POSTGRESQL ON YOUR SYSTEM


sudo apt-get update
sudo apt-get install postgresql-9.1

STEP 3: CONFIGURE YOUR POSTGRESQL PASSWORD

sudo -u postgres psql template1
ALTER USER postgres with encrypted password 'your_password';

Однако, я также смотрю на RailsCast, который устанавливает postgres на Ubuntu. Во-первых, Райан Бейтс делает это

root@li349-144:~# apt-get install postgresql libpq-dev

, а затем устанавливает пароль, подобный этому корню @ li349-144: ~ # sudo -u postgres psql

terminal
postgres=# \password
Enter new password: 
Enter it again:

Итак, одно большое отличие в том, как сконфигурирован пароль, в том, что Railscast не затрагивает что-то под названием template, описанное в шаге 3 блога

Рассматривая инструкции по установке postgres на ubuntu https: // help. ubuntu.com/community/PostgreSQL, он похож на Railscasts в том, что у него нет этой ссылки на template для создания пользователя

Можете ли вы объяснить разницу и нужно ли мне сделать этот шаг? ШАГ 3: НАСТРОЙТЕ ПАРОЛЬ POSTGRESQL

sudo -u postgres psql template1
ALTER USER postgres with encrypted password 'your_password';
1
задан 5 February 2018 в 10:56

2 ответа

Нет реальной разницы между этими двумя методами. Роли пользователя / логина и пароли хранятся на всем сервере, а не на всей базе данных. Другими словами, пароль предназначен для подключения к серверу, поэтому не имеет значения, к какой базе данных вы подключаетесь. Команда

sudo -u postgres psql template1 (спасибо Daniel Vérité за комментарий)

фактически говорит системе переключиться на пользовательские postgres и запустить клиент CLI (psql) подключиться к серверу и использовать базу данных «template1». Если имя пользователя и / или базы данных не указано, то psql пытается подключиться как текущий пользователь и «использовать» базу данных с тем же именем, что и текущий пользователь (в данном случае postgres - что делает параметр «template» излишним)

Это то, что вышеуказанная команда делает шаг за шагом:

sudo -u postgres Это переключает пользователя postgres. Обратите внимание на отсутствие параметра -p в sudo. Это важно, потому что «пользователь user postgres» (у которого нет пароля, и его единственная цель - владеть запущенными процессами сервера) отличается от «пользователя базы данных postgres» (который является пользователем root или, скорее, администратором базы данных и абсолютно нужен пароль.)

psql --username=postgres --database=template1 Это соединяется с localhost, используя имя пользователя базы данных postgres и шаблон базы данных1.

Для вашей цели эта строка может быть сокращена до

sudo -u postgres psql

ALTER USER postgres with encrypted password 'your_password';

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

Если вам нужны дополнительные разъяснения, пожалуйста, спросите. Я буду рад помочь.

Краткое примечание по шаблонным базам данных . При создании новой базы данных postgres использует шаблон с именем template1. Это что-то вроде файла скелета, используемого для установки пользовательских настроек по умолчанию при создании учетных записей пользователей в Linux. Как правило, dba изменяет его, чтобы убедиться, что определенные инструменты и поведение применяются на всем сервере. Но почему 1 вы можете спросить. Ну, есть еще одна база данных шаблонов с именем template0, и это защищенная «чистая копия» копии template1 на тот случай, если с ней что-то пойдет на юг. Здесь - вики-страница, описывающая такой сценарий.

0
ответ дан 5 February 2018 в 10:56

Не делайте этого..

terminal
postgres=# \password
Enter new password: 
Enter it again:

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

Конфигурирование PostgreSQL

Это - копия моего исходного сообщения здесь

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

  1. Используя createuser и createdb,

    $ sudo -u postgres createuser -s $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

Заметка на полях: postgres пользователь

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

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

Другие вопросы по тегам:

Похожие вопросы: