Android

Πώς να επιτρέψετε απομακρυσμένες συνδέσεις στο διακομιστή βάσης δεδομένων mysql

Week 9

Week 9

Πίνακας περιεχομένων:

Anonim

Από προεπιλογή, ο διακομιστής MySQL ακούει τις συνδέσεις μόνο από το localhost, πράγμα που σημαίνει ότι μπορεί να γίνει πρόσβαση μόνο από εφαρμογές που εκτελούνται στον ίδιο κεντρικό υπολογιστή.

Ωστόσο, σε ορισμένες περιπτώσεις, είναι απαραίτητη η πρόσβαση στο διακομιστή MySQL από απομακρυσμένη τοποθεσία. Για παράδειγμα, όταν θέλετε να συνδεθείτε στον απομακρυσμένο διακομιστή MySQL από το τοπικό σας σύστημα ή όταν χρησιμοποιείτε ανάπτυξη πολλαπλών διακομιστών όπου η εφαρμογή εκτελείται σε διαφορετικό μηχάνημα από το διακομιστή βάσης δεδομένων. Μία από τις επιλογές είναι η πρόσβαση στον εξυπηρετητή MySQL μέσω της σήραγγας SSH και η άλλη να ρυθμίσετε τον MySQL server ώστε να δέχεται απομακρυσμένες συνδέσεις.

Σε αυτόν τον οδηγό, θα ακολουθήσουμε τα απαραίτητα βήματα για να επιτρέψουμε απομακρυσμένες συνδέσεις σε διακομιστή MySQL. Οι ίδιες οδηγίες ισχύουν για την MariaDB.

Διαμόρφωση διακομιστή MySQL

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

Εάν ο διακομιστής MySQL και οι υπολογιστές-πελάτες μπορούν να επικοινωνούν μεταξύ τους μέσω ενός ιδιωτικού δικτύου, τότε η καλύτερη επιλογή είναι να ρυθμίσετε τον MySQL server να ακούει μόνο στην ιδιωτική διεύθυνση IP. Διαφορετικά, εάν θέλετε να συνδεθείτε με το διακομιστή μέσω ενός δημόσιου δικτύου, ο διακομιστής MySQL να ακούει σε όλες τις διευθύνσεις IP του μηχανήματος.

Για να γίνει αυτό, πρέπει να επεξεργαστείτε το αρχείο διαμόρφωσης MySQL και να προσθέσετε ή να αλλάξετε την τιμή της επιλογής bind-address . Μπορείτε να ορίσετε μια ενιαία διεύθυνση IP και εύρη IP. Εάν η διεύθυνση είναι 0.0.0.0 , ο διακομιστής MySQL δέχεται συνδέσεις σε όλες τις διεπαφές IPv4 του κεντρικού υπολογιστή. Εάν έχετε ρυθμίσει το IPv6 στο σύστημά σας, αντί για 0.0.0.0 , χρησιμοποιήστε :: .

Η θέση του αρχείου ρύθμισης MySQL διαφέρει ανάλογα με τη διανομή. Στο Ubuntu και στο Debian το αρχείο βρίσκεται στο /etc/mysql/mysql.conf.d/mysqld.cnf , ενώ σε διανομές με βάση το Red Hat όπως το CentOS, το αρχείο βρίσκεται στο /etc/my.cnf .

Ανοίξτε το αρχείο με το πρόγραμμα επεξεργασίας κειμένου:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Αναζητήστε μια γραμμή που αρχίζει με bind-address και ορίστε την τιμή της στη διεύθυνση IP στην οποία πρέπει να ακούσει ένας διακομιστής MySQL.

Από προεπιλογή, η τιμή έχει οριστεί σε 127.0.0.1 (ακούει μόνο στο localhost).

Σε αυτό το παράδειγμα, θα ρυθμίσουμε τον διακομιστή MySQL να ακούει σε όλες τις διεπαφές IPv4 αλλάζοντας την τιμή στο 0.0.0.0

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

Εάν υπάρχει γραμμή που περιέχει skip-networking , διαγράψτε ή σχολιάστε την προσθέτοντας # στην αρχή της γραμμής.

Σε MySQL 8.0 και νεότερη έκδοση, ενδέχεται να μην υπάρχει η οδηγία bind-address . Στην περίπτωση αυτή, προσθέστε το κάτω από το Ενότητα.

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

Για να επανεκκινήσετε την υπηρεσία MySQL στο Debian ή το Ubuntu, πληκτρολογήστε:

sudo systemctl restart mysql

Στις διανομές που βασίζονται στο RedHat, όπως το CentOS, για να επανεκκινήσετε την εκτέλεση της υπηρεσίας:

sudo systemctl restart mysqld

Παροχή πρόσβασης σε χρήστη από απομακρυσμένο μηχάνημα

Το επόμενο βήμα είναι να επιτρέψετε την πρόσβαση στην βάση δεδομένων στον απομακρυσμένο χρήστη.

Συνδεθείτε στο διακομιστή MySQL ως χρήστης ρίζας πληκτρολογώντας:

sudo mysql

mysql -uroot -p

Από το εσωτερικό του κελύφους MySQL, χρησιμοποιήστε τη δήλωση GRANT για να παραχωρήσετε πρόσβαση στον απομακρυσμένο χρήστη.

GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';

Που:

  • database_name είναι το όνομα της βάσης δεδομένων στο οποίο θα συνδεθεί ο χρήστης. όνομα χρήστη είναι το όνομα από το χρήστη MySQL. ip_address είναι η διεύθυνση IP από την οποία ο χρήστης θα συνδεθεί. Χρησιμοποιήστε το % για να επιτρέψετε στο χρήστη να συνδεθεί από οποιαδήποτε διεύθυνση IP. user_password είναι ο κωδικός πρόσβασης χρήστη.

Για παράδειγμα, για να παραχωρήσετε πρόσβαση σε μια βάση δεδομένων dbname σε ένα χρήστη που ονομάζεται foo με τον κωδικό my_passwd από ένα μηχάνημα-πελάτη με IP 10.8.0.5 , θα εκτελέσετε:

GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';

Διαμόρφωση του τείχους προστασίας

Το τελευταίο βήμα είναι να διαμορφώσετε το τείχος προστασίας ώστε να επιτρέπεται η κίνηση στη θύρα 3306 (προεπιλεγμένη θύρα MySQL) από τα απομακρυσμένα μηχανήματα.

Iptables

sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT

Να επιτρέπεται η πρόσβαση από μια συγκεκριμένη διεύθυνση IP:

sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT

UFW

Το UFW είναι το προεπιλεγμένο εργαλείο τείχους προστασίας στο Ubuntu. Για να επιτρέψετε την πρόσβαση από οποιαδήποτε διεύθυνση IP στο Internet (πολύ ανασφαλής) εκτελέστε:

sudo ufw allow 3306/tcp

Να επιτρέπεται η πρόσβαση από μια συγκεκριμένη διεύθυνση IP:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

Το FirewallD είναι το προεπιλεγμένο εργαλείο διαχείρισης τείχους προστασίας στο CentOS. Για να επιτρέψετε την πρόσβαση από οποιαδήποτε διεύθυνση IP στο Internet (πολύ ανασφαλής), πληκτρολογήστε:

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp sudo firewall-cmd --reload

Για να επιτρέψετε την πρόσβαση από μια συγκεκριμένη διεύθυνση IP σε μια συγκεκριμένη θύρα, μπορείτε είτε να δημιουργήσετε μια νέα ζώνη FirewallD είτε να χρησιμοποιήσετε έναν πλούσιο κανόνα. Δημιουργήστε μια νέα ζώνη που ονομάζεται mysqlzone :

sudo firewall-cmd --new-zone=mysqlzone --permanent sudo firewall-cmd --reload sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32 sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp sudo firewall-cmd --reload

Επαλήθευση των αλλαγών

Για να επαληθεύσετε ότι ο απομακρυσμένος χρήστης μπορεί να συνδεθεί στον εξυπηρετητή MySQL εκτελέστε την ακόλουθη εντολή:

mysql -u user_name -h mysql_server_ip -p

Όπου user_name χρήστης είναι το όνομα του χρήστη στον οποίο έχετε παραχωρήσει πρόσβαση και mysql_server_ip είναι η διεύθυνση IP του κεντρικού υπολογιστή όπου εκτελείται ο διακομιστής MySQL.

Αν όλα είναι σωστά ρυθμισμένα, θα μπορείτε να συνδεθείτε στον απομακρυσμένο διακομιστή MySQL.

ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"

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

"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"

συμπέρασμα

Η MySQL, ο πιο δημοφιλής διακομιστής βάσης δεδομένων ανοιχτού κώδικα από προεπιλογή, ακούει τις εισερχόμενες συνδέσεις μόνο στο localhost.

Για να επιτρέψετε απομακρυσμένες συνδέσεις σε διακομιστή MySQL, πρέπει να εκτελέσετε τα παρακάτω βήματα:

  1. Ρυθμίστε το διακομιστή MySQL για να ακούσετε όλα ή ένα συγκεκριμένο interface.Grant πρόσβαση στον απομακρυσμένο χρήστη.Ανοίξτε τη θύρα MySQL στο τείχος προστασίας.
mysql mariadb