Я только что установил Postgres 8.4 на Ubuntu 9.10, и он никогда не просил меня создать суперпользователя. Есть ли суперпользователь по умолчанию и его пароль? Если нет, то как мне создать новый?
Я только что установил 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 и разрешить только локальный вход. Это было бы за рамками этого вопроса.
/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 заблокирована (пароль не будет работать), что означает, что толькоsu
учетная запись root может работать с этой учетной записью.
sudo
вместо su
.
sudo su - postgres
: \
sudo -u postgres
.
В 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
и измените «доверие» обратно на «md5» в pg_hba.conf
.
Если вы пытаетесь получить доступ к оболочке PostgreSQL, вы можете набрать:
psql -U postgres my_database
Где my_database
ваше имя базы данных.