Как настроить postgresql в первый раз?
Я только что установил postgresql, и я указал пароль x во время установки.
Когда я пытаюсь сделать createdb
и указать любой пароль, я получаю сообщение:
createdb: не удалось подключиться к postgres базы данных: FATAL: аутентификация пароля для пользователя
То же самое для createuser
.
Как мне начать?
Могу ли я добавить себя в качестве пользователя в базу данных?
Ответы
Ответ 1
Другие ответы не полностью удовлетворяли меня. Вот что работало для 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>
должен работать.
Ответ 2
В 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
.
Ответ 3
Это мое решение:
su root
su postgres
psql
Ответ 4
Есть два метода, которые вы можете использовать. Оба требуют создания пользовательских и базы данных.
Использование createuser и createb,
$ sudo -u postgres createuser --superuser $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
Sidenote: пользователь postgres
Я предлагаю НЕ изменять пользователя postgres
.
- Обычно он заблокирован от ОС. Никто не должен "входить" в операционную систему как
postgres
. Вы должны иметь root для аутентификации как postgres
.
- Обычно он не защищен паролем и делегируется операционной системе хоста. Это хорошая вещь. Обычно это означает, что для входа в систему как
postgres
, который является эквивалентом PostgreSQL для SQL Server SA
, необходимо иметь доступ на запись к базовым файлам данных. И это означает, что вы все равно можете разрушить хаос.
- Если этот параметр отключен, вы устраняете риск атаки методом грубой силы через именованного суперпользователя. Сокрытие и скрытие имени суперпользователя имеет свои преимущества.
Ответ 5
ОБНОВЛЕНИЕ: Предупреждение: Пожалуйста, прочитайте ответ, опубликованный Эван Кэрролл. Похоже, это решение небезопасно и не рекомендуется.
Это сработало для меня в стандартной установке Ubuntu 14.04 64 бита.
Я следовал инструкциям с небольшими изменениями, которые я нашел в http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html
-
Установите postgreSQL (если он еще не установлен на вашем компьютере):
sudo apt-get install postgresql
- Запустите psql, используя пользователя postgres
sudo –u postgres psql postgres
- Установите новый пароль для пользователя postgres:
\password postgres
- Выход из psql
\q
- Отредактируйте /etc/postgresql/9.3/main/pg_hba.conf и измените:
#Database administrative login by Unix domain socket
local all postgres peer
Кому:
#Database administrative login by Unix domain socket
local all postgres md5
- Перезапустите postgreSQL:
sudo service postgresql restart
- Создать новую базу данных
sudo –u postgres createdb mytestdb
- Запустите psql снова с пользователем postgres:
psql –U postgres –W
- Перечислите существующие базы данных (ваша новая база данных должна быть там сейчас):
\l
Ответ 6
Вероятно, вам необходимо обновить файл pg_hba.conf
. Этот файл управляет тем, что пользователи могут входить в систему с IP-адресов. Я думаю, что пользователь postgres по умолчанию заблокирован.
Ответ 7
Если вы используете macOS, как я, у вас может не быть пользователя postgres.
При попытке запустить sudo -u postgres psql
я получил ошибку sudo: unknown user: postgres
К счастью, есть исполняемые файлы, которые предоставляет postgres.
createuser -D /var/postgres/var-10-local --superuser --username=nick
createdb --owner=nick
Тогда я смог получить доступ к psql
без проблем.
psql
psql (10.2)
Type "help" for help.
nick=#
Если вы создаете новый экземпляр postgres с нуля, вот шаги, которые я предпринял. Я использовал порт не по умолчанию, чтобы запустить два экземпляра.
mkdir /var/postgres/var-10-local
pg_ctl init -D /var/postgres/var-10-local
Затем я отредактировал /var/postgres/var-10-local/postgresql.conf
с моим предпочтительным портом, 5433.
/Applications/Postgres.app/Contents/Versions/10/bin/postgres -D /Users/nick/Library/Application\ Support/Postgres/var-10-local -p 5433
createuser -D /var/postgres/var-10-local --superuser --username=nick --port=5433
createdb --owner=nick --port=5433
Готово!
Ответ 8
Note: textdb is the database which you are going to explore with 'alex' user
[email protected]:~# sudo su - postgres
postgres=# psql
postgres=# create database testdb;
postgres=# create user alex with password 'alex';
postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb TO alex;'enter code here'
Ответ 9
Просто перейдите к каталогу установки и выполните этот файл "pg_env.bat", поэтому перейдите в папку bin и выполните pgAdmin.exe. Это не должно сомневаться!