Какое имя пользователя / пароль суперпользователя по умолчанию для postgres после новой установки?

380

Я только что установил Postgres 8.4 на Ubuntu 9.10, и он никогда не просил меня создать суперпользователя. Есть ли суперпользователь по умолчанию и его пароль? Если нет, то как мне создать новый?

Тьерри Лам
источник
1
Вероятно, очень актуально - «Я устанавливаю PostgreSQL и не знаю пароля для пользователя postgres» .
Милен А. Радев

Ответы:

534

ВНИМАНИЕ! Ответ об изменении пароля UNIX для «postgres» через «$ sudo passwd postgres» не является предпочтительным и даже может быть ОПАСНЫМ !

Вот почему: по умолчанию учетная запись UNIX «postgres» заблокирована, что означает, что ее нельзя войти в систему с помощью пароля. Если вы используете "sudo passwd postgres", учетная запись немедленно разблокируется. Хуже того, если вы устанавливаете пароль на что-то слабое, например «postgres», то вы подвергаетесь большой угрозе безопасности. Например, есть ряд ботов, пытающихся использовать комбинацию имени пользователя и пароля «postgres / postgres» для входа в систему UNIX.

Что вы должны сделать, это следовать ответу Криса Джеймса :

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 и разрешить только локальный вход. Это было бы за рамками этого вопроса.

user716468
источник
11
Итак, как вы блокируете пользовательские postgres обратно?
Ультра Джон
3
@ultrajohn - зависит от используемого вами дистрибутива, но вы можете отредактировать / etc / passwd и поставить * вместо пароля
lzap
3
/etc/shadowгде хранится пароль @lzap.
Гринго Суаве
2
Правильно, вы можете установить / sbin / nologin в / etc / passwd или поставить * вместо пароля в / etc / shadow.
lzap
34
passwd - блокировка postgres
Стефан
166

Введите в командной строке:

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

Вот увидишь:

Enter new password: 
Enter it again:
dcrawkstar
источник
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 Вы должны быть пользователем root и не suдолжны вводить пароль для пользователя postgres. В большинстве систем учетная запись Postgres Unix заблокирована (пароль не будет работать), что означает, что толькоsu учетная запись root может работать с этой учетной записью.
voretaq7
2
Используйте sudoвместо su.
reinierpost
8
Я должен был бежать sudo su - postgres: \
Джим Шуберт
3
@ Джим Шуберт: ты тоже можешь бежать sudo -u postgres.
reinierpost
1
sudo -u postgres psql - также работает, так что вы можете сделать это за один шаг.
Ominus
21

В Windows выполните следующие действия (ВАЖНО: используйте учетную запись администратора Windows ):

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

  2. Измените эти две строки и измените «md5» на «trust»:

    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ваше имя базы данных.

Марсио Маццукато
источник