Mysql 1045 access denied for user

Thank you for reading this post, don't forget to subscribe!

При под­клю­че­нии к MySQL, ERROR 1045 (28000): Access denied for user озна­ча­ет невер­ную ком­би­на­цию име­ни поль­зо­ва­те­ля и/или хоста и/или паро­ля. При­чин воз­ник­но­ве­ния несколько.

Localhost и 127.0.0.1

Если вы уве­ре­ны, что вве­ден­ная ком­би­на­ция пользователь/пароль вер­на, то сле­ду­ю­щим шагом будет про­вер­ка адре­са. Localhost соот­вет­ству­ет IP-адре­су 127.0.0.1, а поль­зо­ва­те­ли 'user'@'127.0.0.1' и 'user'@'localhost' вза­и­мо­за­ме­ня­е­мы. Вот толь­ко для каж­до­го из них мож­но задать отдель­ный пароль, а при вхо­де будет выби­рать­ся поль­зо­ва­тель, кото­рый нахо­дит­ся выше в таб­ли­це mysql.user.

Не указан хост в явном виде

Воз­мож­но при созда­нии поль­зо­ва­те­ля не был ука­зан хост:

# Про­бле­ма так­же может появить­ся при выда­че прав GRANT ALL

В этом слу­чае будет создан поль­зо­ва­тель 'user'@'%', а при попыт­ке под­клю­че­ния локаль­но появит­ся ошиб­ка, так как поль­зо­ва­те­ля 'user'@'localhost' не существует.

Использование кавычек

Еще одна неяв­ная при­чи­на ошиб­ки — непра­виль­ное исполь­зо­ва­ние кавычек:

# Будет создан поль­зо­ва­тель 'user@localhost'@'%'

Анонимный (пустой) пользователь

Нали­чие “пусто­го” поль­зо­ва­те­ля ''@'localhost' или ''@'127.0.0.1' — самая неоче­вид­ная при­чи­на про­бле­мы. При под­клю­че­нии к БД, сер­вер в первую оче­редь про­ве­ря­ет поль­зо­ва­те­лей с явно ука­зан­ны­ми IP-адре­сом или localhost-ом, про­ве­ряя по таб­ли­це mysql.user. То есть, систе­ма попро­бу­ет под­клю­чить поль­зо­ва­те­ля 'user'@'localhost', про­ве­ряя поль­зо­ва­те­ля ''@'localhost'. В этом слу­чае и появит­ся ошиб­ка 1045: Access denied for user. Луч­шим реше­ни­ем про­бле­мы будет уда­ле­ние ано­ним­но­го юзера:

# Не забудь­те ука­зать свой хост

Пароль утерян

Если же оши­бок нет и вы уве­ре­ны, что имя поль­зо­ва­те­ля вер­ное, тогда един­ствен­ное реше­ние — сме­на пароля:

# Под­клю­че­ние под супер­поль­зо­ва­те­лем, обнов­ле­ние таб­ли­цы mysql.user

Если же уте­рян пароль супер­поль­зо­ва­те­ля, то нуж­но выпол­нить следующее:

# Уста­нов­ка ново­го root-паро­ля и обнов­ле­ние привилегий

 

Глав­ная при­чи­на ошиб­ки — несо­от­вет­ствие име­ни поль­зо­ва­те­ля, хоста и паро­ля. Так что про­ве­ряй­те учет­ные дан­ные, отклю­чай­те ано­ним­но­го поль­зо­ва­те­ля и не исполь­зуй­те root для уда­лен­но­го подключения.