Αυτό θα έπρεπε να είναι πολύ απλό, αλλά δεν μπορώ να το κάνω να δουλέψει με τίποτα.
Προσπαθώ απλώς να συνδεθώ εξ αποστάσεως στον MySQL διακομιστή μου.
σύνδεση ως
mysql -u root -h localhost -p
δουλεύει μια χαρά, αλλά προσπαθώντας
mysql -u root -h 'any ip address here' -p
αποτυγχάνει με το σφάλμα
ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server
Στον πίνακα mysql.user
, υπάρχει ακριβώς η ίδια καταχώρηση για τον χρήστη 'root' με host 'localhost' όπως και μια άλλη με host '%'.
Έχω τελειώσει με τα μυαλά μου και δεν έχω ιδέα πώς να προχωρήσω. Οποιαδήποτε ιδέα είναι ευπρόσδεκτη.
Πιθανώς προληπτικό μέτρο ασφαλείας. Μπορείτε να δοκιμάσετε να προσθέσετε έναν νέο λογαριασμό διαχειριστή:
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> WITH GRANT OPTION;
Αν και όπως σημείωσαν ο Pascal και άλλοι, δεν είναι καλή ιδέα να έχετε έναν χρήστη με τέτοιου είδους πρόσβαση ανοιχτό σε οποιαδήποτε IP. Αν χρειάζεστε έναν χρήστη διαχειριστή, χρησιμοποιήστε τον root και αφήστε τον στο localhost. Για οποιαδήποτε άλλη ενέργεια προσδιορίστε ακριβώς τα προνόμια που χρειάζεστε και περιορίστε την προσβασιμότητα του χρήστη όπως προτείνει ο Pascal παρακάτω.
Επεξεργασία:
Από τις Συχνές ερωτήσεις της MySQL:
Εάν δεν μπορείτε να καταλάβετε γιατί λαμβάνετε
Απαγορεύεται η πρόσβαση, αφαιρέστε από το χρήστη όλες τις καταχωρήσεις που έχουν Host τιμές που περιέχουν μπαλαντέρ (καταχωρήσεις που περιέχουν χαρακτήρες '%' ή '_'). A πολύ συνηθισμένο σφάλμα είναι η εισαγωγή ενός νέου καταχώρηση με Host='%' και User='some_user', νομίζοντας ότι αυτό σας επιτρέπει να καθορίσετε το localhost σε να συνδεθείτε από το ίδιο μηχάνημα. Το λόγος που αυτό δεν λειτουργεί είναι ότι τα προεπιλεγμένα προνόμια περιλαμβάνουν ένα καταχώρηση με Host='localhost' και User=''. Επειδή αυτή η καταχώρηση έχει Host τιμή 'localhost' που είναι περισσότερο συγκεκριμένη από το '%', χρησιμοποιείται σε κατά προτίμηση στη νέα καταχώρηση όταν σύνδεση από localhost! Η σωστή διαδικασία είναι η εισαγωγή μιας δεύτερης καταχώρησης με Host='localhost' και User='some_user', ή να διαγράψετε την καταχώρηση με Host='localhost' και User=''. Μετά τη διαγραφή της καταχώρησης, θυμηθείτε να εκδώσετε μια εντολή FLUSH PRIVILEGES για να φορτώσετε εκ νέου τους πίνακες παραχωρήσεων. Δείτε επίσης την ενότητα 5.4.4, "Πρόσβαση Έλεγχος, Στάδιο 1: Σύνδεση επαλήθευση".
Το μήνυμα *Host ''xxx.xx.xxx.xxx'' δεν επιτρέπεται η σύνδεση σε αυτόν τον διακομιστή MySQL
είναι μια απάντηση από τον διακομιστή MySQL στον πελάτη MySQL. Παρατηρήστε πώς επιστρέφει τη διεύθυνση IP και όχι το όνομα κεντρικού υπολογιστή.
Αν προσπαθείτε να συνδεθείτε με την εντολή mysql -h<hostname> -u<somebody> -p
και επιστρέφει αυτό το μήνυμα με τη διεύθυνση IP, τότε ο MySQL server δεν είναι σε θέση να κάνει αντίστροφη αναζήτηση στον πελάτη. Αυτό είναι κρίσιμο, διότι έτσι αντιστοιχίζεται ο πελάτης MySQL στις επιχορηγήσεις.
Βεβαιωθείτε ότι μπορείτε να κάνετε ένα nslookup <mysqlclient>
ΑΠΟ τον διακομιστή MySQL. Εάν αυτό δεν λειτουργεί, τότε δεν υπάρχει καμία καταχώρηση στο διακομιστή DNS. Εναλλακτικά, μπορείτε να βάλετε μια καταχώρηση στο αρχείο HOSTS του διακομιστή MySQL (<ipaddress> <fullyqualifiedhostname> <hostname>
<- Η σειρά εδώ μπορεί να έχει σημασία).
Μια καταχώρηση στο αρχείο host του διακομιστή μου'που επιτρέπει την αντίστροφη αναζήτηση του πελάτη MySQL έλυσε αυτό ακριβώς το πρόβλημα.
Εάν τροποποιείτε τους πίνακες επιχορήγησης χειροκίνητα (χρησιμοποιώντας INSERT, UPDATE κ.λπ.), θα πρέπει να εκτελέσετε την εντολή
μια δήλωση FLUSH PRIVILEGES
για να πείτε στο διακομιστή να επαναφορτώσει τους πίνακες παραχώρησης.
ΥΓ: Δεν θα συνιστούσα να επιτρέψετε σε οποιονδήποτε κεντρικό υπολογιστή να συνδεθεί για οποιονδήποτε χρήστη (ειδικά όχι τη χρήση root
). Εάν χρησιμοποιείτε τη mysql για μια εφαρμογή πελάτη/εξυπηρετητή, προτιμήστε μια διεύθυνση υποδικτύου. Εάν χρησιμοποιείτε τη mysql με έναν διακομιστή ιστού ή έναν διακομιστή εφαρμογών, χρησιμοποιήστε συγκεκριμένες IP.