Ostatní odpovědi mě úplně neuspokojily. Zde je to, co fungovalo pro postgresql-9.1 na Xubuntu 12.04.1 LTS.
-
Připojte se k výchozí databázi pomocí uživatelského postgres:
sudo -u postgres psql template1
-
Nastavte heslo pro uživatele postgres a poté ukončete psql (Ctrl-D):
ALTER USER postgres se zašifrovaným heslem 'xxxxxxx';
-
Upravte
pg_hba.conf
soubor:sudo vim /etc/postgresql/9.1/main/pg_hba.conf
a změňte "peer" na "md5" na řádku týkajícím se postgres:
místní všechny postgres
peermd5Chcete-li zjistit, jakou verzi postgresql používáte, vyhledejte složku verze pod
/etc/postgresql
. Místo VIM můžete také použít Nano nebo jiný editor. -
Restartujte databázi:
sudo /etc/init.d/postgresql restart
(Zde můžete zkontrolovat, zda to fungovalo s
psql -U postgres
). -
Vytvořte uživatele se stejným jménem jako vy (abyste ho našli, můžete napsat
whoami
):sudo createuser -U postgres -d -e -E -l -P -r -s
<my_name>
Možnosti říkají postgresql, aby vytvořil uživatele, který se může přihlásit, vytvářet databáze, vytvářet nové role, je superuživatelem a bude mít zašifrované heslo. Opravdu důležité jsou -P -E, takže budete požádáni o zadání hesla, které bude zašifrováno, a -d, abyste mohli provést
createdb
.Pozor na hesla :nejprve se vás dvakrát zeptá na nové heslo (pro nového uživatele), zopakuje, a poté jednou na heslo postgres (to, které je zadáno v kroku 2).
-
Znovu upravte
pg_hba.conf
soubor (viz krok 3 výše) a změňte "peer" na "md5" na řádku týkajícím se "všech" ostatních uživatelů:místní vše vše
peermd5 -
Restartujte (jako v kroku 4) a zkontrolujte, zda se můžete přihlásit bez -U postgres:
psql template1
Všimněte si, že pokud uděláte pouhých
psql
, selže, protože se vás pokusí připojit k výchozí databázi se stejným názvem jako vy (tj.whoami
). template1 je databáze administrátorů, která je zde od začátku. -
Nyní
createdb <dbname>
by mělo fungovat.
V Linuxu je PostgresQL obvykle nakonfigurován tak, aby umožňoval uživateli root přihlásit se jako superuživatel postgres postgres
ze shellu (konzole nebo ssh).
$ psql -U postgres
Pak byste prostě vytvořili novou databázi jako obvykle:
CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;
To by mělo fungovat, aniž byste se dotkli pg_hba.conf
. Pokud to chcete udělat pomocí nějakého nástroje GUI přes síť - pak byste si museli pohrát s pg_hba.conf
.
Můžete použít dvě metody. Oba vyžadují vytvoření uživatele a databázi.
-
Pomocí createuser a createdb ,
$ sudo -u postgres createuser --superuser $USER $ createdb mydatabase $ psql -d mydatabase
-
Použití administračních příkazů SQL a připojení pomocí hesla přes TCP
$ sudo -u postgres psql postgres
A pak v prostředí psql
CREATE ROLE myuser LOGIN PASSWORD 'mypass'; CREATE DATABASE mydatabase WITH OWNER = myuser;
Poté se můžete přihlásit,
$ psql -h localhost -d mydatabase -U myuser -p <port>
Pokud port neznáte, můžete jej vždy získat spuštěním následujícího příkazu, jako
postgres
uživatel,SHOW port;
Nebo,
$ grep "port =" /etc/postgresql/*/main/postgresql.conf
Sidenote:postgres
uživatel
Doporučuji NE úpravou postgres
uživatel.
- Obvykle je uzamčen z operačního systému. Nikdo se nemá "přihlašovat" do operačního systému jako
postgres
. Abyste se mohli autentizovat jakopostgres
, musíte mít root . - Obvykle není chráněn heslem a deleguje hostitelský operační systém. To je dobrá věc . To obvykle znamená, že se chcete přihlásit jako
postgres
což je PostgreSQL ekvivalent SQL ServeruSA
, musíte mít přístup pro zápis k základním datovým souborům. A to znamená, že za normálních okolností byste stejně mohli způsobit zkázu. - Pokud toto ponecháte deaktivované, odstraníte riziko útoku hrubou silou prostřednictvím jmenovaného superuživatele. Skrytí a zakrytí jména superuživatele má výhody.