2013-01-26 13 views
9

Görünüşe göre bu sorulması oldukça zor bir soru çünkü, basit olduğu gibi, hiç kimse yanıt vermiyor gibi görünüyor.

Ubuntu 12.10 sunucusunda (GUI olmadan) çalışan PostgreSQL var.

:

Amacım - - benim sorum adlandırılmış veritabanı "mydb" ve "yönetici" nin ben kabuğundan sıradan bir kullanıcı olarak bu komutu vermek ve veritabanına bağlanmak sağlayacak şekilde oluşturmaktır

$ psql'in -U yönetici -d mydb

Ama bu her yerde cevabını bulamıyorum. Ben adlandırılmış veritabanı "mydb" ve "yönetici oluşturmak için nasıl anladım var

$ sudo su -m postgres 
[email protected]:~$ psql 
psql (9.1.7) 
Type "help" for help. 

postgres=# 

:

Ben su'ing ve psql'i komutunu çalıştırarak kullanıcı olarak postgres giriş yapabilirsiniz yönetici mydb 'veritabanına 'bağlanabilirsiniz': "öyle ki

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

Ben değil kullanıcı emin olmak için nasıl anladım var' - belki birileri ile böyle ayrıcalıklara gerek yok mu? [. Ben bunları yazarken, ben muhtemelen yöneticiden Süper ayrıcalıkları iptal etmelerini fark]

Ve ben gerçekten bilmek istiyorum bir düzenli kullanıcının kabuğu bağlanmak için yapılması gerekenler: Var

$ psql -U postgres 
psql: FATAL: Peer authentication failed for user "postgres" 

PostgreSQL'i yanlış anlaşılır olduğum konusunda kesinlikle yazılmamış varsayımlar, ancak birkaç saat süren arama, öğreticilere vb. bakarak, sorunu çözmedi. Birisi bunun daha önce cevaplandığını söylese, özellikle de varsa, çok mutlu olacağım. Bence cevabın basit olduğunu ve yardımın için teşekkür ederim.

sayesinde ge hata mesajından

cevap

8

, kimlik doğrulama-ayarlarının doğru ayarlanmamış gibi görünüyor. PostgreSQL ayrıca, veritabanındaki ayarların yanı sıra, kullanıcı, ana makine ve veritabanı için hangi kimlik doğrulama mekanizmalarının kullanılabileceğini belirten bir yapılandırma dosyası (pg_hba.conf) kullanır. Kullanıcıların sadece şifre/md5 şifresi ile bağlanabileceğini veya 'kimlik doğrulama gerekli değil' olduğunu bile belirtebilirsiniz.

Halihazırda konfigürasyonunuz muhtemelen tüm kullanıcılar için 'Peer' kimlik doğrulaması kullanmaktadır, ki bu basitçe şu anlama gelir: Sadece şu anda kullanıcıya izin verin giriş yapmış kullanıcı (ör. kabuk kullanıcınız da 'admin' olarak adlandırılmalıdır). Sorunuzdan, bu nolu ne istediğinizi, muhtemelen şifre veya md5 kimlik doğrulama mekanizmasını kullanmak isteyeceksiniz.

http://web.archive.org/web/20131001194046/http://blog.deliciousrobots.com/2011/12/13/get-postgres-working-on-ubuntu-or-linux-mint/ (arşivlenmiş sürümü)

Resmi belgelere:

http://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html

pg_hba değiştirdikten sonra postgresql yeniden hatırla

Ben bu sayfalar size ihtiyacınız cevabı verecektir düşünüyorum. conf dosyası!

güncelleme

Ben anılacaktır orijinal blog-post artık çevrimdışı, bağlantı artık arşivlenmiş sürümünü işaret eder. Raporlama için @O_the_Del'e teşekkürler. Debian

+0

Tanklarının sen çok fazla. Kaçmak zorundayım ama geri döndüğümde cevabın ve bağlantıların üzerinden geçecek. – zabouti

+0

Umut işe yarıyor. PostgreSQL harika bir veritabanıdır, ancak bazı durumlarda – thaJeztah

+0

thaJeztah yönünden oldukça dik bir öğrenme eğrisine sahiptir - bir yorumda yaptığım şeyi yazamıyorum, ancak temelde öneriniz işe yaradı. Çok teşekkürler! – zabouti

5

, PostgreSQL localhost varsayılan olarak dinler, bu nedenle TCP/IP bağlantılarını ardından bu kuralı maç için -h parametresini kullanabilirsiniz verir pg_hba.conf bir kural varsa:

psql -U admin -h localhost mydb 
İlgili konular