Я только что установил postgres 8.4 на Ubuntu 9.10, и меня никогда не просили создать суперпользователя. Есть ли по умолчанию суперпользователь и его пароль? Если нет, как мне создать новый?
ВНИМАНИЕ Ответ об изменении пароля 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:
Запустив команду "psql" от имени пользователя UNIX (так называемая аутентификация IDENT / PEER), например: sudo -u postgres psql
. Обратите внимание, что sudo -u
НЕ разблокирует пользователя UNIX.
по TCP / IP-соединению с использованием собственного управляемого имени пользователя / пароля PostgreSQL (так называемая TCP-аутентификация) (т. е. НЕ пароль UNIX).
Так что вы никогда хотите установить пароль для учетной записи UNIX "postgres". Оставьте его заблокированным по умолчанию.
Конечно, все может измениться, если вы настроите его иначе, чем по умолчанию. Например, можно синхронизировать пароль PostgreSQL с паролем UNIX и разрешить только локальный вход. Это выходит за рамки этого вопроса.
Введите в командной строке:
$ 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;
В Windows сделайте следующее (ВАЖНО: используйте Windows администратор учетная запись):
После установки откройте <PostgreSQL PATH>\data\pg_hba.conf
.
Измените эти две строки и замените «md5» на «trust»:
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
и измените "trust" обратно на "md5" в pg_hba.conf
.
Если вы пытаетесь получить доступ к оболочке PostgreSQL, вы можете ввести:
psql -U postgres my_database
куда my_database
имя вашей базы данных.