Createuser: veritabanı postgresine bağlanamadı: FATAL: “tom” rolü mevcut değil


92

Postgres'i ilk kez kurmaya çalışıyorum ve veritabanlarını okuma ve oluşturma izinlerine sahip bir kullanıcı oluşturmam gerekiyor. Ancak, kullandığımda:

createuser username

terminalimde aşağıdaki mesajı alıyorum:

createuser: postgres veritabanına bağlanılamadı: FATAL: "tom" rolü mevcut değil

Tom, şu anda giriş yaptığım Ubuntu kullanıcı hesabım. "Postgres" için bir kullanıcı adı oluşturmaya çalışıyorum ve ardından psql -U psql template1bir veritabanı oluşturup Rails uygulamam için ona bir sahip atayabiliyorum.


Gerçekten bir 'postgres' kullanıcısı oluşturmaya mı çalışıyorsunuz? Veya Rails uygulamanız için sadece bir kullanıcı mı? Normalde 'postgres' kullanıcısı zaten vardır ve sorun ihtiyacınız olanı yapmak için ona bağlanmaktır.
ostergaard

Yanıtlar:


132

Ubuntu'dan bahsettiniz, bu yüzden PostgreSQL paketlerini Ubuntu'dan apt aracılığıyla yüklediğinizi tahmin edeceğim.

Öyleyse, postgresPostgreSQL kullanıcı hesabı zaten mevcuttur ve içindeki peerunix soketleri için kimlik doğrulama yoluyla erişilebilir olacak şekilde yapılandırılmıştır pg_hba.conf. postgresUnix kullanıcısı olarak komutları çalıştırarak buna ulaşabilirsiniz , örneğin:

sudo -u postgres createuser owning_user
sudo -u postgres createdb -O owning_user dbname

Bunların tümü, "Ubuntu PostgreSQL" için Google'da ilk hit olan Ubuntu PostgreSQL belgelerinde yer almaktadır ve çok sayıda Stack Overflow sorusunda ele alınmıştır.

(İşletim sistemi ve bulunduğunuz sürüm, PostgreSQL'i nasıl yüklediğiniz vb. Gibi ayrıntıları atlayarak bu soruyu yanıtlamayı çok daha zor hale getirdiniz.)


owning_user oluşturduktan sonra, bu kullanıcıyla nasıl bağlantı kurarsınız? Kullandığım varsayılan kullanıcıyı, sudo -u postgres psql postgres'i bağlamak istiyorum. Aynı şekilde owning_user'a nasıl bağlanılır?
Jony

2
Üç seçenek. (a) Söz konusu kullanıcı için bir şifre belirleyin ve o kullanıcı pg_hba.confiçin md5kimlik doğrulamasını kullanmak üzere düzenleyin (kılavuza bakın); (b) Aynı adla bir işletim sistemi kullanıcısı oluşturun ve peerkimlik doğrulamayı kullanmaya devam edin ; veya (c) daha gelişmişse, pg_ident.confişletim sistemi kullanıcınızın yeni kullanıcı olarak oturum açmasına izin vermek için bir eşleme oluşturun .
Craig Ringer

66

Git gist'e buradan talimatlarla bakın

Bunu çalıştırın:

 sudo -u postgres psql

VEYA

psql -U postgres

Postgres'e girmek için terminalinizde

Not: Mac kullanıyorsanız ve yukarıdaki komutların her ikisi de başarısız olduysa, aşağıdaki Mac ile ilgili bölüme atlayın

postgres=#

Çalıştırmak

CREATE USER new_username;

Not: new_username, sizin durumunuzda tom olacak, oluşturmak istediğiniz kullanıcı ile değiştirin.

postgres=# CREATE USER new_username;
CREATE ROLE

Bu kullanıcının bir DB oluşturabilmesini istediğiniz için, rolü süper kullanıcı olarak değiştirmeniz gerekir.

postgres=# ALTER USER new_username SUPERUSER CREATEDB;
ALTER ROLE

Onaylamak için her şey başarılıydı,

postgres=# \du
                         List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
new_username     | Superuser, Create DB                           | {}
postgres         | Superuser, Create role, Create DB, Replication | {}
root             | Superuser, Create role, Create DB              | {}

postgres=# 

Güncelleme / Değiştirme (Mac için):

Yakın zamanda Mac'imde benzer bir hatayla karşılaştım:

psql: FATAL: role "postgres" does not exist

Bunun nedeni, kurulumumun, rol adı sizin oturum açma (kısa) adınızla aynı olan bir veritabanı süper kullanıcısı ile kurulmuş olmasıydı.

Ancak bazı linux betikleri, süper kullanıcının geleneksel rol adına sahip olduğunu varsayar. postgres

Bunu nasıl çözdüm?

homebrewRun ile kurduysanız :

/usr/local/opt/postgres/bin/createuser -s postgres

Postgres'in belirli bir sürümünü kullanıyorsanız, şunu söyleyin ve 10.5çalıştırın:

/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres

VEYA:

/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username

VEYA:

/usr/local/opt/postgresql@11/bin/createuser -s postgres

Eğer yüklü değilse postgres.app, Mac çalıştırmak için:

/Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres

Not: 10.5'i PostgreSQL sürümünüzle değiştirin


Bu postgres'e girmek için çalıştı:psql -U postgres
leontalbot

29
sudo -u postgres createuser -s tom 

yönetici sizin için bir PostgreSQL kullanıcı hesabı oluşturmadıysa bu durum size yardımcı olacaktır. İşletim sistemi kullanıcı adınızdan farklı bir PostgreSQL kullanıcı adı da atanmış olabilir, bu durumda -U anahtarını kullanmanız gerekir.


7

1- Varsayılan PostgreSQL kullanıcısı olarak oturum açın (postgres)

sudo -u postgres -i

2- Postgres kullanıcısı olarak. createuserKomutu kullanarak yeni bir veritabanı kullanıcısı ekleyin

[postgres]$ createuser --interactive

3-çıkış

[postgres]$ exit

5

Hatanız resmi belgelerde yayınlanmıştır. Sen olabilir bu makaleyi okuyun .

Nedenini kopyaladım (ve URL'lere köprü oluşturdum) o makaleden:

Bu, yönetici sizin için bir PostgreSQL kullanıcı hesabı oluşturmadıysa gerçekleşir. (PostgreSQL kullanıcı hesapları, işletim sistemi kullanıcı hesaplarından farklıdır.) Yöneticiyseniz, hesap oluşturmayla ilgili yardım için Bölüm 20'ye bakın . İlk kullanıcı hesabını oluşturmak için PostgreSQL'in kurulu olduğu işletim sistemi kullanıcısı olmanız gerekir (genellikle postgres). Ayrıca size işletim sistemi kullanıcı adınızdan farklı bir PostgreSQL kullanıcı adı atanmış olabilir; bu durumda PostgreSQL kullanıcı adınızı belirtmek için -U anahtarını kullanmanız veya PGUSER ortam değişkenini ayarlamanız gerekir.

Amaçlarınız için şunları yapabilirsiniz:

1) Bir PostgreSQL kullanıcı hesabı oluşturun:

sudo -u postgres createuser tom -d -P

( -Pbir şifre belirleme seçeneği; -d'tom' kullanıcı adınız için veri tabanı oluşturulmasına izin verme seçeneği. 'tom' un işletim sistemi kullanıcı adınız olduğunu unutmayın. Bu şekilde, PostgreSQL komutlarını dilsiz çalıştırabilirsiniz sudo.)

2) Artık createdbve diğer PostgreSQL komutlarını çalıştırabilmelisiniz .


1

Ben de aynı sorunu yaşadım, sadece bunu yapıyorum

sudo su - postgres

createuser odoo -U postgres -dRSP #P parola ( postgres'e erişim vermek için istediğiniz odoo veya kullanıcı adı )



0

Kimlik doğrulama yöntemini (kimlik) değiştirmek ve pg_hba.conf ile uğraşmak istemiyorsanız bunu kullanın:

Varsayılan kullanıcı olarak ilk oturum açma

 sudo su - posgres

ardından psql'ye erişin ve oturum açtığınız kullanıcıyla aynı adı taşıyan bir kullanıcı oluşturun

postgres=# CREATE USER userOS WITH PASSWORD 'garbage' CREATEDB;

kullanıcınızı ilgili rollerle doğrulayabilirsiniz

postgres=#  \du

Bundan sonra veritabanınızı oluşturabilir ve doğrulayabilirsiniz.

psql -d dbName
\l
\q

-4

Önce initdb'yi çalıştırmanız gerekir. Veritabanı kümesini ve ilk kurulumu oluşturacaktır.

Bkz ilk kez nasıl yapılandırmak postgresql için? ve http://www.postgresql.org/docs/8.4/static/app-initdb.html


5
Bu tamamen yanlıştır. Kullanıcı çalıştırmasaydı initdb, bildirilen hata mesajını üretmek için çalışan ve bağlantıları kabul eden bir veritabanı sunucusuna sahip olmazdı. Lütfen bu yanıltıcı yanıtı kaldırın. (BTW, gelecekte, eski bağlantıların birikmesini önlemek için lütfen / docs / current / static / adresine bağlantı verin)
Craig Ringer
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.