Πώς να δημιουργήσετε χρήστες στο MySQL
Για να δημιουργήσετε έναν νέο χρήστη στο MySQL, χρειάζεστε επαρκή δικαιώματα διαχειριστή ή προνόμια superuser που σας επιτρέπουν να δημιουργείτε λογαριασμούς χρηστών και να διαχειρίζεστε εξουσιοδοτήσεις, εκτός από την πρόσβαση στην αντίστοιχη βάση δεδομένων. Πρέπει επίσης να γνωρίζετε τον τύπο πρόσβασης που απαιτεί ο νέος χρήστης, είτε πρόκειται για δικαιώματα ανάγνωσης, δικαιώματα εγγραφής ή ακόμη και δικαιώματα διαχειριστή.
Πώς να χρησιμοποιήσετε την εντολή CREATE USER του MySQL
Κατά την εγκατάσταση του συστήματος διαχείρισης βάσεων δεδομένων, το MySQL δημιουργεί αυτόματα έναν λογαριασμό root. Αυτός ο λογαριασμός σας παρέχει πλήρη έλεγχο των βάσεων δεδομένων, των πινάκων και των χρηστών σας, επιτρέποντας την αποτελεσματική διαχείριση. Εάν χρειάζεστε βοήθεια με τη διαδικασία εγκατάστασης, το σεμινάριο MySQL περιέχει όλες τις απαραίτητες πληροφορίες.
Με τον λογαριασμό root, μπορείτε να δημιουργήσετε επιπλέον λογαριασμούς χρηστών ή νέους χρήστες MySQL και να τους εκχωρήσετε δικαιώματα. Σε συστήματα Ubuntu με MySQL 5.7 ή νεότερες εκδόσεις, ο χρήστης root του MySQL έχει ρυθμιστεί από προεπιλογή να πιστοποιείται με το plugin auth_socket αντί για κωδικό πρόσβασης. Αυτό σημαίνει ότι αν το όνομα του χρήστη του συστήματος που καλεί τον πελάτη MySQL διαφέρει από το όνομα του χρήστη MySQL που καθορίζεται στην εντολή, θα πρέπει να προθέσετε το πρόθεμα sudo στην εντολή για να αποκτήσετε πρόσβαση στον λογαριασμό root:
$ sudo mysqlbashΓια να δημιουργήσετε έναν νέο χρήστη στο MySQL, χρησιμοποιήστε την εντολή CREATE USER. Αυτό σας επιτρέπει να δημιουργήσετε έναν χρήστη με συγκεκριμένο όνομα χρήστη και κωδικό πρόσβασης:
mysql> CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';bashΑντικαταστήστε username με ένα όνομα χρήστη της επιλογής σας. Στο host, εισάγετε το όνομα του κεντρικού υπολογιστή από τον οποίο μπορεί να συνδεθεί ο νέος χρήστης. Εάν ο χρήστης πρέπει να έχει πρόσβαση στη βάση δεδομένων μόνο από τον τοπικό σας διακομιστή Ubuntu, μπορείτε να εισάγετε localhost.
Κατά την επιλογή του plugin πιστοποίησης, έχετε διάφορες επιλογές. Το plugin auth_socket προσφέρει υψηλή ασφάλεια, απαιτώντας από τους χρήστες να εισάγουν έναν κωδικό πρόσβασης για πρόσβαση στη βάση δεδομένων. Ωστόσο, περιορίζει τις απομακρυσμένες συνδέσεις, απαιτώντας ενδεχομένως περισσότερη προσπάθεια για την αλληλεπίδραση εξωτερικών προγραμμάτων με το MySQL. Εναλλακτικά, μπορείτε να παραλείψετε το τμήμα WITH authentication_plugin της εντολής για την πιστοποίηση χρηστών χρησιμοποιώντας το τυπικό plugin caching_sha2_password του MySQL. Η εντολή θα έχει την εξής μορφή:
mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';bashΑφού δημιουργήσετε έναν νέο χρήστη, πρέπει να του εκχωρήσετε δικαιώματα.
Πώς να εκχωρήσετε δικαιώματα σε χρήστες στο MySQL
Η δημιουργία και η διαχείριση των δικαιωμάτων χρήστη είναι απαραίτητη για τη διατήρηση της ασφάλειας των δεδομένων στο MySQL. Η γενική εντολή για την εκχώρηση δικαιωμάτων χρήστη είναι:
mysql> GRANT PRIVILEGE ON database.table TO 'username'@'host';bashΗ τιμή PRIVILEGE καθορίζει ποιες ενέργειες μπορεί να εκτελέσει ο χρήστης στη συγκεκριμένη βάση δεδομένων και στον πίνακα. Μπορείτε να αντικαταστήσετε αυτήν την τιμή με τις ακόλουθες εντολές, μεταξύ άλλων:
CREATE: Επιτρέπει στους χρήστες να δημιουργήσουν μια βάση δεδομένων ή έναν πίνακαSELECT: Επιτρέπει στους χρήστες να ανακτούν δεδομέναINSERT: Επιτρέπει στους χρήστες να προσθέτουν νέες εγγραφές σε πίνακεςUPDATE: Επιτρέπει στους χρήστες να τροποποιούν υπάρχουσες καταχωρήσεις σε πίνακεςDELETE: Επιτρέπει στους χρήστες να διαγράφουν καταχωρήσεις πινάκωνDROP: Επιτρέπει στους χρήστες να διαγράψουν ολόκληρους πίνακες βάσεων δεδομένων
Μπορείτε επίσης να παραχωρήσετε σε νέους χρήστες πολλά δικαιώματα ταυτόχρονα. Όταν το κάνετε αυτό, πρέπει να διαχωρίσετε τα δικαιώματα με κόμμα:
mysql> GRANT SELECT, INSERT, UPDATE ON database.table TO 'username'@'host';bashΟι εξουσιοδοτήσεις για όλες τις βάσεις δεδομένων ή τους πίνακες μπορούν επίσης να χορηγηθούν με μία μόνο εντολή, εισάγοντας * αντί για τα μεμονωμένα ονόματα των βάσεων δεδομένων και των πινάκων. Για παράδειγμα, η ακόλουθη εντολή παρέχει σε έναν χρήστη την εξουσιοδότηση να αναζητά δεδομένα (SELECT), να προσθέτει νέες καταχωρήσεις (INSERT) και να αλλάζει υπάρχουσες καταχωρήσεις (UPDATE) σε όλες τις βάσεις δεδομένων και τους πίνακες.
mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO 'username'@'host';bashΑφού εκτελέσετε τις εντολές CREATE USER ή GRANT στο MySQL, μπορείτε να χρησιμοποιήσετε την εντολή FLUSH PRIVILEGES για να ενημερώσετε τη βάση δεδομένων. Αυτό επαναφορτώνει τους πίνακες εξουσιοδοτήσεων, διασφαλίζοντας ότι οι νέες εξουσιοδοτήσεις τίθενται σε ισχύ:
mysql> FLUSH PRIVILEGES;bashΩστόσο, είναι σημαντικό να παρέχετε στους χρήστες μόνο τις εξουσιοδοτήσεις που χρειάζονται. Εάν δώσετε σε έναν χρήστη πλήρη έλεγχο, αυτό μπορεί να αποτελέσει υψηλό κίνδυνο για την ασφάλεια.
Πώς να ανακαλέσετε δικαιώματα χρήστη από χρήστες στο MySQL
Η εντολή REVOKE χρησιμοποιείται για την κατάργηση δικαιωμάτων χρήστη στο MySQL. Η σύνταξη είναι παρόμοια με αυτή της εντολής GRANT. Ωστόσο, με αυτήν την εντολή, πρέπει να χρησιμοποιήσετε FROM αντί για TO:
mysql> REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';bashΓια να εμφανίσετε τις τρέχουσες εξουσιοδοτήσεις που έχει ένας χρήστης, μπορείτε να χρησιμοποιήσετε την εντολή SHOW GRANTS:
mysql> SHOW GRANTS FOR 'username'@'host';bashΜπορείτε να χρησιμοποιήσετε την εντολή DROP για να διαγράψετε έναν χρήστη:
mysql> DROP USER 'username'@'localhost';bashΠρέπει να είστε εξαιρετικά προσεκτικοί κατά τη διαγραφή χρηστών, ειδικά χρηστών με δικαιώματα διαχειριστή. Βεβαιωθείτε ότι διαγράφετε μόνο τους χρήστες που θέλετε πραγματικά να διαγράψετε, προκειμένου να αποφύγετε την ακούσια απώλεια δεδομένων.
Μόλις ολοκληρώσετε τη δημιουργία νέων χρηστών MySQL και την εκχώρηση δικαιωμάτων σε αυτούς, μπορείτε να κλείσετε τον πελάτη MySQL:
mysql> exitbash45d969e266677cabb44ceaf95418e879
bf812055a1ab3935cb15b43974c56856
01524320532809020958f4b5d042b02d