Πληκτρολογήστε το ίδιο όνομα χρήστη από δύο διαφορετικές διαδρομές και η MariaDB μπορεί να σας πιστοποιήσει ως δύο διαφορετικούς λογαριασμούς. Οι λογαριασμοί κλειδώνονται σε χρήστη και κεντρικό υπολογιστή μαζί, οπότε τα 'reporter'@'localhost' και 'reporter'@'10.90.0.23' είναι ξεχωριστές γραμμές με ξεχωριστούς κωδικούς πρόσβασης και ξεχωριστές άδειες. Μέσω VPN, το ενδιαφέρον ερώτημα δεν είναι ποιο όνομα πληκτρολόγησε ο χρήστης αλλά ποια διεύθυνση πηγής είδε ο διακομιστής.

Προσδιορίστε την πηγή που βλέπει πραγματικά ο διακομιστής

Δουλέψτε αντίστροφα από τον κεντρικό υπολογιστή της βάσης δεδομένων, όχι από τον φορητό. Η διεύθυνση που ο πελάτης πιστεύει ότι έχει είναι μόνο μία από πολλές πιθανότητες:

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

Χρησιμοποιήστε στοιχεία από την πλευρά του διακομιστή για να το κρίνετε. Ένα αρχείο καταγραφής συνδέσεων, μια λίστα ενεργών συνεδριών ή μια προσωρινή εγγραφή στο γενικό αρχείο καταγραφής δείχνει τη διεύθυνση που δέχτηκε ο διακομιστής. Η δημόσια IP του φορητού από ένα πρόγραμμα περιήγησης είναι διαφορετικό γεγονός και συχνά παραπλανητικό.

Αντιστοιχίστε τον λογαριασμό που επέλεξε η MariaDB

Η επιλογή λογαριασμού ακολουθεί τεκμηριωμένη σειρά και όχι ένωση αδειών. Η ακριβής αντιστοίχιση κεντρικού υπολογιστή υπερισχύει του μπαλαντέρ, και οι γραμμές ανώνυμου χρήστη συμμετέχουν στην αντιστοίχιση με τρόπους που εκπλήσσουν όσους υποθέτουν ότι αποφασίζει μόνο το όνομα. Ο διακομιστής επιλέγει μία γραμμή· δεν συνενώνει τα προνόμια κάθε ομώνυμης γραμμής. Το να διαβάσετε την αναφορά μία φορά αξίζει περισσότερο από ένα απόγευμα δοκιμών με εικασίες.

Αυτό σημαίνει ότι η προσθήκη άδειας στο 'reporter'@'%' μπορεί να μην αλλάξει τίποτα αν η συνεδρία πιστοποιήθηκε ως 'reporter'@'10.90.0.23'. Η διόρθωση πρέπει να πέσει στη γραμμή που επιλέχθηκε, γι' αυτό ο εντοπισμός του λογαριασμού προηγείται της επεξεργασίας αδειών.

Διαβάστε τον λογαριασμό που χρησιμοποιεί πραγματικά η συνεδρία

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

Το CURRENT_USER() ονομάζει τον λογαριασμό που πιστοποίησε τη συνεδρία· το USER() αναφέρει τι ζήτησε ο πελάτης και μπορεί να διαφέρει. Εκτελέστε τα ως συνηθισμένα ερωτήματα ανώτατου επιπέδου, όχι μέσα από αποθηκευμένη ρουτίνα με περιβάλλον ορισμού, αλλιώς οι απαντήσεις περιγράφουν τον ιδιοκτήτη της ρουτίνας αντί για τη συνεδρία σας.

Μια αποτυχημένη σύνδεση δεν μπορεί να εκτελέσει τίποτα από αυτά, και αυτή είναι η περίπτωση όπου ένας διαχειριστής πρέπει να εξετάσει τους ορισμούς λογαριασμών και τα στοιχεία σύνδεσης του διακομιστή. Σχεδιάστε το: το άτομο που αποσφαλματώνει μια απορριφθείσα σύνδεση συνήθως δεν έχει συνεδρία SQL για ερωτήματα.

Διαχωρίστε την προσβασιμότητα από την πιστοποίηση

Το κείμενο του σφάλματος σας λέει σε ποιο επίπεδο βρίσκεστε. Μια απορριφθείσα σύνδεση ή ένα χρονικό όριο σημαίνει ότι ο πελάτης δεν έφτασε ποτέ σε ακροατή, άρα ο λογαριασμός και ο κωδικός του δεν αμφισβητούνται ακόμη. Μια απάντηση άρνησης πρόσβασης σημαίνει ότι ο διακομιστής απάντησε, που αποδεικνύει προσβασιμότητα και δείχνει τον λογαριασμό, την αντιστοίχιση κεντρικού υπολογιστή ή τα διαπιστευτήρια.

Οι προϋποθέσεις δικτύου είναι δική τους λίστα: ένας ακροατής δεσμευμένος στην προοριζόμενη διεύθυνση και όχι μόνο στο loopback, επιτρεπόμενη κίνηση στη ρυθμισμένη θύρα και μια διαδρομή επιστροφής για την απάντηση. Καθένα μπορεί να αποτύχει ανεξάρτητα, και μια σήραγγα που λειτουργεί δεν συνεπάγεται κανένα από αυτά. Ένας ακροατής στο loopback δέχεται τοπικές συνδέσεις και απορρίπτει κάθε απομακρυσμένη, που παράγει απορριφθείσα σύνδεση που μοιάζει με μπλοκάρισμα τείχους προστασίας.

Ελέγξτε τη διεύθυνση δέσμευσης πριν ανοίξετε δελτίο στην ομάδα δικτύου. Το ss -lntp στον κεντρικό υπολογιστή της βάσης δεδομένων δείχνει ποια διεύθυνση και θύρα ακούν πραγματικά, και αυτή η μία γραμμή αποκλείει μια ολόκληρη κατηγορία εικασιών.

Επιδιορθώστε στενά και μετά δοκιμάστε και τις δύο κατευθύνσεις

Δημιουργήστε τον προοριζόμενο λογαριασμό με προσδιορισμό κεντρικού υπολογιστή μέσω της εγκεκριμένης διαδικασίας του οργανισμού, με διαπιστευτήριο από τον υποστηριζόμενο χώρο αποθήκευσης και όχι κοινόχρηστο κολλημένο σε δελτίο. Χορηγήστε μόνο τις λειτουργίες σχήματος που χρειάζεται η εργασία. Το να μετατρέψετε μια αποτυχημένη απομακρυσμένη σύνδεση σε λογαριασμό root, πολιτική χορήγησης όλων ή καθολικό κεντρικό υπολογιστή μπαλαντέρ κάνει τη δοκιμή να περάσει και αφαιρεί τον έλεγχο που δοκιμάζατε. Η άδεια που προσθέσατε βιαστικά είναι αυτή που κανείς δεν αφαιρεί αργότερα.

Δοκιμάστε ξανά με φρέσκια συνεδρία μέσω της προοριζόμενης διαδρομής και μετά ελέγξτε τις αρνητικές περιπτώσεις. Μια διαδρομή που πρέπει να αποκλείεται πρέπει να παραμένει αποκλεισμένη, και μια λειτουργία που δεν χορηγήθηκε πρέπει να παραμένει απαγορευμένη. Αυτοί οι δύο έλεγχοι είναι που ξεχωρίζουν έναν επιδιορθωμένο λογαριασμό από έναν διευρυμένο.

Τέλος, καταγράψτε τη διεύθυνση πηγής που παρατηρήθηκε και το όνομα του λογαριασμού μαζί. Η σήραγγα παρέχει προσβασιμότητα· η MariaDB εξακολουθεί να επιλέγει και να εξουσιοδοτεί τον δικό της λογαριασμό, και το επόμενο άτομο χρειάζεται και τα δύο γεγονότα για να αναπαράγει το αποτέλεσμά σας.

Σχετικά άρθρα