Ροή

Οδηγός: Πως να επιλύσετε το πρόβλημα MySQL Access Denied for User ‘root’@’localhost’

techne

Administrator
Joined
27 May 2010
Μηνύματα
1,157
Βαθμολογία
24
Points
38
Website
www.eltube.gr
"Ένα από τα πιο συνηθισμένα σφάλματα που αντιμετωπίζουν οι χρήστες της MySQL είναι Δεν επιτρέπεται η πρόσβαση στο MySQL για χρήστη "root"@"localhost". Και είτε είστε νέος χρήστης MySQL είτε newb, η γνώση των διαφόρων τεχνικών για την επίλυσή του είναι συμφέρουσα.

Χρησιμοποιώντας αυτόν τον οδηγό, θα ανακαλύψετε τρεις μεθόδους επίλυσης αυτού του σφάλματος.


Τι σημαίνει αυτό το σφάλμα;

Ο καλύτερος τρόπος για να κατανοήσετε αυτό το σφάλμα είναι να το αναλύσετε σε μεμονωμένα στοιχεία. Αυτό το σφάλμα παρουσιάζεται όταν προσπαθείτε να συνδεθείτε στη MySQL στον τοπικό σας υπολογιστή, ως εκ τούτου «localhost».

Ένα παράδειγμα είναι όπως φαίνεται:

$ mysql -u root -p

word.png

Τα στοιχεία του σφάλματος είναι τα εξής:

1. ERROR 1045 (28000) – αναφέρεται στον ΚΩΔΙΚΟ ΣΦΑΛΜΑΤΟΣ και στο SQLSTATE, αντίστοιχα. Για παράδειγμα, στη MySQL και τη MariaDB, ο κωδικός σφάλματος 1045 σημαίνει ότι δεν επιτρέπεται η πρόσβαση για αυτό το όνομα χρήστη με τον καθορισμένο κωδικό πρόσβασης.

2. Το δεύτερο είναι η συμβολοσειρά μηνυμάτων. Το μήνυμα σφάλματος ακολουθεί τη μορφή: Δεν επιτρέπεται η πρόσβαση για τον χρήστη «%s»@»%s» (με χρήση κωδικού πρόσβασης: %s).

ΣΗΜΕΙΩΣΗ: Το πρώτο %s στο μήνυμα σφάλματος αναφέρεται στο όνομα χρήστη, ενώ το δεύτερο αναφέρεται στον κεντρικό υπολογιστή.


Λύση 1: Sudo σε MySQL

Η πρώτη και πιο κοινή μέθοδος για την επίλυση αυτού του σφάλματος είναι να κάνετε sudo στην παρουσία MySQL και να ορίσετε το auth_plugin σε mysql_native_password.

Ανοίξτε το τερματικό σας και εκτελέστε:

$ sudo mysql

Εισαγάγετε τον κωδικό πρόσβασης για τον λογαριασμό και προχωρήστε.

Στη συνέχεια, αλλάξτε το auth_plugin και ορίστε έναν νέο κωδικό πρόσβασης για τον λογαριασμό root όπως φαίνεται:

ALTER USER 'root@localhost' IDENTIFIED WITH mysql-native_password BY 'password';

Η αλλαγή της προσθήκης ελέγχου ταυτότητας θα σας επιτρέψει να συνδεθείτε στον διακομιστή σας.

Στη συνέχεια, ξεπλύνετε τα δικαιώματα για να ενημερώσετε τους πίνακες επιχορήγησης:

FLUSH PRIVILEGES;

Τέλος, βγείτε από το τερματικό και προσπαθήστε να συνδεθείτε:

$ mysql -u root -p


Λύση 2 - Μη αυτόματη επεξεργασία του αρχείου διαμόρφωσης

Εάν το σφάλμα παραμένει, ίσως χρειαστεί να επεξεργαστείτε το αρχείο διαμόρφωσης MySQL. Στις περισσότερες περιπτώσεις, βρίσκεται με το όνομα my.cnf στους καταλόγους /etc ή /etc/mysql.

Εντοπίστε αυτό το αρχείο στο φάκελο εγκατάστασης MySQL για χρήστες Windows και Mac.

Εάν το αρχείο δεν υπάρχει, δημιουργήστε το.

Ανοίξτε το αρχείο με τον επεξεργαστή κειμένου σας και εντοπίστε το μπλοκ mysqld.

$ nano /etc/mysql/my.cnf

Στο μπλοκ [mysqld], προσθέστε την ακόλουθη καταχώρηση.

skip-grant-tables

Κλείστε και αποθηκεύστε το αρχείο.

Στη συνέχεια, επανεκκινήστε τον διακομιστή MySQL και συνδεθείτε.

$ sudo service mysql restart

$ mysql -u root -p

Μόλις συνδεθείτε, ξεπλύνετε τα δικαιώματα και ορίστε έναν νέο κωδικό πρόσβασης:

FLUSH PRIVILEGES;

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

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

Μόλις ολοκληρωθεί, επεξεργαστείτε το αρχείο my.cnf και αφαιρέστε την καταχώριση που προσθέσαμε νωρίτερα.

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


Λύση 3 – Εκκίνηση MySQL σε ασφαλή λειτουργία

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

Ξεκινήστε σταματώντας τον MySQL Server.

$ sudo service mysql stop

Στη συνέχεια, ξεκινήστε τη MySQL χωρίς έλεγχο ταυτότητας ως?

$ mysqld_safe --skip-grant-tables &

Στη συνέχεια, ξεκινήστε τη MySQL χωρίς έλεγχο ταυτότητας ως?

$ mysqld_safe --skip-grant-tables &

Η εντολή θα ξεκινήσει τον διακομιστή στο παρασκήνιο ως εργασία.

word1.png

Μόλις εκτελεστεί το daemon (με τον έλεγχο ταυτότητας απενεργοποιημένο), ανοίξτε ένα νέο τερματικό και εκτελέστε:

$ mysql -u root -p

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

Μόλις συνδεθείτε, ξεπλύνετε τα δικαιώματα και ορίστε έναν νέο κωδικό πρόσβασης ως:

FLUSH PRIVILEGES;

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

Κλείστε τη συνεδρία και επανεκκινήστε τη MySQL.

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


Κλείσιμο

Σε αυτό το άρθρο, καλύψαμε τρεις κύριες μεθόδους επίλυσης του

"mysql access denied for user 'root@localhost'" error.

Ελπίζουμε ότι αυτό το σεμινάριο σας βοήθησε να επιλύσετε αυτό το σφάλμα.
 
Top Bottom