Postgresql ilk kez nasıl yapılandırılır?


197

Postgresql'i yeni kurdum ve kurulum sırasında x şifresini belirttim. createdbHerhangi bir şifre yapmaya ve belirtmeye çalıştığımda mesajı alıyorum:

createdb: veritabanı postgresine bağlanılamadı: FATAL: kullanıcı için şifre kimlik doğrulaması başarısız oldu

Aynı createuser.

Nasıl başlamalıyım? Veritabanına kendimi kullanıcı olarak ekleyebilir miyim?



4
Bu, bir yıl sonra sorulan bu soru ile hemen hemen aynı. Ama bunun tehlikeli bir birincil cevabı olduğuna inanıyorum . Sen gerektiğini değil kuruyorum postgreskullanıcıyı. Bu var SUPostgreSQL ve buna karşı giriş-saldırılar için teşekkür açar. Başka bir süper kullanıcı oluşturun ve kilitli postgresUNIX yöneticileri için kök ayırın.
Evan Carroll

Yanıtlar:


329

Diğer cevaplar benim için tamamen tatmin edici değildi. İşte Xubuntu 12.04.1 LTS'de postgresql-9.1 için işe yarayan.

  1. Kullanıcı postgres ile varsayılan veritabanına bağlanma:

    sudo -u postgres psql template1

  2. Kullanıcı postgres parolasını belirleyin, ardından psql'den (Ctrl-D) çıkın:

    ALTER USER şifreli şifreli 'xxxxxxx' postgres;

  3. Edit pg_hba.confdosyasını:

    sudo vim /etc/postgresql/9.1/main/pg_hba.conf

    ve postgres ile ilgili satırda "akran" ı "md5" olarak değiştirin:

    yerel tüm      postgres       md5

    Hangi postgresql sürümünü kullandığınızı öğrenmek için altındaki sürüm klasörünü arayın /etc/postgresql. Ayrıca, VIM yerine Nano veya başka bir düzenleyici kullanabilirsiniz.

  4. Veritabanını yeniden başlatın:

    sudo /etc/init.d/postgresql yeniden başlatma

    (Burada çalışıp çalışmadığını kontrol edebilirsiniz psql -U postgres).

  5. Sizinle aynı ada sahip bir kullanıcı oluşturun (bulmak için yazabilirsiniz whoami):

    sudo createuser -U postgres -d -e -E -l -P -r -s <my_name>

    Seçenekler postgresql'e giriş yapabilen, veritabanları oluşturabilen, yeni roller oluşturabilen, bir süper kullanıcı olan ve şifrelenmiş bir parolaya sahip bir kullanıcı oluşturmasını söyler. Gerçekten önemli olanlar -P -E'dir, böylece şifrelenecek şifreyi yazmanız istenir ve bunu yapabilmek için -d createdb.

    Parolalara dikkat edin : önce size yeni parolanın iki kez (yeni kullanıcı için), tekrarlanan ve sonra bir kez postgres parolasını (2. adımda belirtilen) soracaktır.

  6. Yine pg_hba.confdosyayı düzenleyin (yukarıdaki 3. adıma bakın) ve "eş" i diğer tüm kullanıcılarla ilgili satırda "md5" olarak değiştirin:

    yerel tüm      tüm       md5

  7. Yeniden başlatın (4. adımdaki gibi) ve -U postgres olmadan giriş yapabileceğinizi kontrol edin:

    psql şablonu1

    Yalnızca yaparsanız psql, bunun sizinle aynı ada sahip varsayılan bir veritabanına (yani whoami) bağlanmaya çalışacağından başarısız olacağını unutmayın . template1 en başından itibaren burada bulunan yönetici veritabanıdır.

  8. Şimdi createdb <dbname>çalışmalı.


Bu prosedür Ubuntu 13.10'da da çok işe yaradı. Kullanıcı oluştururken 5. adımda sudo'yu hatırlamanız yeterlidir.
David den Haring

2
Ubuntu
14.04 LTS'de

2
bir not pg_hba.confolarak, ilk satır ilk satır olmalıdır, aksi takdirde diğer kurallar nedeniyle göz ardı edilebilir (F21'de pgsql 9.3.5). Bunu anlamak benim için biraz zaman aldı, postgresql kullanıcısı için zaten yorumlanmamış satırları değiştirmenin ve değiştirmenin basitçe yapmayacağı.
dashesy

Sanırım bu, PG 9.4'te değişti, çünkü sadece local all all peerşimdi değiştirdiğim 3. noktada md5. Tamam?
Léo Léopold Hertz 준영

1
Lütfen cevabı 2017'ye güncelleyin! PostgreSQL 9.6 ve UBUNTU 16 LTS ... Basit bir yol yok ??
Peter Krauss

55

Linux altında PostgresQL genellikle kök kullanıcının postgreskabuktan (konsol veya ssh) postgres süper kullanıcısı olarak oturum açmasına izin verecek şekilde yapılandırılır .

$ psql -U postgres

Sonra her zamanki gibi yeni bir veritabanı oluşturacaksınız:

CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;

Bu dokunmadan çalışmalıdır pg_hba.conf. Bunu ağ üzerinden bir GUI aracı kullanarak yapabilmek istiyorsanız - o zaman karışıklık gerekir pg_hba.conf.


i dizinim için initdb koştu ve yapılandırma dosyaları mevcut windows üzerinde çalışıyorum. Şimdi oluşturulanb çalışır ama psql testi yaptığımda iletiyi alıyorum UYARI: Konsol kodu sayfası (437) Windows kod sayfasından (1252) farklı 8-bit karakterler düzgün çalışmayabilir. Ayrıntılar için bkz. Psql başvuru sayfası "Windows kullanıcıları için notlar". ve komutların hiçbiri çalışmıyor.
Rohit Banga

7
psql: FATAL: Peer authentication failed for user "postgres"sudo ile bile.
Peter Krauss

Mükemmel yanıt, yapılandırma dosyalarına dokunmak istemedim ve bu Ubuntu üzerinden PostgreSQL 10.10 üzerinde kusursuz bir şekilde çalıştı. Bundan sonra bağlanabilmeniz gerekir psql -d mydatatabase -U myuser.
ranu

21

Bu benim çözümüm:

su root
su postgres
psql

4
Birçok durumda pg_hba.conf postgres db kullanıcısını postgres sistem hesabına (eş yöntemi) doğrular. Ancak başarılı bir giriş, sonuçta herhangi bir site için pg_hba.conf içeriğine bağlı olacaktır.
Reed Sandberg

1
Benim için çalıştı. İlk satırı ile değiştirdim sudo bash.
eje211

bu nasıl yardımcı alamadım, .. benim anlayışımdan, bu kök ve postgres günlükleri ve psql çalışır. Tam olarak ne oluyor? Teşekkürler!
olleh

20

Kullanabileceğiniz iki yöntem vardır. Her ikisi de bir kullanıcı ve veritabanı oluşturmayı gerektirir .

  1. Createuser ve createdb kullanarak ,

    $ sudo -u postgres createuser --superuser $USER
    $ createdb mydatabase
    $ psql -d mydatabase
  2. SQL yönetim komutlarını kullanma ve TCP üzerinden bir parola ile bağlantı kurma

    $ sudo -u postgres psql postgres

    Ve sonra psql kabuğunda

    CREATE ROLE myuser LOGIN PASSWORD 'mypass';
    CREATE DATABASE mydatabase WITH OWNER = myuser;

    Sonra giriş yapabilirsiniz,

    $ psql -h localhost -d mydatabase -U myuser -p <port>

    Bağlantı noktasını bilmiyorsanız, postgreskullanıcı olarak aşağıdakileri çalıştırarak her zaman alabilirsiniz ,

    SHOW port;

    Veya,

    $ grep "port =" /etc/postgresql/*/main/postgresql.conf

Sidenote: postgreskullanıcı

Ben önermek DEĞİL değiştirerek postgreskullanıcıyı.

  1. Normalde işletim sisteminden kilitlenir. Hiç kimsenin işletim sistemine "oturum açması" gerekmez postgres. Kimlik doğrulaması için root almanız gerekiyor postgres.
  2. Normalde şifre korumalı değildir ve ana bilgisayar işletim sistemine delege eder. Bu iyi bir şey . Bu normalde postgresSQL Server'ın PostgreSQL eşdeğeri olarak oturum açmak SAiçin temeldeki veri dosyalarına yazma erişimine sahip olmanız gerektiği anlamına gelir . Ve bu, normalde yine de tahribatı mahvedebileceğiniz anlamına gelir.
  3. Bunu devre dışı bırakarak, adlandırılmış bir süper kullanıcı üzerinden kaba kuvvet saldırısı riskini ortadan kaldırırsınız. Süper kullanıcının adını gizlemek ve gizlemek avantajlıdır.

İlk yöntemle, kullanıcı hiçbir ayrıcalık olmadan sona erer. İlk komut yerine bunu kullandım:sudo -u postgres createuser -U postgres -d -e -E -l -P -r -s $(whoami)
Fabien Snauwaert

@FabienSnauwaert -skullanıcıyı bir süper kullanıcı yapar.
Evan Carroll

16

EDIT: Uyarı: Lütfen, Evan Carroll tarafından gönderilen cevabı okuyun . Bu çözüm güvenli değil ve tavsiye edilmiyor gibi görünüyor.

Bu benim için standart Ubuntu 14.04 64 bit kurulumunda çalıştı .

Http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html'de bulduğum talimatları küçük değişikliklerle uyguladım.

  1. PostgreSQL'i yükleyin (zaten makinenizde değilse):

sudo apt-get install postgresql

  1. Postgres kullanıcısını kullanarak psql'yi çalıştırın

sudo –u postgres psql postgres

  1. Postgres kullanıcısı için yeni bir şifre belirleyin:

\password postgres

  1. Psql'den çık

\q

  1. Düzenleme /etc/postgresql/9.3/main/pg_hba.conf ve değişim:

#Database administrative login by Unix domain socket local all postgres peer

Kime:

#Database administrative login by Unix domain socket local all postgres md5

  1. PostgreSQL'i yeniden başlatın:

sudo service postgresql restart

  1. Yeni bir veritabanı oluşturun

sudo –u postgres createdb mytestdb

  1. Psgl'yi postgres kullanıcısıyla tekrar çalıştırın:

psql –U postgres –W

  1. Mevcut veritabanlarını listeleyin (yeni veritabanınız şimdi orada olmalıdır):

\l


1
İndirdim çünkü postgreskullanıcıyı aktive etmek kötü bir fikir. stackoverflow.com/a/41604969/124486
Evan Carroll

4
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`

3

Muhtemelen pg_hba.confdosyanızı güncellemeniz gerekiyor . Bu dosya, kullanıcıların hangi IP adreslerinden giriş yapabileceğini denetler. Postgres kullanıcı varsayılan olarak oldukça kilitli olduğunu düşünüyorum.


2
RHEL6.4 ve postgres 8.4 için dosya bulundu /var/lib/pgsql/data/pg_hba.conf. Değişim identiçin trustiçin host(ve localsen ssh kullanıyorsanız).
DavidG

3

Benim gibi macOS çalıştırıyorsanız, postgres kullanıcınız olmayabilir.

Çalıştırmaya çalışırken sudo -u postgres psqlhatayı alıyordumsudo: unknown user: postgres

Neyse ki postgres tarafından sağlanan yürütülebilir dosyalar vardır.

createuser -D /var/postgres/var-10-local --superuser --username=nick
createdb --owner=nick

Sonra sorunsuz bir şekilde erişebildim psql.

psql
psql (10.2)
Type "help" for help.

nick=#

Sıfırdan yeni bir postgres örneği oluşturuyorsanız, attığım adımlar şunlardır. İki örneği çalıştırabilmem için varsayılan olmayan bir bağlantı noktası kullandım.

mkdir /var/postgres/var-10-local
pg_ctl init -D /var/postgres/var-10-local

Sonra /var/postgres/var-10-local/postgresql.conf5433 numaralı limanı tercih ettim.

/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

Bitti!


2

MacOS'ta, çalışmasını sağlamak için aşağıdaki adımları izledim.

İlk kez, kurulumdan sonra, sistemin kullanıcı adını alın.

$ cd ~
$ pwd
/Users/someuser
$ psql -d postgres -U someuser

Artık sisteme giriş yaptınız ve DB oluşturabilirsiniz.

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

0

Sadece kurulumunuzun dizinine göz atın ve bu dosyayı "pg_env.bat" yürütün, bu nedenle bin klasörüne gidin ve pgAdmin.exe dosyasını çalıştırın. Bu hiç şüphesiz işe yarıyor!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.