Яке ім'я користувача / пароль суперпользователя за замовчуванням для postgres після нової установки?


380

Я щойно встановив postgres 8.4 на Ubuntu 9.10, і він ніколи не просив мене створити суперпользователя. Чи є суперпользователь за замовчуванням та його пароль? Якщо ні, то як створити нову?


Відповіді:


533

ПОПЕРЕДЖЕННЯ Відповідь про зміну пароля UNIX на "postgres" через "$ sudo passwd postgres" не є бажаною, і навіть може бути небезпечною !

Ось чому: За замовчуванням обліковий запис UNIX "postgres" заблоковано, а це означає, що він не може входити в систему за допомогою пароля. Якщо ви використовуєте "sudo passwd postgres", рахунок негайно розблокується. Гірше, якщо ви встановите пароль на щось слабке, наприклад, "postgres", то ви піддаєтесь великій небезпеці для безпеки. Наприклад, є декілька ботів, які намагаються увійти до вашої системи UNIX з комбінацією імені користувача / паролем "postgres / postgres".

Що ви повинні зробити, це слідувати відповіді Кріса Джеймса :

sudo -u postgres psql postgres

# \password postgres

Enter new password: 

Щоб це трохи пояснити. Зазвичай існує два способи входу на сервер PostgreSQL:

  1. При виконанні команди «Psql» як користувач UNIX (так звані IDENT / аутентифікації PEER), наприклад: sudo -u postgres psql. Зауважте, що sudo -uНЕ розблоковує користувача UNIX.

  2. через TCP / IP-з'єднання з використанням власного керованого імені користувача / пароля PostgreSQL (так звана автентифікація TCP) (тобто НЕ пароль UNIX).

Тому ви ніколи не хочете встановлювати пароль для облікового запису UNIX "postgres". Залиште його заблокованим як за замовчуванням.

Звичайно, все може змінитися, якщо ви налаштуєте його інакше, ніж налаштування за замовчуванням. Наприклад, можна синхронізувати пароль PostgreSQL з паролем UNIX і дозволяти лише локальні входи. Це виходило б за межі цього питання.


11
Отже, як заблокувати повідомлення користувача назад?
ultrajohn

3
@ultrajohn - залежить від використовуваного вами розповсюдження, але ви можете відредагувати / etc / passwd і поставити * замість пароля
lzap

3
/etc/shadowтам зберігається пароль @lzap.
Gringo Suave

2
Ви можете встановити / sbin / nologin в / etc / passwd або поставити * замість пароля в / etc / shadow.
lzap

34
passwd --lock postgres
Stéphane

166

Введіть у командному рядку:

$ sudo -u postgres psql postgres
postgres=# \password postgres

Ви побачите:

Enter new password: 
Enter it again:

7
Це те, що потрібно для використання такого інструменту, як pgadminIII (під час налаштування профілю сервера) відразу після встановлення самого Postgres. Дякую!
ліміст

64

Ви керуєте postgres користувачем postgresтак:

# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;

5
@ThierryLam Ви повинні мати права suна користувача postgres, не вводячи пароль. У більшості систем обліковий запис Postgres Unix заблоковано (не працюватиме пароль), а це означає, що до цього облікового запису може бути лише root su.
voretaq7

2
Використовуйте sudoзамість su.
reinierpost

8
Мені довелося бігати sudo su - postgres: \
Джим Шуберт

3
@Jim Schubert: ти також можеш бігати sudo -u postgres.
reinierpost

1
sudo -u postgres psql - також працює, так що ви можете зробити це в один крок.
Омін

21

У Windows виконайте наступне (ВАЖЛИВО: Використовуйте обліковий запис адміністратора Windows ):

  1. Після встановлення відкрийте <PostgreSQL PATH>\data\pg_hba.conf.

  2. Змініть ці два рядки та змініть "md5" на "довіра":

    host all all 127.0.0.1/32 md5

    host all all ::1/128 md5

  3. Перезапустіть службу PostgreSQL (можливо, це не буде потрібно).

  4. (Необов’язково) Відкрийте командний рядок та змініть кодову сторінку на 1252:

    cmd.exe /c chcp 1252

  5. Увійдіть до PostgreSQL. Потрібен не пароль (зверніть увагу на верхній регістр -U параметр):

    psql -U postgres

  6. (Необов’язково, рекомендується з міркувань безпеки) Змініть postgresпароль користувача:

    \password postgres

    і змінити "довіру" назад до "md5" в pg_hba.conf.


5

Якщо ви намагаєтеся отримати доступ до оболонки PostgreSQL, ви можете ввести:

psql -U postgres my_database

Де my_databaseваше ім'я бази даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.