Pozostałe odpowiedzi nie były dla mnie całkowicie satysfakcjonujące. Oto, co zadziałało w przypadku postgresql-9.1 na Xubuntu 12.04.1 LTS.
-
Połącz się z domyślną bazą danych za pomocą postgres użytkownika:
sudo -u postgres szablon psql1
-
Ustaw hasło dla postgres użytkownika, a następnie wyjdź z psql (Ctrl-D):
ALTER USER postgres z zaszyfrowanym hasłem „xxxxxxx”;
-
Edytuj
pg_hba.conf
plik:sudo vim /etc/postgresql/9.1/main/pg_hba.conf
i zmień "peer" na "md5" w wierszu dotyczącym postgresu:
lokalne wszystkie postgresy
rówieśnikmd5Aby dowiedzieć się, jakiej wersji postgresql używasz, poszukaj folderu wersji w
/etc/postgresql
. Możesz także użyć Nano lub innego edytora zamiast VIM. -
Zrestartuj bazę danych :
sudo /etc/init.d/postgresql restart
(Tutaj możesz sprawdzić, czy działało z
psql -U postgres
). -
Utwórz użytkownika o tej samej nazwie co Ty (aby go znaleźć, wpisz
whoami
):sudo createuser -U postgres -d -e -E -l -P -r -s
Opcje mówią postgresql, aby utworzył użytkownika, który może się logować, tworzyć bazy danych, tworzyć nowe role, jest superużytkownikiem i będzie miał zaszyfrowane hasło. Naprawdę ważne z nich to -P -E, więc zostaniesz poproszony o wpisanie hasła, które zostanie zaszyfrowane, oraz -d, abyś mógł wykonać
createdb
.Uważaj na hasła :najpierw dwukrotnie poprosi o nowe hasło (dla nowego użytkownika), powtórzone, a następnie raz o hasło postgres (określone w kroku 2).
-
Ponownie edytuj
pg_hba.conf
(patrz krok 3 powyżej) i zmień "peer" na "md5" w wierszu dotyczącym "wszystkich" innych użytkowników:lokalne wszystkie wszystkie
rówieśnikmd5 -
Uruchom ponownie (jak w kroku 4) i sprawdź, czy możesz się zalogować bez -U postgres:
szablon psql1
Zauważ, że jeśli zrobisz tylko
psql
, nie powiedzie się, ponieważ spróbuje połączyć się 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
createdb
powinien działać.