Week 9
Πίνακας περιεχομένων:
- Διαμόρφωση διακομιστή MySQL
- Παροχή πρόσβασης σε χρήστη από απομακρυσμένο μηχάνημα
- Διαμόρφωση του τείχους προστασίας
- Iptables
- UFW
- FirewallD
- Επαλήθευση των αλλαγών
- συμπέρασμα
Από προεπιλογή, ο διακομιστής 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
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, για να επανεκκινήσετε την εκτέλεση της υπηρεσίας:
Παροχή πρόσβασης σε χρήστη από απομακρυσμένο μηχάνημα
Το επόμενο βήμα είναι να επιτρέψετε την πρόσβαση στην βάση δεδομένων στον απομακρυσμένο χρήστη.
Συνδεθείτε στο διακομιστή 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, πρέπει να εκτελέσετε τα παρακάτω βήματα:
- Ρυθμίστε το διακομιστή MySQL για να ακούσετε όλα ή ένα συγκεκριμένο interface.Grant πρόσβαση στον απομακρυσμένο χρήστη.Ανοίξτε τη θύρα MySQL στο τείχος προστασίας.
Μεταξύ των προϊόντων που επηρεάζονται είναι η βάση δεδομένων της Oracle. τη βάση δεδομένων TimesTen στη μνήμη. Oracle Application Server; μια σειρά προϊόντων PeopleSoft Enterprise? Έλεγχος βάσης δεδομένων Oracle Enterprise Manager. E-Business Suite? και το WebLogic Server, το οποίο απέκτησε αγοράζοντας συστήματα BEA. Δεν υπάρχουν νέα μπαλώματα για τα προϊόντα της J.D. Edwards της Oracle.
Το σετ ενημερωμένων εκδόσεων περιλαμβάνει 11 διορθώσεις βάσεων δεδομένων που επηρεάζουν διάφορες εκδόσεις στις εκδόσεις 11G, 10g και 9i. Δεν υπάρχει καμία από τις αδυναμίες ασφαλείας που μπορεί να εκμεταλλευτεί ο στόχος των επιδιορθώσεων μέσω ενός δικτύου χωρίς όνομα χρήστη και κωδικό πρόσβασης, δήλωσε η Oracle
Oracle προσφέροντας εκδοθείσα έκδοση βάσης δεδομένων της μηχανής βάσης δεδομένων
Η Oracle ισχυρίζεται μεγάλη ζήτηση για τη σειρά προϊόντων της Exadata, αλλά αρνείται να προσφέρει αριθμούς
Η Oracle απάντησε θλιβερά, κατηγορώντας την Επιτροπή ότι δεν κατάλαβε την αγορά της βάσης δεδομένων. Ισχυρίζεται ότι η MySQL στοχεύει σε έναν εντελώς διαφορετικό τύπο πελάτη από εκείνους που χρησιμοποιούν τα προϊόντα της βάσης δεδομένων της Oracle.
Ωστόσο, η Επιτροπή, όπως και πολλοί παρατηρητές, υποστηρίζουν ότι ακόμα και αν τα προϊόντα δεν ανταγωνίζονται επί του παρόντος, Η ιδιοκτησία της Oracle από την MySQL θα μπορούσε να καταπνίξει την ανάπτυξη του λογισμικού. Αυτό θα μπορούσε να έχει αρνητικό μακροπρόθεσμο αποτέλεσμα στην αγορά βάσης δεδομένων, ανέφεραν.







