Pertanyaan Cara menyambung ke mongodb melalui soket unix dengan python


Apakah ada cara untuk terhubung ke mongodb melalui soket unix di python, sementara resmi pymongo modul belum mendukung soket unix.

Saya ingin alternatif pihak ketiga, atau patch, sementara saya mencari di sekitar dan tidak menemukan satu.

Saya tidak suka perpustakaan ORM-gaya sejak mongodb => python dicts alami dan mudah digunakan, jadi saya tidak mengambil sesuatu seperti MongoEngine ke akun.


6
2017-12-07 05:58


asal


Jawaban:


MongoDB, secara default, membuat soket unix pada /tmp/mongodb-27017.sock. Mulai pymongo 2.4 Anda dapat membuat koneksi seperti ini:

from pymongo import MongoClient
CONNECTION = MongoClient('/tmp/mongodb-27017.sock')

Selain itu Anda dapat menonaktifkan perilaku ini dengan memulai mongod dengan --nounixsocket atau tentukan lokasi alternatif dengan --unixSocketPrefix <path>

MongoDB akan selalu membuat dan mendengarkan pada soket UNIX, kecuali --nounixsocket diatur, --bind_ip tidak disetel, atau --bind_ip menentukan 127.0.0.1.


7
2018-05-22 07:18



Pembaruan untuk MongoDB v3.x

Jika Anda meng-upgrade ke MongoDB 3.x di linux, grup dan izin lainnya di /tmp/mongodb-27017.sock telah dihapus. Anda akan menerima izin ditolak kesalahan ketika Anda terhubung menggunakan MongoClient (host = '/ tmp / mongodb-27017.sock')

Untuk memperbaikinya, upgrade file konfigurasi MongoDB Anda ke format YAML, yang termasuk opsi filePermissions sehingga Anda mengatur kembali izinnya.

Contoh /etc/mongod.conf dalam format YAML:

storage:
    dbPath: "/var/lib/mongodb"
systemLog:
    destination: file
    path: "/var/log/mongodb/mongod.log"
    logAppend: true
net:
    unixDomainSocket:
        filePermissions: 0777

6
2018-06-05 02:24



Di luar lingkup Python, Anda dapat membangun proxy antara soket TCP / IP dan soket unix domain. Jadi, Anda masih bisa menggunakan pymongo

Antara netcat atau socat dapat melakukan ini.

nc -l 1234 | nc -U /tmp/foo

atau

socat TCP-LISTEN:1234,reuseaddr,fork UNIX-CLIENT:/tmp/foo

Lihat juga:

Mengarahkan trafik TCP ke soket domain UNIX di Linux


1
2017-12-07 08:58