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.