Я только что установил postgresql, и я указал пароль x во время установки.
Когда я пытаюсь сделать createdb
и указать любой пароль, я получаю сообщение:
createdb: не удалось подключиться к postgres базы данных: FATAL: аутентификация пароля для пользователя
То же самое для createuser
.
Как мне начать? Могу ли я добавить себя в качестве пользователя в базу данных?
Другие ответы не полностью удовлетворяли меня. Вот что работало для postgresql-9.1 на Xubuntu 12.04.1 LTS.
Подключитесь к базе данных по умолчанию с помощью postgres пользователя:
sudo -u postgres psql template1
Задайте пароль для пользовательских postgres, затем выйдите из psql (Ctrl-D):
ПОЛЬЗОВАТЕЛИ postgres с зашифрованным паролем 'xxxxxxx';
Отредактируйте файл pg_hba.conf
:
sudo vim/etc/postgresql/9.1/main/pg_hba.conf
И измените "peer" на "md5" в строке относительно postgres:
локальный все Postgres <удаp > равныйудар > md5
Перезагрузите базу данных:
sudo/etc/init.d/postgresql restart
(Здесь вы можете проверить его работу с psql -U postgres
.)
Создайте пользователя с тем же именем, что и вы (чтобы найти его, вы можете ввести whoami
):
createuser -U postgres -d -e -E -l -P -r -s
<my_name>
Параметры говорят postgresql о создании пользователя, который может войти в систему, создавать базы данных, создавать новые роли, является суперпользователем и будет иметь зашифрованный пароль. Действительно важными являются -P -E, поэтому вас попросят ввести пароль, который будет зашифрован, и -d, чтобы вы могли сделать createdb
.
Остерегайтесь паролей. Сначала он дважды запрашивает у вас новый пароль (для нового пользователя), а затем после пароля postgres (тот, который указан на шаге 2).
Снова отредактируйте файл pg_hba.conf
(см. шаг 3 выше) и измените "peer" на "md5" в строке, касающейся "всех" других пользователей:
локальный все все <удаp > равногоудар > md5
Перезагрузите (как на шаге 4) и убедитесь, что вы можете войти в систему без -U postgres:
psql template1
Обратите внимание, что если вы делаете простой psql
, он будет терпеть неудачу, так как он попытается подключить вас к базе данных по умолчанию, имеющей то же имя, что и вы (т.е. whoami
). template1 - это база данных admin, которая находится здесь с самого начала.
Теперь createdb <dbname>
должен работать.
В Linux PostgresQL обычно настраивается так, чтобы позволить пользователю root войти в качестве суперпользователя postgres postgres
из оболочки (консоли или ssh).
$ psql -U postgres
Затем вы просто создадите новую базу данных, как обычно:
CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;
Это должно работать, не касаясь pg_hba.conf
. Если вы хотите, чтобы это можно было использовать с помощью какого-либо инструмента GUI через сеть, тогда вам нужно будет возиться с pg_hba.conf
.
psql: FATAL: Peer authentication failed for user "postgres"
даже с sudo.
Это мое решение:
su root
su postgres
psql
sudo bash
.
Это работало для меня в стандартной установке Ubuntu 14.04 64 бит.
Я выполнил инструкции с небольшими изменениями, которые я нашел в http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html
sudo apt-get install postgresql
sudo –u postgres psql postgres
\password postgres
\q
#Database administrative login by Unix domain socket
local all postgres peer
To:
#Database administrative login by Unix domain socket
local all postgres md5
sudo service postgresql restart
sudo –u postgres createdb mytestdb
psql –U postgres –W
\l
postgres
плохой идеей. stackoverflow.com/a/41604969/124486
Есть два метода, которые вы можете использовать. Оба требуют создания базы данных и пользователя.
Использование createuser и createdb,
$ sudo -u postgres createuser -s $USER
$ createdb mydatabase
$ psql -d mydatabase
Использование команд администрирования SQL и подключение с паролем через TCP
$ sudo -u postgres psql postgres
И затем в оболочке psql
CREATE ROLE myuser LOGIN PASSWORD 'mypass';
CREATE DATABASE mydatabase WITH OWNER = myuser;
Затем вы можете войти в систему,
$ psql -h localhost -d mydatabase -U myuser -p <port>
Если вы не знаете порт, вы всегда можете получить его, запустив в качестве пользователя postgres
следующее:
SHOW port;
Или
$ grep "port =" /etc/postgresql/*/main/postgresql.conf
postgres
Я предлагаю НЕ модифицировать пользователя postgres
.
postgres
. У вас должен быть root, чтобы получить аутентификацию как postgres
.postgres
, который является эквивалентом PostgreSQL SQL Server SA
, вы должны иметь доступ на запись к базовым файлам данных. И это означает, что в любом случае вы могли бы повредить хаос.sudo -u postgres createuser -U postgres -d -e -E -l -P -r -s $(whoami)
-s
делает пользователя суперпользователем.
Вероятно, вам необходимо обновить файл pg_hba.conf
. Этот файл управляет тем, что пользователи могут входить в систему с IP-адресов. Я думаю, что пользователь postgres по умолчанию заблокирован.
/var/lib/pgsql/data/pg_hba.conf
. Измените ident
на trust
для host
(и local
если вы используете SSH).
Просто перейдите к каталогу установки и выполните этот файл "pg_env.bat", поэтому перейдите в папку bin и выполните pgAdmin.exe. Это не должно сомневаться!
postgres
. ЭтоSU
PostgreSQL, и он открывает вас для атак против входа в систему. Создайте другого суперпользователя и зарезервируйте заблокированныеpostgres
для администраторов UNIX с правами root.