MySQL error 1045 - статті

Автор:Василь Лук'янчиков , vl (at) sqlinfo (dot) ru

Статистика форуму SQLinfo показує, що однією з найпопулярніших проблем є помилка mysql №1045 (помилка доступу). Текст помилки містить ім'я користувача, якому відмовлено у доступі, комп'ютер, з якого здійснювалося підключення, а також ключове слово YES або NO, які показують чи використовувався пароль або була спроба здійснити підключення з порожнім паролем.

Причина виникнення помилки 1045

Як не банально, але єдина причина це неправильна комбінація користувача та пароля. Зверніть увагу, йдеться про комбінацію користувача та пароль, а не ім'я користувача та пароль. Це дуже важливий момент, тому що в MySQL користувач характеризується двома параметрами: ім'ям та хостом, з якого він може поводитися. Синтаксично записується як 'ім'я користувача'@'ім'я хоста'.

Таким чином, причина виникнення MySQL error 1045 – неправильна комбінація трьох параметрів: імені користувача, хоста та пароля.

Зауваження:Важливо розуміти, що в базі не існує просто користувача із заданим ім'ям (наприклад, root), а існує або користувач з ім'ям root, який має право підключатися із заданого хоста (наприклад, root@localhost) або навіть кілька різних користувачів з ім'ям root ([email protected], [email protected], root@'мій домашній ip' і т.д.) кожен зі своїм паролем та правами.

приклади. 1) Якщо ви не вказали у явному вигляді ім'я хоста

2) Іншою першопричиною помилки mysql 1045 може бути неправильне використання лапок.

4) Акаунт з порожнім ім'ям користувача трактується сервером MySQL як анонімний, тобто. дозволяє підключатись користувачеві з довільним ім'ям або без вказівки імені.Наприклад, ви створили користувача @localhost з порожнім паролем, щоб кожен міг підключитися до бази. Однак, якщо при підключенні ви вкажіть пароль, відмінний від порожнього, то отримаєте помилку 1045. Як говорилося раніше, потрібно збіг трьох параметрів: імені користувача, хоста та пароля, а пароль у даному випадку не збігається з тим, що в базі.

Що робити?

По-перше, потрібно переконатися, що ви використовуєте правильні ім'я користувача та пароль. Для цього потрібно підключитися до MySQL з правами адміністратора (якщо помилка 1045 не дає такої можливості, то потрібно перезапустити сервер MySQL в режимі --skip-grant-tables), переглянути вміст таблиці user службової бази mysql, в якій зберігається інформація про користувачів, та за необхідності відредагувати її.

Якщо спочатку була помилка:

Екзотичний приклад. Встановлюєте новий пароль для root@localhost в режимі --skip-grant-tables, однак після перезавантаження сервера, як і раніше, виникає помилка при підключенні через консольний клієнт: ERROR 1045 ( 28000 ) : Access denied for user 'root' @ 'localhost ' ( using password: YES ) Виявилося, що було встановлено два сервери MySQL, налаштованих на один порт.

phpmyadmin

При відкритті у браузері phpmyadmin отримуєте повідомлення:

Error MySQL said:

#1045 - Access denied for user 'root'@'localhost' (using password: NO) Connection для controluser як визначено у вашому налаштуванні failed. phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. Ви повинні скористатися host, username і password в налаштуваннях і зробити помилку, що вони відповідають інформацією, що ведеться до Administrator of MySQL Server.

Встановлення нової версії

Встановлюєте нову версію MySQL, але вНаприкінці при завершенні конфігурації випадає помилка:

Це відбувається тому, що раніше у вас стояв MySQL, який ви видалили без знесення самих баз. Якщо ви не пам'ятаєте старий пароль і вам потрібні ці дані, виконайте встановлення нової версії без зміни пароля, а потім зміните пароль вручну через режим --skip-grant-tables.