PostgreSQL hatası: Önemli: “kullanıcı adı” rolü mevcut değil


732

PostgreSQL 9.1imi kuruyorum. PostgreSQL ile hiçbir şey yapamam: yapamam createdb, yapamam createuser; tüm işlemler hata mesajını döndürür

Fatal: role h9uest does not exist

h9uestbenim hesap adım ve sudo apt-get installbu hesap altında PostgreSQL 9.1. Hesap
için benzer hata devam ediyor root.


1
Daha sonra karşılaşabilirsiniz FATAL: role "user" is not permitted to log in, bunun için dba.stackexchange.com/questions/57723/… .
kqw

19
Bu soruyu burada cevapladım . Bu öğreticiyi de okuyun " Ubuntu Linux için Postgres Nasıl Kurulur ".
ruzenhack

@Rusenhack bu öğretici bağlantı tam olarak ihtiyacım olan şeydi! Çok açık ve basit
dwanderson

4
psql -h localhost -U postgres
Metin Atalay

Eğer hata alırsanız role doesn't existVE hatayı can't create role, it already existsbu cevabı göz atın: stackoverflow.com/a/56658832/1689770
Jonathan

Yanıtlar:


774

Kullanım işletim sistemi kullanıcı postgres veritabanını oluşturmak için - sürece bir kurmadıysanız olarak veritabanı gerekli ayrıcalıklara sahip rolünü ki (aynı isimli işletim sistemi kullanıcıya karşılık h9uestsizin durumunuzda):

sudo -u postgres -i

Burada veya burada önerildiği gibi .

Sonra tekrar deneyin. Tür exitsistem kullanıcısı olarak faaliyet gösteren yapıldığında postgres.

Ya tek komutu çalıştırmak createuserolarak postgresile sudoolduğu gibi, Drees gösterdiği başka cevap.

Burada amaç, identkimlik doğrulama yoluyla erişim izni verilecek aynı addaki veritabanı rolüyle eşleşen işletim sistemi kullanıcısını kullanmaktır . postgresveritabanı kümesini başlatan varsayılan işletim sistemi kullanıcısıdır. Kullanım kılavuzu:

Veritabanı sistemini önyüklemek için yeni başlatılmış bir sistem her zaman önceden tanımlanmış bir rol içerir. Bu rol her zaman bir "süper kullanıcı" dır ve varsayılan olarak (çalışırken değiştirilmedikçe initdb) veritabanı kümesini başlatan işletim sistemi kullanıcısıyla aynı ada sahip olacaktır. Genellikle, bu rol adlandırılır postgres. Daha fazla rol oluşturmak için önce bu ilk rol olarak bağlanmanız gerekir.

Standart olmayan kullanıcı adlarıyla veya işletim sistemi kullanıcısının mevcut olmadığı garip kurulumları duydum. Orada stratejinizi uyarlamanız gerekir.

Kılavuzdaki veritabanı rolleri ve istemci kimlik doğrulaması hakkında bilgi edinin .


1
sudo etcKullanıcı postgres olarak çalıştırmak imkansız ... Program nasıl kurulur? Bu S2geometri kurulum sorununa bakın .
Peter Krauss

Yapılandırmaya bağlı olarak, kişinin ihtiyacı olabilir su postgres.
Fabien Snauwaert

1
sudo -u postgresçalışmıyor, çalışırken sudo -u postgres -i! -iBayrak ne yapar ?
parsecer

1
@parsecer: Etkileşimli bir kabuk başlatılır, benzer suancak sudo ayrıcalıklarına dayalıdır. Bkz man sudo.
Erwin Brandstetter

284

Diğer birçok insanın çözümlerini denedikten sonra ve başarılı olamadan, bu cevap sonunda bana yardımcı oldu.

https://stackoverflow.com/a/16974197/2433309

Kısacası, koşu

sudo -u postgres createuser owning_user

owning_user adıyla bir rol oluşturur (bu durumda h9uest). Bundan sonra rake db:create, Postgres ortamına girmek zorunda kalmadan ayarladığınız hesap adı altında terminalden çalışabilirsiniz.


29
Bundan sonra "yetersiz ayrıcalıklar" hatası alırsanız, yukarıdaki komuta -s bayrağını ekleyebilirsiniz. Bu, yeni kullanıcınızı bir süper kullanıcı olarak oluşturacaktır. Lütfen yapmaya karar vermeniz durumunda bunun güvenlikle ilgili etkilerinin farkında olun.
sarink

1
"Yetersiz ayrıcalıklar" alıyorum, ancak şimdi HATA: roll "kullanıcı adı" zaten var.
Wylliam Judd

4
@ConnorLeech 'postgres'i' PG süper kullanıcı adınızla değiştirebilirsiniz. Benim durumumda bu benim adımdı.
myfashionhub

1
Ayrıca kullanmak zorunda kaldım ve kullanmama -sgerek yoktu sudo -u postgres( createuser new_useriyi çalıştı)
Meekohi

2
psql: FATAL: role "jonny" does not existtamam öyleyse sudo -u postgres -s createuser jonnyneden createuser: creation of new role failed: ERROR: role "jonny" already exists
Jonathan

134
sudo su - postgres

psql template1

"süper kullanıcı" olarak ayrıcalıkla pgsql'de rol oluşturmak

CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;

Sonra kullanıcı oluştur

CREATE USER username; 
eg. CREATE USER demo;

Kullanıcıya ayrıcalık ata

GRANT ROOT TO username;

Ve sonra o kullanıcının oturum açmasını etkinleştirin, örneğin psql template1normal $terminalden:

ALTER ROLE username WITH LOGIN;

4
PostgreSQL 9.4.4'ün yeni bir yüklemesini yaptım ve yeni bir süper kullanıcı oluşturmak için takipçiyi kullanabildim: CREATE ROLE username superuser createdb login; bu üç adımı da birleştiriyor ...
iPad Guy

25
# Bana VERİLEN KÖK; HATA: "kök" rolü mevcut değil
shacker

6
daha basit versiyonu: sudo -u postgres createuser --superuser $USER; sudo -u postgres createdb $USER
Zach Estela

2
@shacker#GRANT postgres TO username
7kemZmani

Sunucuyu başlatmak için root kullanıyorum ve sonra `` psql -U postgres -h 127.0.0.1 --command "SUPERUSER ŞİFRESİ İLE KULLANICI postgresondocker OLUŞTUR '; postgresondocker';" && \ createdb -O postgresondocker postgresondocker`` pg_ident'e eklersem bunu yapmak için root kullanabilir miyim?
Shivangi Singh

85

Postgres kullanarak apt-getbir kullanıcı rolü veya veritabanı oluşturmaz.

Kişisel kullanıcı hesabınız için bir süper kullanıcı rolü ve veritabanı oluşturmak için:

sudo -u postgres createuser -s $(whoami); createdb $(whoami)


1
İkinci bölümü şu şekilde çalıştırmam gerekiyordu:sudo -u postgres createdb $(whoami)
SanD

2
@SanD Süper kullanıcı olarak kendi kullanıcı hesabınızı oluşturduysanız ( -silk komuttaki bayrakla), veritabanını kendiniz oluşturabilirsiniz. Sen çalıştırmak gerekmez createdbşekilde postgres.
Miles Erickson

2
Mükemmel cevap! Saatlerce hata ayıklama kurtardı !!
Aminu Kano

79

Bu benim için çalışıyor:

psql -h localhost -U postgres

lütfen yukarıdaki kullanıcı için şifreyi ekleyin.
Chaudhry Waqas

1
@ PostgreSQL kurulumundan sonra şifre asla değiştirilmediyse, varsayılan olarak postgres(Linux ve Windows'da test edilmiştir).
silvioprog

1
role postgres does not exist
Jacob Schneider

15

Çalışma yöntemi,

  1. vi /etc/postgresql/9.3/main/pg_hba.conf
  2. local all postgres peer Burada değiştirmek akran için güven
  3. tekrar başlat, sudo service postgresql restart

  4. şimdi dene, psql -U postgres


1
trustYöntemin yalnızca tamamen güvenli bir ortamda önerilebileceği açık olmalıdır . Güvenilmeyen bağlantılardan erişim mümkün olsa da, DB kümenizi asla bu şekilde göstermeyin.
Erwin Brandstetter

Bu iyi
horoyoi o

Kontrol: postgresql hizmeti başlatılmadıysa, muhtemelen dosyada bazı hatalar olabilirpg_hba.conf
yürü

11

Postgres 9.5 sürümü için aşağıdaki kodunu kullanın:

psql -h localhost -U postgres

Umarım bu yardımcı olur.


11
psql postgres

postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;

4
psql postgressonuçları:psql: FATAL: role "root" does not exist
TomSawyer

2
psql postgres -U postgres? Sahip olduğunuz kullanıcıya (-U) bağlıdır.
Meadowlark Bradsher

teşekkür ederim! Postgres şifresini bilmiyorum çünkü postgresql kök ile yedekleme için mücadele
Dika 8

7

Kök kullanıcı istemine değil, yerel kullanıcı bilgi istemine şunu yazın

sudo -u postgres createuser <local username>

Ardından yerel kullanıcı için şifre girin.

Ardından "rol" kullanıcı adı "mevcut olmayan bir önceki komutu girin.

Yukarıdaki adımlar benim için sorunu çözdü. Değilse, lütfen yukarıdaki adımlar için terminal mesajları gönderin.




2

İçin , Windows kullanıcıları:psql -U postgres

Sonra PostgreSQL komut satırı arabirimini görmelisiniz: postgres=#


0

Bu Adımları İzleyin ve Sizin İçin Çalışacak:

  1. Çalıştırmak msfconsole
  2. db_console yazın
  3. bazı bilgiler size göstermenizi sağlayacak bilgileri seçti: db_connect user:pass@host:port.../databaseüzgünüm hatırlamıyorum ama bunun gibi daha sonra kullanıcı ve parolayı ve ana bilgisayarı ve veritabanını database.ymlyerleştirmedeki bilgilerle değiştirin :/usr/share/metasploit-framework/config
  4. göreceksin. arka planda model önbellek yeniden oluşturma.
  5. Güncelleme terminali ve öğle msfconsole'u yeniden başlattıktan sonra apt-get update && apt-get upgrade yazın ve çalışırsa, yazarak msfconsole: msf>db_statusbağlandığını göreceksiniz.

0

--no-owner --no-privilegesbayrakları ile dökümü ve geri yükleme

Örneğin

dökümü - pg_dump --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname > /tmp/full.dump

onarmak - pg_restore --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname /tmp/full.dump

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.