Я щойно встановив postgres 8.4 на Ubuntu 9.10, і він ніколи не просив мене створити суперпользователя. Чи є суперпользователь за замовчуванням та його пароль? Якщо ні, то як створити нову?
Я щойно встановив postgres 8.4 на Ubuntu 9.10, і він ніколи не просив мене створити суперпользователя. Чи є суперпользователь за замовчуванням та його пароль? Якщо ні, то як створити нову?
Відповіді:
ПОПЕРЕДЖЕННЯ Відповідь про зміну пароля 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:
При виконанні команди «Psql» як користувач UNIX (так звані IDENT / аутентифікації PEER), наприклад: sudo -u postgres psql
. Зауважте, що sudo -u
НЕ розблоковує користувача UNIX.
через TCP / IP-з'єднання з використанням власного керованого імені користувача / пароля PostgreSQL (так звана автентифікація TCP) (тобто НЕ пароль UNIX).
Тому ви ніколи не хочете встановлювати пароль для облікового запису UNIX "postgres". Залиште його заблокованим як за замовчуванням.
Звичайно, все може змінитися, якщо ви налаштуєте його інакше, ніж налаштування за замовчуванням. Наприклад, можна синхронізувати пароль PostgreSQL з паролем UNIX і дозволяти лише локальні входи. Це виходило б за межі цього питання.
/etc/shadow
там зберігається пароль @lzap.
Введіть у командному рядку:
$ sudo -u postgres psql postgres
postgres=# \password postgres
Ви побачите:
Enter new password:
Enter it again:
Ви керуєте postgres користувачем postgres
так:
# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;
su
на користувача postgres, не вводячи пароль. У більшості систем обліковий запис Postgres Unix заблоковано (не працюватиме пароль), а це означає, що до цього облікового запису може бути лише root su
.
sudo
замість su
.
sudo su - postgres
: \
sudo -u postgres
.
У Windows виконайте наступне (ВАЖЛИВО: Використовуйте обліковий запис адміністратора Windows ):
Після встановлення відкрийте <PostgreSQL PATH>\data\pg_hba.conf
.
Змініть ці два рядки та змініть "md5" на "довіра":
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Перезапустіть службу PostgreSQL (можливо, це не буде потрібно).
(Необов’язково) Відкрийте командний рядок та змініть кодову сторінку на 1252:
cmd.exe /c chcp 1252
Увійдіть до PostgreSQL. Потрібен не пароль (зверніть увагу на верхній регістр -U параметр):
psql -U postgres
(Необов’язково, рекомендується з міркувань безпеки) Змініть postgres
пароль користувача:
\password postgres
і змінити "довіру" назад до "md5" в pg_hba.conf
.
Якщо ви намагаєтеся отримати доступ до оболонки PostgreSQL, ви можете ввести:
psql -U postgres my_database
Де my_database
ваше ім'я бази даних.