OperationalError at /admin/
FATAL: Peer authentication failed for user "myuser"
Ini adalah kesalahan yang saya terima ketika saya mencoba masuk ke situs admin Django saya. Saya telah menggunakan database MySQL tidak ada masalah. Saya baru mengenal PostgreSQL, tetapi memutuskan untuk beralih karena host yang akhirnya saya rencanakan untuk digunakan untuk proyek ini tidak memiliki MySQL.
Oleh karena itu, saya pikir saya bisa melalui proses menginstal PostgreSQL, menjalankan syncdb
dan siap.
Masalahnya adalah saya tidak bisa membuat aplikasi saya terhubung ke database. Saya dapat masuk ke PostgreSQL melalui baris perintah atau aplikasi desktop yang saya unduh. Tidak hanya di skrip.
Juga, saya dapat menggunakan manage.py shell
untuk mengakses db dengan baik.
Ada pemikiran?
sumber
config/database.yml
- artinya, dalam file itu saya perlu menambahkan barishost: localhost
(atau di mana pun Anda server postgres - milik saya lokal)pg_hba.conf
diatur untuk menolak pengguna biasa terhubung melalui soket UNIX tetapi mengizinkan mereka melalui TCP / IP dari localhost.local_settings.py
file dan# Set to empty string for localhost. Not used with sqlite3.
ada di file . KEBOHONGAN!!!Itu mungkin karena skrip Anda berjalan di bawah beberapa pengguna selain yang Anda coba sambungkan ( myuser di sini). Dalam kasus ini, otentikasi rekan akan gagal. Solusi Anda dengan
HOST: "localhost"
berfungsi karena Anda tidak menggunakan autentikasi rekan lagi. Namun, ini lebih lambat daripadaHOST: ""
menggunakan soket unix, Anda menggunakan koneksi TCP. Dari dokumen django :Jika Anda ingin tetap menggunakan soket,
pg_hba.conf
diperlukan pengaturan yang benar . Yang paling sederhana adalah:sambil mengomentari semua
local
baris lain di konfigurasi. Perhatikan bahwa memuat ulang postgres diperlukan agar perubahan ini diterapkan.Tetapi jika mesin produksi multi-pengguna dipertanyakan, Anda mungkin ingin menggunakan sesuatu yang lebih aman seperti
md5
(lihat di sini untuk penjelasan tentang berbagai metode otentikasi).sumber
Lebih baik daripada percaya sepenuhnya hanya dengan mengaturnya ke md5.
sumber
Saya memperbaikinya dengan mengedit bagian bawah /etc/postgres/9.1/main/pg_hba.conf menjadi (mengubah md5 menjadi percaya; CATATAN ini berarti tidak akan ada kata sandi database, yang mungkin bukan yang Anda inginkan)
sumber
Saya baru saja menemukan masalah yang sama tetapi ingin menggunakan soket unix seperti yang dikatakan clime, tetapi dengan tetap menggunakan
peer
metode tersebut. Saya memetakan nama pengguna sistem saya dengan nama pengguna postgres di dalampg_hba.conf
, yang berfungsi denganpeer
metode ini.Di dalam
pg_hba.conf
saya menambahkan:Di dalam
pg_ident.conf
saya menambahkan:sumber