🧚 Άκου! Το Beekeeper Studio είναι ένα γρήγορο, σύγχρονο και open source GUI για MySQL Λήψη
8 Σεπτεμβρίου 2024 Από τον Matthew Rathbone

Τα δικαιώματα (privileges) της MySQL καθορίζουν ποιες ενέργειες μπορεί να κάνει ένας χρήστης σε μια βάση δεδομένων. Το SHOW GRANTS σου επιτρέπει να ελέγξεις αυτά τα δικαιώματα, ώστε οι χρήστες να έχουν τη σωστή πρόσβαση. Μπορείς:

  • Να δεις όλα τα δικαιώματα ενός συγκεκριμένου χρήστη.
  • Να ελέγξεις τους χρήστες για λόγους ασφαλείας.
  • Να τροποποιήσεις δικαιώματα με βάση τα τρέχοντα grants.

Πριν συνεχίσεις το διάβασμα, ήθελα απλώς να σου πω για τον σύγχρονο και γρήγορο διαχειριστή βάσεων δεδομένων MySQL μας, το Beekeeper Studio. Ο SQL editor του κάνει αυτόματη συμπλήρωση καθώς πληκτρολογείς και κρατά ιστορικό κάθε query που έχεις εκτελέσει, κάτι πολύ χρήσιμο όταν ελέγχεις δικαιώματα. Επιπλέον, είναι δωρεάν για MySQL, κατέβασέ το εδώ.

Βασική σύνταξη του SHOW GRANTS

SHOW GRANTS FOR 'username'@'host';
  • Το ‘username’ αναφέρεται στον χρήστη της MySQL.
  • Το ‘host’ αναφέρεται στο hostname ή στη διεύθυνση IP από την οποία συνδέεται ο χρήστης.

Προβολή grants για συγκεκριμένο χρήστη

Ας πούμε ότι έχεις έναν χρήστη, τον ‘john’, που συνδέεται από το localhost. Για να δεις τα δικαιώματά του, χρησιμοποίησε το παρακάτω query:

SHOW GRANTS FOR 'john'@'localhost';

Αναμενόμενο αποτέλεσμα:

+---------------------------------------------------------+
| Grants for john@localhost                               |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO `john`@`localhost`                |
| GRANT SELECT, INSERT ON `mydb`.* TO `john`@`localhost`  |
+---------------------------------------------------------+

Σε αυτό το αποτέλεσμα:

  • Το GRANT USAGE δείχνει ότι ο χρήστης δεν έχει καθολικά δικαιώματα.
  • Το GRANT SELECT, INSERT ON mydb.* δείχνει ότι ο john έχει δικαιώματα SELECT και INSERT σε όλους τους πίνακες της βάσης δεδομένων ‘mydb’.

Εμφάνιση grants για όλους τους χρήστες (MySQL 5.7 και νεότερη)

Στη MySQL δεν υπάρχει μία εντολή που να εμφανίζει απευθείας τα grants όλων των χρηστών. Μπορείς όμως να δημιουργήσεις το απαραίτητο query από τον πίνακα mysql.user και μετά να χρησιμοποιήσεις το SHOW GRANTS για κάθε χρήστη:

SELECT CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host, '\';') 
FROM mysql.user;

Αυτό το query δημιουργεί μια λίστα με εντολές SHOW GRANTS για κάθε χρήστη του συστήματος. Ορίστε ένα δείγμα αποτελέσματος:

+--------------------------------------------------+
| CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host |
+--------------------------------------------------+
| SHOW GRANTS FOR 'root'@'localhost';              |
| SHOW GRANTS FOR 'john'@'localhost';              |
| SHOW GRANTS FOR 'admin'@'192.168.1.10';          |
+--------------------------------------------------+

Στη συνέχεια μπορείς να εκτελέσεις το query SHOW GRANTS για να δεις τα δικαιώματα ενός συγκεκριμένου χρήστη.

Εμφάνιση grants για τον τρέχοντα χρήστη

Για να εμφανίσεις τα grants του χρήστη που είναι συνδεδεμένος αυτή τη στιγμή στη βάση δεδομένων, μπορείς να χρησιμοποιήσεις τη συνάρτηση CURRENT_USER():

SHOW GRANTS FOR CURRENT_USER();

Αναμενόμενο αποτέλεσμα:

+---------------------------------------------------------+
| Grants for current user                                 |
+---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost`       |
+---------------------------------------------------------+

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

Ερμηνεία του αποτελέσματος

  • GRANT USAGE: Δείχνει ότι ο χρήστης δεν έχει καθολικά δικαιώματα, αλλά μπορεί να έχει συγκεκριμένα δικαιώματα σε βάσεις δεδομένων.
  • ALL PRIVILEGES: Παραχωρεί όλα τα δικαιώματα για μια βάση δεδομένων ή καθολικά, εκτός από το GRANT OPTION.
  • GRANT OPTION: Επιτρέπει σε έναν χρήστη να παραχωρεί δικαιώματα σε άλλους.
    Grants ανά βάση δεδομένων: Δικαιώματα όπως SELECT, INSERT, UPDATE και DELETE μπορούν να παραχωρηθούν για μια συγκεκριμένη βάση δεδομένων ή πίνακα.

Κατανοώντας τα GRANTS της MySQL

Η MySQL παρέχει την εντολή GRANT, που επιτρέπει στους διαχειριστές να παραχωρούν δικαιώματα στους χρήστες.

Υπάρχει επίσης η αντίστροφη εντολή REVOKE για την ανάκληση δικαιωμάτων.

Ωστόσο, πριν αλλάξεις δικαιώματα, πρέπει να ξέρεις ποια δικαιώματα ισχύουν ήδη – και εδώ έρχεται η εντολή SHOW GRANTS.

Η εντολή SHOW GRANTS εμφανίζει την εντολή GRANT που πρέπει να εκτελεστεί για να αντιγραφούν τα δικαιώματα ενός χρήστη.

Αυτή η εντολή είναι συμβατή με τις μηχανές βάσεων δεδομένων MySQL και MariaDB.

Συμπέρασμα

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

Άλλα άρθρα που μπορεί να σου αρέσουν:

Το Beekeeper Studio είναι ένα δωρεάν & open source GUI για MySQL

Χρησιμοποιώ τελευταία το Beekeeper Studio για τη δουλειά μου με MySQL και έγινε γρήγορα ένα από τα αγαπημένα μου εργαλεία βάσεων δεδομένων. Το περιβάλλον είναι καθαρό, σύγχρονο και χωρίς περισπασμούς, οπότε εστιάζεις εύκολα στα queries χωρίς την ακαταστασία που βρίσκεις σε άλλα εργαλεία. - Surendra Singh

Το Beekeeper Studio είναι ένας γρήγορος, διαισθητικός και εύχρηστος client για MySQL. Υποστηρίζει επίσης πολλές άλλες βάσεις δεδομένων και λειτουργεί άψογα σε Windows, Mac και Linux.

Η έκδοση του Beekeeper για Linux έχει 100% όλες τις λειτουργίες, χωρίς εκπτώσεις και χωρίς συμβιβασμούς.

Τι λένε οι χρήστες της MySQL για το Beekeeper Studio

Beekeeper Beekeeper Still a Newbie

Διάλεξα αυτό το πρόγραμμα μετά από χρόνια με το phpMyAdmin—νιώθω σαν να μπήκα σε έναν κόσμο ανώτερης ποιότητας· εδώ ένιωσα πραγματικά ότι νοιάζονται για τον χρήστη. Η ίδια η ιδέα, η υλοποίηση, η πρακτική εμπειρία—είμαι ειλικρινά ευγνώμων στον Matthew για όλα αυτά.

Alex M

Φανταστικό εργαλείο, το πιο πρακτικό IDE που έχω βρει μέχρι σήμερα για διαχείριση βάσεων Postgres και MySql - απλώς δουλεύει, χωρίς φασαρία :-)

Έτοιμος να βελτιώσεις τη ροή εργασίας σου με MySQL;

download Δωρεάν λήψη