Πώς να επαναφέρετε τον κωδικό πρόσβασης ρίζας στο MySQL 8.0


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

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

Σύμφωνα με την τεκμηρίωση της MySQL, υπάρχουν δύο τρόποι επαναφοράς του κωδικού πρόσβασης root MySQL. Θα αναθεωρήσουμε και τα δύο.

Επαναφορά του κωδικού πρόσβασης ρίζας MySQL χρησιμοποιώντας –init-file

Ένας από τους τρόπους επαναφοράς του κωδικού πρόσβασης root είναι να δημιουργήσετε ένα τοπικό αρχείο και στη συνέχεια να ξεκινήσετε την υπηρεσία MySQL χρησιμοποιώντας την επιλογή --init-file, όπως φαίνεται.

vim /home/user/init-file.txt

Είναι σημαντικό να βεβαιωθείτε ότι το αρχείο είναι αναγνώσιμο από τον χρήστη mysql. Μέσα σε αυτό το αρχείο επικολλήστε τα εξής:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

Στο παραπάνω αλλάξτε το "new_password" με τον κωδικό πρόσβασης που θέλετε να χρησιμοποιήσετε.

Τώρα βεβαιωθείτε ότι η υπηρεσία MySQL έχει διακοπεί. Μπορείτε να κάνετε τα εξής:

systemctl stop mysqld.service     # for distros using systemd 
/etc/init.d/mysqld stop           # for distros using init

Στη συνέχεια εκτελέστε τα εξής:

mysqld --user=mysql --init-file=/home/user/init-file.txt --console

Αυτό θα ξεκινήσει την υπηρεσία MySQL και κατά τη διάρκεια της διαδικασίας θα εκτελέσει το αρχείο init που έχετε δημιουργήσει και έτσι θα ενημερωθεί ο κωδικός πρόσβασης για τον χρήστη root. Βεβαιωθείτε ότι έχετε διαγράψει το αρχείο μετά την επαναφορά του κωδικού πρόσβασης.

Φροντίστε να σταματήσετε τον διακομιστή και να τον ξεκινήσετε κανονικά μετά από αυτό.

systemctl stop mysqld.service        # for distros using systemd 
systemctl restart mysqld.service     # for distros using systemd 

/etc/init.d/mysqld stop              # for distros using init
/etc/init.d/mysqld restart           # for distros using init

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

mysql -u root -p

Επαναφορά κωδικού πρόσβασης ρίζας MySQL χρησιμοποιώντας πίνακες –παράλειψη-χορήγησης

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

Εάν ξεκινήσει ο διακομιστής --skip-grant-tables, η επιλογή για --skip-networking ενεργοποιείται αυτόματα, επομένως οι απομακρυσμένες συνδέσεις δεν θα είναι διαθέσιμες.

Πρώτα βεβαιωθείτε ότι η υπηρεσία MySQL έχει διακοπεί.

systemctl stop mysqld.service     # for distros using systemd 
/etc/init.d/mysqld stop           # for distros using init

Στη συνέχεια ξεκινήστε την υπηρεσία με την ακόλουθη επιλογή.

mysqld --skip-grant-tables --user=mysql &

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

mysql

Εφόσον η διαχείριση λογαριασμού είναι απενεργοποιημένη όταν η υπηρεσία ξεκινά με την επιλογή --skip-grant-tables, θα πρέπει να φορτώσουμε ξανά τις επιχορηγήσεις. Με αυτόν τον τρόπο θα μπορούμε να αλλάξουμε τον κωδικό πρόσβασης αργότερα:

FLUSH PRIVILEGES;

Τώρα μπορείτε να εκτελέσετε το ακόλουθο ερώτημα για να ενημερώσετε τον κωδικό πρόσβασης. Φροντίστε να αλλάξετε το "new_password" με τον πραγματικό κωδικό πρόσβασης που θέλετε να χρησιμοποιήσετε.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';

Τώρα σταματήστε τον διακομιστή MySQL και ξεκινήστε τον κανονικά.

systemctl stop mysqld.service        # for distros using systemd 
systemctl restart mysqld.service     # for distros using systemd 

/etc/init.d/mysqld stop              # for distros using init
/etc/init.d/mysqld restart           # for distros using init

Θα πρέπει να μπορείτε να συνδεθείτε με τον νέο σας κωδικό πρόσβασης.

mysql -u root -p

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

  1. Πώς να εγκαταστήσετε το MySQL 8 σε CentOS, RHEL και Fedora
  2. 15 Χρήσιμες συμβουλές συντονισμού και βελτιστοποίησης απόδοσης MySQL
  3. 12 πρακτικές ασφάλειας MySQL για Linux
  4. 4 Χρήσιμα εργαλεία γραμμής εντολών για την παρακολούθηση της απόδοσης της MySQL
  5. Εντολές διαχείρισης βάσης δεδομένων MySQL
συμπέρασμα

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