Postgres kullanıcısı yok mu?


92

Postgres'i yeni kurdum ve 1-2 saattir onunla ve çeşitli konfigürasyonlarla uğraşıyorum.

Postgres kullanıcısına geçememe konusunda sıkıştım

$ su - postgres aşağıdaki hatayı verir: su: unknown login: postgres

$ sudo -u postgres psql aşağıdaki hatayı verir: sudo: unknown user: postgres

Bu girişimler normal kullanıcı olarak yapılır. Bunları kök olarak denemek tamamen aynı sonuçları verir. Postgres'i OS X üzerinde Homebrew aracılığıyla kurdum ve talimatları defalarca okudum.


Sadece psql'yi çalıştırmaya mı çalışıyorsunuz?
danielM

Evet, doğru postgreskullanıcı olarak koşmak istiyorum .
krystah

Bazı Mac OS X çeşitlerinde, bazı kurulum yöntemleriyle, kullanıcının postgres_bunun yerine oluşturulduğunu düşünüyorum . Sondaki alt çizgiye dikkat edin. Ayrıca, sizin (veya yükleyicinin) PostgreSQL örneğini gerçekten yarattığınızdan ve veritabanını başlattığından emin misiniz?
Craig Ringer

1
postgresKullanıcıya çok geçemedim . postgresql-serverPaketi yükledikten sonra sorunu çözdüm .
sergio 郝海东 冠状 病 六四 事件 法轮功

Yanıtlar:


89

psql: Varsayılan kullanıcı adımla oturum açar

psql -U postgres: Postgres kullanıcısı olarak oturum açar

Sudo benim için gerekli görünmüyor.

OS X postgres veritabanım için Postgres.app kullanıyorum. Kurulumun çalıştığından ve veritabanı sunucusunun düzgün şekilde başlatıldığından emin olma zahmetini ortadan kaldırdı. Şuraya göz atın: http://postgresapp.com

Düzenleme: Argümanları kullanmamı düzeltmek için @Erwin Brandstetter'a kredi verin.


8
Brew kullanarak kurdum ve postgres veya _postgres adında bir kullanıcı yaratmadı (görebildiğim kadarıyla), bu yüzden bu benim için başarısız oldu. @kangkyu çözümü sorunları açıklar ve size yol gösterir - o zaman postgres kullanıcınız olmadığını varsayarak: psql postgresve psql -d postgres.
notapatch

21

By psql --help, siz (olmadan veritabanı adı için seçenekleri ayarlayın vermedi -dseçeneği) Eğer yapmadım eğer, kullanıcı adınız olacaktır -U, veritabanı kullanıcı adı vb çok kullanıcı adınızı olurdu

Ancak initdb(ilk veritabanını oluşturmak için) komutuyla herhangi bir veritabanı adı olarak kullanıcı adınıza sahip olmaz. Adlı bir veritabanı vardır postgres. İlk veritabanı, veri depolama alanı başlatıldığında her zaman initdb komutu tarafından oluşturulur. Bu veri tabanına postgres denir.

Dolayısıyla, kullanıcı adınız olarak adlandırılan başka bir veritabanınız yoksa psql -d postgres, psql komutunun çalışması için yapmanız gerekir . Ve -dvarsayılan olarak seçenek veriyor gibi görünüyor , psql postgresayrıca çalışıyor.

Kullanıcı adınızla aynı olan başka bir veritabanı adı oluşturduysanız (ile yapılmalıdır createdb), o zaman psqlyalnızca komut verebilirsiniz . Ve görünen o ki, ilk veritabanı kullanıcı adı, brew tarafından makine kullanıcı adınız olarak belirlenir.

psql -d <first database name> -U <first database user name>

veya,

psql -d postgres -U <your machine username>
psql -d postgres

varsayılan olarak çalışır.


17

OS X, sistem hesabı adlarının önüne "_" koyma eğilimindedir; OS X'in hangi sürümünü kullandığınızı söylemiyorsunuz, ancak en azından 10.8 ve 10.9'da _postgres kullanıcısı varsayılan kurulumda var. suParolası olmadığı için bu hesaba (root hesabı dışında) erişemeyeceğinizi unutmayın . sudo -u _postgresÖte yandan, iyi çalışmalıdır.


Teşekkürler! Bu aradığım cevap. Kullanıcıyı yalnızca "postgres" olarak yeniden adlandırmak için yapabileceğim bir şey var mı? Bu _postgres kullanıcısı olarak oturum açmak, psql'nin "_postgres" kullanıcısının var olmadığından şikayet etmesine neden olur. Temiz bir postgres örneğini başka bir veritabanından bir yedekleme dosyasıyla geri yüklemeye çalışıyorum
Chris Reyes - he-him

1
@ChrisReyes Sistem hesaplarının adını değiştirmek, onları kullanan sistem bileşenlerini bozabilir, bu yüzden kesinlikle karşı çıkmanızı öneririm. "Postgres" adıyla başka bir kullanıcı hesabı oluşturabilir ve bunu kullanabilirsiniz, ancak doğru anladıysam (ki bunu yapmayabilirim) , postgres veritabanındaki kullanıcı hesabının _postgres adında olmamasıyla karşılaşıyorsunuz. AIUI, DB içindeki hesap adları sistem hesap adlarından ayrıdır, bu nedenle "_postgres" sistem hesabı altında bir DB örneğini çalıştırırken ve bu DB'yi "postgres" veritabanı hesabıyla açarken sorun olmamalıdır.
Gordon Davisson


4
psql -U postgres

Db name: postgres & username: postgres durumunda benim için iyi çalıştı. Yani sudo yazmanıza gerek yok.

Ve diğer db durumunda deneyebilirsiniz

psql -U yourdb postgres

Postgres yardımında verildiği gibi:

psql [OPTION]... [DBNAME [USERNAME]]

Benim durumum: $ psql -U postgresçıktı üretir psql: FATAL: role "postgres" does not exist, ancak psql postgresçalışır.
Dondurulmuş Alev

4

Kryshah ile tamamen aynı hataları alıyorum su - postgresvesudo -u postgres psql . DanielM'nin cevabı aynı zamanda hatalar da veriyor.

Yanlış ayarlarda çıktılar

Ancak przbabu'nun yorumundan gelen yanıt.

masi$ psql
psql: FATAL:  database "masi" does not exist
masi$ psql -U postgres
psql: FATAL:  role "postgres" does not exist
masi$ psql postgres
psql (9.4.1)
Type "help" for help.

Bu sorunun bir kısmının OSX'teki sahip ayarlarında olabileceğini düşünüyorum.

masi$ ls -al /Users/
total 0
drwxr-xr-x   7 root      admin  238 Jul  3 09:50 .
drwxr-xr-x  37 root      wheel 1326 Jul  2 19:02 ..
-rw-r--r--   1 root      wheel    0 Sep 10  2014 .localized
drwxrwxrwt   7 root      wheel  238 Apr  9 19:49 Shared
drwxr-xr-x   2 root      admin   68 Jul  3 09:50 postgres
drwxr-xr-x+ 71 masi      staff 2414 Jul  3 09:50 masi

ama yapmak sudo chown -R postgres:staff /Users/postgresverir chown: invalid user: ‘postgres:staff’.

Kısacası sorunun çözümü bu değil. Bir kullanıcı ve veritabanı oluşturmak için postgres kurulumunun sağladığı araçları kullanın.

Doğru ayarları ve çıktıları elde etmek için

Postgres kurulumundan sonra veritabanı sistemine yeni bir kullanıcı eklemek için belirli komutlar vardır. İnitdb'den sonra, burada açıklandığı gibi aşağıdakileri çalıştırın

createuser --pwprompt postgres
createdb -Opostgres -Eutf8 masi_development
psql -U postgres -W masi_development

Her zaman parola isteğinden kaçınmak için burada açıklandığı gibi üç seçeneğiniz vardır .


2

Benim için Bu, macOS'taki çözümdü psql'yi yeniden yükleyin

brew install postgres

PostgreSQL sunucusunu başlatın

pg_ctl -D /usr/local/var/postgres start

DB'yi başlat

initdb /usr/local/var/postgres

Bu komut bir hata verirse, eski veritabanı dosyasını rm ve yukarıdaki komutu yeniden çalıştırın.

rm -r /usr/local/var/postgres

Yeni bir veritabanı oluştur

createdb postgres_test
psql -W postegres_test

Bu veritabanına giriş yapacaksınız ve giriş yapmak için burada bir kullanıcı oluşturabilirsiniz


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.