Menghadapi masalah saat menjalankan perintah psql
dengan user postgres
sering terjadi, terutama jika ada pengaturan izin direktori yang tidak sesuai. Artikel ini membahas penyebab dan solusi dari error berikut:
could not change directory to "/home/user"
psql: could not connect to server: No such file or directory
Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Penyebab Error
Error ini biasanya muncul karena:
Direktori
/home
atau/home/user
memiliki izin yang salah sehingga userpostgres
tidak dapat mengaksesnya.Direktori PGDATA (lokasi data PostgreSQL) juga memiliki pengaturan izin yang tidak sesuai untuk user
postgres
.
Masalah ini dapat terjadi akibat kesalahan pengaturan izin, seperti menggunakan perintah berikut tanpa memahami dampaknya:
sudo chmod 777 -u postgres /home/user
Hal ini menyebabkan seluruh partisi home hanya dapat diakses oleh root.
Langkah-Langkah Solusi
1. Perbaiki Izin Direktori Home
Gunakan perintah berikut untuk memperbaiki izin:
sudo chmod og+rX /home /home/user
Perintah ini memastikan bahwa direktori /home
dan /home/user
dapat dibaca oleh user lain, termasuk postgres
.
2. Atur Izin pada Direktori PGDATA
Jika direktori PGDATA berada di dalam /home/user
, pastikan izin sudah benar untuk user postgres
:
sudo chown postgres:postgres -R /home/user/PGDATA
Langkah ini memberikan kepemilikan penuh kepada user postgres
untuk direktori tersebut.
3. Pastikan Server PostgreSQL Berjalan
Restart server PostgreSQL untuk memastikan layanan berjalan:
sudo service postgresql restart
4. Pertimbangan Lokasi Direktori PGDATA
Jika direktori PGDATA ditempatkan di dalam /home/user
untuk mengelola log file besar, pastikan folder tersebut memiliki izin yang benar sejak awal. Sebaiknya gunakan lokasi yang lebih aman dan terdedikasi untuk database, seperti /var/lib/postgresql
.
Catatan Keamanan
Menggunakan
chmod og+X
pada direktori home meningkatkan risiko keamanan karena direktori menjadi dapat diakses oleh user lain.Pastikan untuk tidak memberikan izin berlebihan, seperti
chmod 777
, pada direktori sensitif.
Dengan mengikuti langkah-langkah di atas, Kamu dapat mengatasi error ini dan memastikan PostgreSQL berjalan dengan baik.