Taip nama pengguna yang sama dari dua laluan berbeza dan MariaDB mungkin mengesahkan anda sebagai dua akaun berbeza. Akaun dikunci pada pengguna dan hos bersama-sama, jadi 'reporter'@'localhost' dan 'reporter'@'10.90.0.23' ialah baris berasingan dengan kata laluan berasingan dan kebenaran berasingan. Melalui VPN, soalan menarik bukanlah nama yang ditaip pengguna, tetapi alamat sumber yang dilihat pelayan.

Tentukan sumber yang sebenarnya dilihat pelayan

Bekerja ke belakang dari hos pangkalan data, bukan dari komputer riba. Alamat yang dianggap dimiliki klien hanyalah satu daripada beberapa kemungkinan:

PathSource MariaDB sees
Routed tunnel, no translationThe client's inner VPN address
Gateway source translationThe gateway's translated address
SSH local forwardThe SSH server's address
Public exit, no tunnelWhatever the ISP handed out

Gunakan bukti sebelah pelayan untuk memutuskannya. Log sambungan, senarai sesi aktif atau entri sementara dalam log umum menunjukkan alamat yang diterima pelayan. IP awam komputer riba dari pelayar ialah fakta lain dan selalunya mengelirukan.

Padankan akaun yang dipilih MariaDB

Pemilihan akaun mengikut susunan yang didokumenkan, bukan gabungan kebenaran. Padanan hos yang tepat diutamakan berbanding kad liar, dan baris pengguna tanpa nama turut serta dalam padanan dengan cara yang mengejutkan mereka yang menganggap nama sahaja yang menentukan. Pelayan memilih satu baris; ia tidak menggabungkan keistimewaan setiap baris yang sama nama. Membaca rujukan sekali lebih bernilai daripada seharian mencuba tekaan.

Ini bermakna menambah kebenaran pada 'reporter'@'%' mungkin tidak mengubah apa-apa jika sesi disahkan sebagai 'reporter'@'10.90.0.23'. Pembaikan mesti jatuh pada baris yang dipilih, sebab itulah pengenalpastian akaun mendahului penyuntingan kebenaran.

Baca akaun yang sebenarnya digunakan sesi

SELECT USER(), CURRENT_USER();
SHOW GRANTS;

CURRENT_USER() menamakan akaun yang mengesahkan sesi; USER() melaporkan apa yang diminta klien dan boleh berbeza. Jalankan sebagai pertanyaan peringkat atas biasa, bukan dari dalam rutin tersimpan dengan konteks pendefinisi, jika tidak jawapannya menerangkan pemilik rutin dan bukan sesi anda.

Log masuk yang gagal tidak boleh menjalankan apa-apa daripada ini, dan itulah kes apabila pentadbir perlu memeriksa definisi akaun dan bukti sambungan pelayan. Rancang untuk itu: orang yang menyahpepijat log masuk yang ditolak biasanya tidak mempunyai sesi SQL untuk bertanya.

Asingkan kebolehsampaian daripada pengesahan

Teks ralat memberitahu anda di lapisan mana anda berada. Sambungan ditolak atau tamat masa bermakna klien tidak pernah sampai ke pendengar, jadi akaun dan kata laluannya belum dipersoalkan. Balasan akses ditolak bermakna pelayan menjawab, yang membuktikan kebolehsampaian dan menunjuk kepada akaun, padanan hos atau kelayakan.

Prasyarat rangkaian ialah senarainya sendiri: pendengar yang terikat pada alamat yang dimaksudkan dan bukan hanya pada loopback, trafik yang dibenarkan ke port yang dikonfigurasikan dan laluan balik untuk balasan. Setiap satu boleh gagal secara bebas, dan terowong yang berfungsi tidak membayangkan mana-mana daripadanya. Pendengar pada loopback menerima sambungan setempat dan menolak setiap sambungan jauh, yang menghasilkan sambungan ditolak yang kelihatan seperti sekatan tembok api.

Periksa alamat pengikatan sebelum membuka tiket dengan pasukan rangkaian. ss -lntp pada hos pangkalan data menunjukkan alamat dan port mana yang benar-benar mendengar, dan satu baris itu menyingkirkan seluruh kategori tekaan.

Baiki secara sempit, kemudian uji semula kedua-dua arah

Cipta akaun layak hos yang dimaksudkan melalui proses organisasi yang diluluskan, dengan kelayakan daripada stor yang disokong dan bukan yang dikongsi yang ditampal ke dalam tiket. Berikan hanya operasi skema yang diperlukan tugas. Menukar log masuk jauh yang gagal menjadi akaun root, dasar beri-semua atau hos kad liar menyeluruh membuat ujian lulus dan menghapuskan kawalan yang anda uji. Kebenaran yang anda tambah tergesa-gesa ialah yang tiada siapa buang kemudian.

Uji semula dengan sesi baharu melalui laluan yang dimaksudkan, kemudian periksa kes negatif. Laluan yang sepatutnya disekat mesti kekal disekat, dan operasi yang tidak diberikan mesti kekal ditolak. Dua pemeriksaan itulah yang membezakan akaun yang dibaiki daripada akaun yang diperluas.

Akhir sekali, catat alamat sumber yang diperhatikan dan nama akaun bersama-sama. Terowong menyediakan kebolehsampaian; MariaDB masih memilih dan membenarkan akaunnya sendiri, dan orang seterusnya memerlukan kedua-dua fakta untuk menghasilkan semula keputusan anda.

Artikel berkaitan