Έχω εγκαταστήσει την MySQL Community Edition 5.5 στο τοπικό μου μηχάνημα και θέλω να επιτρέψω απομακρυσμένες συνδέσεις ώστε να μπορώ να συνδεθώ από εξωτερική πηγή.
Πώς μπορώ να το κάνω αυτό;
Αυτό επιτρέπεται από προεπιλογή στη MySQL.
Αυτό που είναι απενεργοποιημένο από προεπιλογή είναι η απομακρυσμένη πρόσβαση "root". Αν θέλετε να το ενεργοποιήσετε, εκτελέστε αυτή την εντολή SQL τοπικά:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Και στη συνέχεια βρείτε την ακόλουθη γραμμή και σχολιάστε την στο αρχείο σας my.cnf
, το οποίο συνήθως βρίσκεται στο /etc/mysql/my.cnf
στα συστήματα Unix/OSX. Σε ορισμένες περιπτώσεις η θέση του αρχείου είναι /etc/mysql/mysql.conf.d/mysqld.cnf).
Αν πρόκειται για σύστημα Windows, μπορείτε να το βρείτε στον κατάλογο εγκατάστασης της MySQL, συνήθως κάτι σαν C:\Program Files\MySQL\MySQL Server 5.5\
και το όνομα του αρχείου θα είναι my.ini
.
Αλλάξτε τη γραμμή
bind-address = 127.0.0.1
σε
#bind-address = 127.0.0.1
Και επανεκκινήστε τον διακομιστή MySQL (Unix/OSX, και Windows) για να τεθούν σε ισχύ οι αλλαγές.
Στην περίπτωσή μου προσπαθούσα να συνδεθώ σε έναν απομακρυσμένο διακομιστή mysql σε cent OS. Αφού πέρασα από πολλές λύσεις (παραχώρηση όλων των προνομίων, αφαίρεση των δεσμών ip, ενεργοποίηση της δικτύωσης) το πρόβλημα εξακολουθούσε να μην λύνεται.
Όπως αποδείχτηκε, καθώς έψαχνα διάφορες λύσεις,έπεσα πάνω στο iptables, το οποίο με έκανε να συνειδητοποιήσω ότι η θύρα 3306 της mysql δεν δεχόταν συνδέσεις.
Ακολουθεί ένα μικρό σημείωμα σχετικά με το πώς έλεγξα και έλυσα αυτό το ζήτημα.
telnet (mysql server ip) [portNo]
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
service iptables stopΕλπίζω αυτό να σας βοηθήσει.
Εάν η διαδικασία του διακομιστή MySQL ακούει μόνο τη διεύθυνση 127.0.0.1 ή ::1, τότε δεν θα μπορείτε να συνδεθείτε απομακρυσμένα. Αν έχετε μια ρύθμιση bind-address
στο /etc/my.cnf
αυτό μπορεί να είναι η πηγή του προβλήματος.
Θα πρέπει επίσης να προσθέσετε προνόμια και για έναν χρήστη που δεν είναι localhost
.