Πώς να δημιουργήσετε έναν νέο χρήστη και να εκχωρήσετε δικαιώματα στη MySQL


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

Σε αυτόν τον οδηγό, θα μάθετε πώς να δημιουργείτε έναν νέο χρήστη και να εκχωρείτε δικαιώματα στη βάση δεδομένων MySQL.

Πώς να δημιουργήσετε έναν νέο χρήστη στη MySQL

Για να δημιουργήσετε έναν νέο χρήστη, συνδεθείτε πρώτα στο κέλυφος της MySQL.

$ sudo mysql -u root -p

Καταχωρίστε τον κωδικό πρόσβασης sudo ακολουθούμενο από τον κωδικό πρόσβασης που δόθηκε κατά τη ρύθμιση της βάσης δεδομένων MySQL και πατήστε ENTER. Στη συνέχεια, θα λάβετε αυτήν την προτροπή.

Για να δημιουργήσετε έναν νέο χρήστη, χρησιμοποιήστε τη σύνταξη που φαίνεται παρακάτω:

MariaDB [none]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Για παράδειγμα, για να δημιουργήσετε έναν νέο χρήστη που ονομάζεται «tecmint» στη βάση δεδομένων, επικαλέστε την εντολή:

MariaDB [none]> CREATE USER 'tecmint'@'localhost' IDENTIFIED BY 'QkYKmw$5tec';

Μερικά σημεία που πρέπει να θυμάστε

Όταν προσθέτετε έναν χρήστη τοπικά, δηλαδή στο σύστημα που έχετε εγκαταστήσει το MySQL, ο κεντρικός υπολογιστής του χρήστη καθορίζεται ως localhost και όχι ως διεύθυνση IP. Η λέξη-κλειδί localhost μεταφράζεται σε αυτός ο υπολογιστής και η MySQL την αντιμετωπίζει μοναδικά. Βασικά, ο localhost χρησιμοποιείται από τον πελάτη mysql για να δημιουργήσει μια σύνδεση με τον τοπικά εγκατεστημένο διακομιστή βάσης δεδομένων MySQL.

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

Για να παραχωρήσετε στον χρήστη πλήρη πρόσβαση σε όλες τις βάσεις δεδομένων, συμπεριλαμβανομένων των πινάκων, εκτελέστε.

MariaDB [none]> GRANT ALL PRIVILEGES ON * . * TO 'tecmint'@'localhost';

Στην παραπάνω εντολή, οι αστερίσκοι δείχνουν τη βάση δεδομένων και τον πίνακα αντίστοιχα στον οποίο μπορεί να έχει πρόσβαση ο χρήστης. Παραχωρεί στον χρήστη όλα τα δικαιώματα στη βάση δεδομένων – ανάγνωση, εγγραφή, επεξεργασία, και εκτέλεση συμπεριλαμβανομένης της εκτέλεσης όλων τις εργασίες σε άλλες βάσεις δεδομένων και πίνακες επίσης.

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

Όταν ολοκληρώσετε την εκχώρηση αδειών στον χρήστη, φορτώστε ξανά όλα τα δικαιώματα όπως φαίνεται για να τεθούν σε ισχύ οι αλλαγές.

MariaDB [none]> FLUSH PRIVILEGES

Πώς να εκχωρήσετε διαφορετικά δικαιώματα χρήστη

Ακολουθεί μια ανάλυση των πιθανών αδειών που μπορείτε να εκχωρήσετε στους χρήστες:

  • ΟΛΑ ΤΑ ΠΡΟΝΟΜΙΑ – Όπως είδαμε προηγουμένως, αυτό παρέχει σε έναν χρήστη MySQL πλήρη πρόσβαση σε μια συγκεκριμένη βάση δεδομένων.
  • ΔΗΜΙΟΥΡΓΙΑ – Επιτρέπει στους χρήστες να δημιουργούν νέες βάσεις δεδομένων ή πίνακες.
  • DROP – Επιτρέπει στους χρήστες να διαγράφουν βάσεις δεδομένων ή χρήστες.
  • INSERT – Επιτρέπει στους χρήστες να εισάγουν σειρές σε πίνακες.
  • ΔΙΑΓΡΑΦΗ – Επιτρέπει στους χρήστες να διαγράφουν σειρές από πίνακες.
  • SELECT – με την άδεια SELECT, οι χρήστες μπορούν να διαβάσουν τα περιεχόμενα ενός πίνακα.
  • UPDATE – Επιτρέπει στους χρήστες να ενημερώνουν τις σειρές σε έναν πίνακα.
  • ΕΠΙΛΟΓΗ ΧΟΡΗΓΗΣΗΣ – Οι χρήστες μπορούν να παραχωρήσουν ή να αφαιρέσουν τα προνόμια άλλων χρηστών.

Για να εκχωρήσετε ένα συγκεκριμένο δικαίωμα χρήστη, χρησιμοποιήστε τη σύνταξη:

MariaDB [none]> GRANT permission_type ON database_name.table_name TO 'username'@'localhost';

Επιπλέον, μπορείτε να εκχωρήσετε δικαιώματα σε όλους τους πίνακες μιας βάσης δεδομένων με ένα μόνο σύμβολο αστερίσκου όπως φαίνεται:

MariaDB [none]> GRANT permission_type ON database_name.* TO 'username'@'localhost';

Για παράδειγμα, για να εκχωρήσετε δικαιώματα SELECT στον χρήστη tecmint σε όλους τους πίνακες της βάσης δεδομένων testdb, εκτελέστε την εντολή.

MariaDB [none]> GRANT SELECT ON testdb.* TO 'tecmint'@'localhost';

Στη συνέχεια, ξεπλύνετε τα δικαιώματα για να τεθούν σε ισχύ οι αλλαγές.

MariaDB [none]> FLUSH PRIVILEGES;

Επιπλέον, μπορείτε να εκχωρήσετε πολλαπλά δικαιώματα αμέσως, διαχωρίζοντάς τα με κόμμα όπως φαίνεται.

MariaDB [none]> GRANT INSERT, UPDATE ON testdb.* TO 'tecmint'@'localhost';

Πώς να ανακαλέσετε τα δικαιώματα MySQL

Για να ανακαλέσετε δικαιώματα από έναν χρήστη, χρησιμοποιήστε τη σύνταξη:

MariaDB [none]> REVOKE permission_type ON database_name.table_name FROM 'username'@'localhost';

Για παράδειγμα, για να ανακαλέσετε τα δικαιώματα INSERT από τον χρήστη tecmint, εκτελέστε την εντολή.

MariaDB [none]> REVOKE INSERT ON testdb.* FROM tecmint'@'localhost';
MariaDB [none]> FLUSH PRIVILEGES

Για να ρίξετε μια ματιά στα τρέχοντα δικαιώματα ενός χρήστη, εκτελέστε:

MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';

Από την παρακάτω έξοδο, μπορούμε να δούμε ότι η άδεια INSERT έχει διαγραφεί από τον χρήστη tecmint αφήνοντας μόνο SELECT και UPDATE δικαιώματα στη βάση δεδομένων testdb.

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

MariaDB [none]> quit;

Στη συνέχεια, συνδεθείτε ξανά.

$ sudo mysql -u tecmint -p

Δώστε τον κωδικό πρόσβασης του χρήστη και πατήστε ENTER για πρόσβαση στο κέλυφος.

Για να απορρίψετε έναν χρήστη, χρησιμοποιήστε την εντολή DROP, όπως ακριβώς θα κάνατε κατά τη διαγραφή μιας βάσης δεδομένων.

MariaDB [none]> DROP USER 'username'@'localhost';

Μπορεί επίσης να θέλετε να διαβάσετε τα ακόλουθα άρθρα σχετικά με τη MySQL:

  • Χρήσιμες συμβουλές για την αντιμετώπιση κοινών σφαλμάτων στη MySQL
  • Mytop – Ένα χρήσιμο εργαλείο για την παρακολούθηση της απόδοσης MySQL/MariaDB στο Linux
  • Πώς να αλλάξετε την προεπιλεγμένη θύρα MySQL/MariaDB στο Linux
  • Τρόπος επαναφοράς του κωδικού πρόσβασης ρίζας MySQL ή MariaDB στο Linux

συμπέρασμα

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