Jak skonfigurować postgresql po raz pierwszy?
Właśnie zainstalowałem postgresql i podczas instalacji podałem hasło X.
Kiedy próbuję zrobić createdb
i podać jakieś hasło dostaję komunikat:
Createdb: nie można połączyć się z bazą danych postgres: FATAL: hasło uwierzytelnianie nie powiodło się dla użytkownika
To samo dla createuser
.
10 answers
Inne odpowiedzi nie były dla mnie całkowicie satysfakcjonujące. Oto, co działało dla postgresql-9.1 na Xubuntu 12.04.1 LTS.
-
Połącz się z domyślną bazą danych za pomocą użytkownika postgres:
Sudo-u Postgres PSQL template1
-
Ustaw hasło dla użytkownika postgres, a następnie zakończ psql (Ctrl-D):
Zmiana postgres użytkownika z zaszyfrowanym hasłem 'xxxxxxx';
-
Edytuj plik
pg_hba.conf
:Sudo vim / etc / postgresql/9.1/main / pg_hba.conf
I zmienić "peer" na " md5 " w linii dotyczącej postgres:
Local all postgres
peermd5Aby dowiedzieć się, jakiej wersji postgresql używasz, poszukaj folderu Wersja W
/etc/postgresql
. Możesz również użyć Nano lub innego edytora zamiast Vima. -
Uruchom ponownie bazę danych:
Sudo /etc / init.d / postgresql restart
(Tutaj możesz sprawdzić, czy działa z
psql -U postgres
). -
Utworzyć użytkownika o tej samej nazwie co ty (aby go znaleźć, możesz wpisać
whoami
):Sudo createuser - u postgres-d-e-E-l-P-r-s
<my_name>
Opcje mówią postgresqlowi, aby stworzył użytkownika, który może się zalogować, tworzyć bazy danych, tworzyć nowe role, jest superużytkownikiem i będzie miał zaszyfrowane hasło. Naprawdę ważne są-P-E, tak, że zostaniesz poproszony o wpisanie hasło, które zostanie zaszyfrowane, i-d, dzięki czemu można zrobić
createdb
.Uwaga na hasła: najpierw zapyta Cię dwukrotnie o nowe hasło( dla nowego użytkownika), powtórzone, a następnie raz o hasło postgres (to określone w Kroku 2).
-
Ponownie Edytuj plik
pg_hba.conf
(zobacz krok 3 powyżej) i zmień "peer" na "md5"w wierszu dotyczącym "wszystkich" innych użytkowników:Wszystkie lokalne Wszystkie
peermd5 -
Uruchom ponownie (jak w kroku 4) i sprawdź, czy możesz się zalogować bez-u postgres:
Psql template1
Zauważ, że jeśli wykonasz zwykły
psql
, nie powiedzie się, ponieważ spróbuje połączyć cię z domyślną bazą danych o tej samej nazwie co Ty (np.whoami
). template1 to baza danych administratora, która jest tutaj od samego początku. Teraz powinno zadziałać.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-14 17:44:51
Pod Linuksem PostgresQL jest zwykle skonfigurowany tak, aby umożliwić użytkownikowi root zalogowanie się jako superuser postgres postgres
z powłoki (console lub SSH).
$ psql -U postgres
Wtedy jak zwykle tworzysz nową bazę danych:
CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;
To powinno działać bez dotykania pg_hba.conf
. Jeśli chcesz być w stanie to zrobić za pomocą jakiegoś narzędzia GUI przez sieć-wtedy będziesz musiał zadzierać z pg_hba.conf
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-04 17:21:58
To jest moje rozwiązanie:
su root
su postgres
psql
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-23 08:07:06
Są dwie metody, których możesz użyć. Oba wymagają utworzenia użytkownika i bazy danych.
-
Korzystanie z createuser i createdb ,
$ sudo -u postgres createuser --superuser $USER $ createdb mydatabase $ psql -d mydatabase
-
Korzystanie z poleceń administracyjnych SQL i łączenie się z hasłem przez TCP
$ sudo -u postgres psql postgres
A następnie w powłoce psql
CREATE ROLE myuser LOGIN PASSWORD 'mypass'; CREATE DATABASE mydatabase WITH OWNER = myuser;
Wtedy możesz się zalogować,
$ psql -h localhost -d mydatabase -U myuser -p <port>
Jeśli nie znasz portu, zawsze możesz go uzyskać, uruchamiając następujące, jako
postgres
użytkownik,SHOW port;
Lub
$ grep "port =" /etc/postgresql/*/main/postgresql.conf
Sidenote: the postgres
user
Sugeruję nie modyfikowanie postgres
użytkownika.
- jest normalnie zablokowany z systemu operacyjnego. Nikt nie powinien" logować się " do systemu operacyjnego jako
postgres
. Powinieneś mieć roota, aby uzyskać uwierzytelnienie jakopostgres
. - zwykle nie jest chroniony hasłem i deleguje się do systemu operacyjnego hosta. To jest dobra rzecz. Zwykle oznacza to, że w celu zalogowania w As
postgres
, który jest odpowiednikiem PostgreSQLSA
SQL Server, musisz mieć dostęp do zapisu podstawowych plików danych. A to oznacza, że normalnie i tak mógłbyś zniszczyć spustoszenie.
[[18]}utrzymując to wyłączone, usuwasz ryzyko ataku brute force poprzez nazwanego super-użytkownika. Ukrywanie i zaciemnianie nazwy superużytkownika ma swoje zalety.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-20 08:12:38
EDIT: Warning: Please, read the answer posted by Evan Carroll. Wydaje się, że takie rozwiązanie nie jest bezpieczne i niewskazane.
To działało dla mnie w standardowej instalacji Ubuntu 14.04 64 bity .
Postępowałem zgodnie z instrukcjami, z małymi modyfikacjami, które znalazłem w http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html
- zainstaluj postgreSQL (jeśli nie jest jeszcze w Twoim maszyna):
sudo apt-get install postgresql
- Uruchom psql używając użytkownika postgres
sudo –u postgres psql postgres
- Ustaw nowe hasło dla użytkownika postgres:
\password postgres
- Exit psql
\q
- Edytuj /etc / postgresql/9.3/main / pg_hba.conf i zmiana:
#Database administrative login by Unix domain socket
local all postgres peer
Do:
#Database administrative login by Unix domain socket
local all postgres md5
- Restart postgreSQL:
sudo service postgresql restart
- Utwórz nową bazę danych
sudo –u postgres createdb mytestdb
- Uruchom psql ponownie z użytkownikiem postgres:
psql –U postgres –W
- lista istniejących baz danych (twoja nowa baza danych powinna już tam być):
\l
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-19 21:31:03
Note: textdb is the database which you are going to explore with 'alex' user
root@kalilinux:~# 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`
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-18 03:01:35
Prawdopodobnie musisz zaktualizować swój pg_hba.conf
Plik. Ten plik kontroluje, co użytkownicy mogą logować się z jakich adresów IP. Myślę, że użytkownik postgres jest domyślnie zablokowany.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-24 13:13:56
Jeśli używasz macOS tak jak ja, możesz nie mieć użytkownika postgres.
Podczas próby uruchomienia sudo -u postgres psql
otrzymywałem błąd sudo: unknown user: postgres
Na szczęście istnieją pliki wykonywalne, które zapewnia postgres.
createuser -D /var/postgres/var-10-local --superuser --username=nick
createdb --owner=nick
Wtedy byłem w stanie uzyskać dostęp psql
bez problemów.
psql
psql (10.2)
Type "help" for help.
nick=#
Jeśli tworzysz nową instancję postgres od zera, oto kroki, które podjąłem. Użyłem domyślnego portu, więc mogłem uruchomić dwie instancje.
mkdir /var/postgres/var-10-local
pg_ctl init -D /var/postgres/var-10-local
Potem edytowałem {[7] } z moim preferowanym port, 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
Zrobione!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 10:28:57
W systemie MacOS wykonałem poniższe kroki, aby to działało.
Po raz pierwszy, po instalacji, uzyskaj nazwę użytkownika systemu.
$ cd ~
$ pwd
/Users/someuser
$ psql -d postgres -U someuser
Teraz, gdy zalogowałeś się do systemu, możesz utworzyć DB.
postgres=# create database mydb;
CREATE DATABASE
postgres=# create user myuser with encrypted password 'pass123';
CREATE ROLE
postgres=# grant all privileges on database mydb to myuser;
GRANT
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-25 16:13:46
Po prostu przejdź do katalogu instalacji i uruchom ten plik " pg_env.bat", więc po przejściu na folder bin i wykonaniu pgAdmin.exe. To musi działać bez wątpienia!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-08 00:52:05