MySQL Access заборонено для користувача "root" @ "localhost"


24

На своєму сервері щоразу, коли я намагаюся отримати доступ до MySQL, я отримую помилку:

Доступ заборонено користувачеві 'root' @ 'localhost' (використовуючи пароль: НІ)

коли я пробую, mysqladmin -u root -p passwordотримую

Доступ заборонено користувачеві 'root' @ 'localhost' (використовуючи пароль: ТАК)

Як я можу отримати доступ до MySQL на своєму сервері Ubuntu 12.04?


1
Намагайтеся уникати введення пароля як параметра в командному рядку, інші користувачі можуть знайти його за допомогою списків процесів. Набагато краще набрати його безпосередньо в програму або скористатися ключем
— Амія

Синтаксис -p passwordнеправильний, він повинен бути, -ppasswordале не рекомендується. Більш детальну інформацію: stackoverflow.com/questions/5131931 / ...
— Melebius

Перевірте цю сторінку на наявність можливих причин цієї помилки та способи її усунення. rathishkumar.in/2017/04/… . Це може вам допомогти.
— rathishDBA

Відповіді:


12

Якщо ви працюєте n localhost, просто введіть команду нижче в терміналі:

mysql -u root -p

Якщо ви використовуєте зовнішній сервер, введіть також IP-адресу хоста (xxx.xxx.xxx.xxx):

mysql -hxxx.xxx.xxx.xxx -uroot -p

Вам буде запропоновано ввести пароль, ввести його, і ви зможете отримати доступ до свого запиту MySQL.

Ви також можете переглянути цю відповідь про те, як скинути пароль MySQL.


я зайшов, але я все ще не знаю, як змінити або вибрав пароль
— user253867

У відповіді, з якою я посилався, вам потрібно 5.xв кінці замінити версію MySQL-сервера, який ви використовуєте. Я використовую 5.5, тому моя команда будеsudo dpkg-reconfigure mysql-server-5.5
— Парто

9
Отже, проблема в тому, що ОП бачить Access denied for user 'root'@'localhost'. Ви пропонуєте зателефонувати mysql -u root -p. Результат цієї команди: Access denied for user 'root'@'localhost'.
— phil294

5
sudo mysql -u root -pпрацює для мене, але mysql -u root -pні
— Іван Чорний

7

У мене з’являються ті самі симптоми, коли я оновлююсь, але для мене виправлення (після вбивства mysql та перезавантаження з --skip-grant-table, щоб увійти) - це виконати

update mysql.user set plugin = '';

Процес оновлення любить встановити цей стовпець на "unix_socket". Я не знаю, що це має досягти, але для мене це все порушує.


Це вирішило мою проблему на Ubuntu 16 LTS, випробувавши все .. дозволи, групувати користувачів. Дякую.
— onalbi

так, я запустив сценарій загартовування, і він змінив плагін, щоб mysql_socketвсе, що я був налаштований на використання PASSWORD('xxxxxx'), не працював.
— TheVillageIdiot

4

Встановіть пароль для mysql

sudo dpkg-reconfigure mysql-server-5.x

Тепер відкрийте термінал і введіть

mysql -uroot -p

введіть пароль і натисніть клавішу Enter


4

Я вирішив свою проблему з цього:

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt install mysql-server

Будьте надзвичайно відповідальні. За допомогою цього рішення ви видаляєте сервер MySql та всі його дані.


Не працює для мене.
— Іван Чорний

!! Будьте надзвичайно відповідальні. За допомогою цього рішення ви видаляєте сервер MySql і всі його дані.
— Матісс Юргеліс

4

Так само, як і Ульріх Метцгер, після оновлення машини до Ubuntu 16.04 та Mysql-сервера-5.7, я не зміг увійти з коренем, тому що pluginстовпець змінився.

Моя проблема не була вирішена з sudo dpkg-reconfigure mysql-server-5.7+ видаленням + очищення + чищення.

Мені довелося зупинити службу mysql:

# sudo service mysql stop

Потім перезапустіть демон mysql з --no-grant-tablesопцією:

# sudo mysqld_safe --no-grant-tables &

Потім в інший термінал введіть команду mysql (котра зараз не потребує автентифікації) командою mysqlта оновіть колонки паролів та плагінів за допомогою SQL UPDATE:

UPDATE mysql.user 
  SET authentication_string=PASSWORD(''), 
      plugin='mysql_native_password'
WHERE User='root' AND Host='localhost';

Нарешті, введіть mysqld_safeкоманду, перезапустіть службу mysql і підключіться до mysql нормально:

# sudo service mysql start
# mysql

2

Після оновлення з ubuntu 14.4LTS до 16.4LTS користувач root mysql не міг більше входити через неправильний запис у стовпчику плагінів таблиці mysql користувача. Оновлення встановлює значення плагіна для користувача root @ localhost для користувача auth_socket, але правильний запис повинен бути mysql_native_password , якщо ви раніше використовували шифрування рідного пароля mysql.


Це той, який працював для мене, і, здається, є коренем проблеми. Видалення та перевстановлення нічого не допоможе вирішити "проблему".
— SteveFromAccount
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.