ПОМИЛКА 1698 (28000): Доступ заборонено для користувача 'root'@'localhost'
Я встановлюю новий сервер і продовжую стикатися з цією проблемою.
Коли я намагаюся увійти в базу даних MySQL з правами користувача root, я отримую помилку:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Не має значення, чи підключаюся я через термінал (SSH), через PHPMyAdmin або MySQL-клієнт, наприклад, Navicat. Всі вони зазнають невдачі.
Я подивився в таблицю mysql.user і отримав наступне:
+------------------+-------------------+
| user | host |
+------------------+-------------------+
| root | % |
| root | 127.0.0.1 |
| amavisd | localhost |
| debian-sys-maint | localhost |
| iredadmin | localhost |
| iredapd | localhost |
| mysql.sys | localhost |
| phpmyadmin | localhost |
| root | localhost |
| roundcube | localhost |
| vmail | localhost |
| vmailadmin | localhost |
| amavisd | test4.folkmann.it |
| iredadmin | test4.folkmann.it |
| iredapd | test4.folkmann.it |
| roundcube | test4.folkmann.it |
| vmail | test4.folkmann.it |
| vmailadmin | test4.folkmann.it |
+------------------+-------------------+
Як бачите, root повинен мати доступ.
Сервер досить простий, оскільки я намагався налагодити його роботу протягом деякого часу...
Він працює під управлінням Ubuntu 16.04.1 LTS з Apache, MySQL та PHP, що дозволяє розміщувати на ньому веб-сайти, та iRedMail 0.9.5-1, що дозволяє розміщувати на ньому пошту.
Вхід в базу даних MySQL працює нормально до того, як я встановлюю iRedMail. Я також спробував, просто встановити iRedMail, але потім root, також не працює ...
Якщо хтось може сказати мені, як вирішити проблему входу в MySQL або як встановити iRedMail поверх існуючої інсталяції MySQL. І так, я спробував Поради щодо встановлення, і я не можу знайти ці змінні в конфігураційних файлах.
У деяких системах, таких як Ubuntu, mysql за замовчуванням використовує UNIX auth_socket plugin.
В основному це означає, що db_користувачі, що використовують його, будуть "авторизуватися" за повноваженнями системного користувача. Ви можете перевірити, чи налаштований Ваш
root
користувач таким чином, виконавши наступне:Як видно із запиту, користувач
root
використовує плагінauth_socket
.Вирішити цю проблему можна 2 способами:
db_user
з вашимystem_user
(рекомендується)Варіант 1:
Варіант 2: (замініть YOUR_SYSTEM_USER на ваше ім'я користувача)
Пам'ятайте, що якщо ви використовуєте варіант #2, вам доведеться підключатися до mysql від імені вашого системного користувача (
mysql -u YOUR_SYSTEM_USER
)Примітка: У деяких системах (наприклад, Debian stretch) плагін 'auth_socket' називається 'unix_socket', тому відповідна SQL команда повинна бути:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
.Оновлення: З коментаря @andy здається, що mysql 8.x.x оновив/замінив
auth_socket
дляcaching_sha2_password
У мене немає налаштувань системи з mysql 8.x.x, щоб перевірити це, однак наведені вище кроки повинні допомогти вам зрозуміти проблему. Ось відповідь:Однією зі змін, починаючи з MySQL 8.0.4, є те, що новим плагіном автентифікації за замовчуванням є 'caching_sha2_password'. Новий 'YOUR_SYSTEM_USER' буде мати цей плагін авторизації і тепер ви можете увійти в систему з оболонки bash за допомогою "mysql -u YOUR_SYSTEM_USER -p" і вказати пароль для цього користувача у відповідному запиті. Немає необхідності в кроці &quo ;UPDATE user SET plugin&quo ;. Оновлення плагіна за замовчуванням до версії 8.0.4 див. за посиланням https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/.
Я б запропонував прибрати з'єднання Mysql -
ОНОВЛЕННЯ-Це для Mysql версії 5.5, якщо ваша версія відрізняється, будь ласка, змініть перший рядок відповідно
І встановіть знову, але цього разу встановіть пароль root самостійно. Це заощадить багато зусиль.
Ви хочете отримати доступ до MySQL від імені користувача root, але ви не надаєте правильний пароль root.
Якщо вам потрібно встановити новий пароль для root, на сайті MySQL є чудова документація про те, як це зробити: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Я не буду показувати процес тут, тому що документація по MySql за вищевказаним посиланням є чіткою та зрозумілою.