Доступ запрещен для пользователя 'root'@'localhost' (с использованием пароля: ДА) - Нет привилегий?

Я постоянно получаю эту ошибку.

Я использую MySQL Workbench, и из того, что я нахожу, является то, что привилегии схемы root являются нулевыми. Там нет никаких привилегий на всех.

У меня проблемы с платформами, для которых используется мой сервер, и это внезапно стало проблемой.

root@127.0.0.1, очевидно, имеет выделенный доступ, но я вошел в систему как таковой, но он все равно присваивается localhost - у localhost нет привилегий.

Я сделал несколько вещей, таких как FLUSH HOSTS, FLUSH PRIVILEGES и т. Д., Но не нашел успеха ни в этом, ни в Интернете.

Как я могу получить root доступ обратно? Я нахожу это разочаровывающим, потому что когда я смотрю вокруг, люди ожидают, что у вас будет "доступ", но у меня нет доступа, поэтому я не могу войти в командную строку или что-нибудь еще и ПРЕДОСТАВИТЬ себя чему-либо.

Когда я запускаю SHOW GRANTS FOR root, это то, что я получаю взамен: Код ошибки: 1141. Для пользователя 'root' на хосте '%' такой грант не определен.

Спасибо всем, кто может оказать помощь

33 ответа

Решение

Используйте инструкции для сброса пароля root - но вместо сброса пароля root, мы будем принудительно вставлять запись в таблицу mysql.user

В файле инициализации используйте это вместо

INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD'));
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;

Если у вас есть та же проблема в MySql 5.7.+:

Access denied for user 'root'@'localhost'

это потому, что MySql 5.7 по умолчанию разрешает соединение с сокетом, что означает, что вы просто соединяетесь с sudo mysql, Если вы запускаете sql:

SELECT user,authentication_string,plugin,host FROM mysql.user;

тогда вы увидите это:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Чтобы разрешить соединение с root и паролем, обновите значения в таблице командой:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';
FLUSH PRIVILEGES;

Затем снова запустите команду выбора, и вы увидите, что она изменилась:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *2F2377C1BC54BE827DC8A4EE051CBD57490FB8C6 | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

И это все. Вы можете запустить этот процесс после запуска и завершения sudo mysql_secure_installation команда.

Мне не нравились мои пользовательские привилегии, поэтому я СУДО. (в bash << sudo установить имя пользователя и пароль) (это дает имя пользователя root и ничего не устанавливает пароль) (на Mac)

sudo mysql -uroot -p

Попробуйте следующие команды

~$ sudo /etc/init.d/mysql stop
~$ sudo mysqld_safe --skip-grant-tables &
~$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

mysql> use mysql;

mysql> update user set password=PASSWORD("root") where User='root';

mysql> flush privileges;

mysql> quit

~$ sudo /etc/init.d/mysql stop

Stopping MySQL database server: mysqld

STOPPING server from pid file /var/run/mysqld/mysqld.pid

mysqld_safe[6186]: ended

[1]+  Done                    mysqld_safe --skip-grant-tables

~$ sudo /etc/init.d/mysql start

~$ mysql -u root -p

* MySQL Community Server 5.6.35 is started
~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

Для людей, которые сталкиваются с ошибкой ниже в версии MySQL 5.7+ -

Access denied for user 'root'@'localhost' (using password: YES)
  1. Откройте новый терминал

  2. sudo /etc/init.d/mysql stop... MySQL Community Server 5.7.8-rc остановлен

  3. sudo mysqld_safe --skip-grant-tables &это пропустит все привилегии уровня привилегий и запустит mysql в безопасном режиме. Иногда процесс застревает только из-за

grep: ошибка записи: Сломанный канал 180102 11:32:28 mysqld_safe Ведение журнала в /var/log/mysql/error.log.

Просто нажмите Ctrl+Z или Ctrl+C, чтобы прервать и выйти из процесса

  1. mysql -u root

Добро пожаловать на монитор MySQL. Команды заканчиваются на; или \g. Ваш идентификатор подключения MySQL: 2 версия сервера: 5.7.8-rc MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle и / или ее филиалы. Все права защищены.

Oracle является зарегистрированным товарным знаком корпорации Oracle и / или ее филиалов. Другие наименования могут быть торговыми марками их владельцев.

Напечатайте 'помощь;' или '\h' за помощь. Введите "\c", чтобы очистить текущий оператор ввода.

  1. MySQL> use mysql;

Чтение информации о таблице для заполнения имен таблиц и столбцов Вы можете отключить эту функцию, чтобы ускорить запуск с помощью -A

База данных изменена

  1. MySQL> update user set authentication_string=password('password') where user='root';Запрос в порядке, 4 строки затронуты, 1 предупреждение (0, 03 с) Соответствующие строки: 4 Изменено: 4 Предупреждения: 1

  2. MySQL> flush privileges;Запрос в порядке, затронуто 0 строк (0, 00 с)

  3. MySQL> quitдо свидания

  4. sudo /etc/init.d/mysql stop

..180102 11:37:12 mysqld_safe mysqld из файла pid /var/run/mysqld/mysqld.pid завершен. * MySQL Community Server 5.7.8-rc остановлен arif@ubuntu:~$ sudo /etc/init.d/mysql start .. * MySQL Community Server 5.7.8-rc запущен

  1. mysql -u root -p

    Введите пароль:

    Добро пожаловать на монитор MySQL. Команды заканчиваются на; или \g. Ваш идентификатор подключения MySQL: 2 версия сервера: 5.7.8-rc MySQL Community Server (GPL)

после версии mysql 5.7+ пароль столбца заменяется именем authentication_string из таблицы mysql.user.

надеюсь, что эти шаги помогут никому, спасибо.

Я использовал ubuntu 18 и просто установил MySQL (пароль:root) с помощью следующих команд.

sudo apt install mysql-server
sudo mysql_secure_installation

Когда я попытался войти в систему с обычным пользователем ubuntu, у меня возникла эта проблема.

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Но я смог войти в MySQL через суперпользователя. Используя следующие команды, я смог войти в систему через обычного пользователя.

sudo mysql    
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
exit;

Затем вы сможете войти в Mysql с обычной учетной записью.

Если вы получаете эту ошибку в Workbench, но можете войти в систему с терминала, выполните следующие действия.

Сначала просто войдите в систему с вашим текущим паролем:

sudo mysql -u root -p

Затем измените свой пароль, потому что низкий уровень надежности пароля иногда дает ошибку.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-strong-password';

FLUSH PRIVILEGES;

Затем просто выйдите и снова войдите с новым паролем:

quit

sudo mysql -u root -p

После успешного входа в систему введите команду:

use mysql;

Должно появиться сообщение вроде "База данных изменена", затем введите:

UPDATE user SET plugin='mysql_native_password' WHERE User='root';

После этого типа:

UPDATE mysql.user set authentication_string=PASSWORD('new-strong-password') where user='root';

Затем введите:

FLUSH PRIVILEGES;

Затем просто выйдите:

quit

Теперь попробуйте войти в систему с новым паролем на РАБОЧЕМ МЕСТЕ. Надеюсь, это сработает. Спасибо.

Простой способ сбросить пароль root в системах Linux:

sudo dpkg-reconfigure mysql-server-5.5

Оформить заказ некоторые другие причины для отказа в доступе:

https://dev.mysql.com/doc/refman/5.7/en/problems-connecting.html

В моем случае я обнаружил эту ошибку после новой установки mysql на Mac OS Big Sur.

Что я сделал, чтобы исправить это: я щелкнул логотип Apple, зашел в системные настройки и затем щелкнул mysql.

В открывшемся окне настроек есть кнопка инициализации базы данных, я нажимаю на нее, а затем, когда я снова пытаюсь получить доступ, она решается.

Я столкнулся с этой проблемой при установке Testlink на сервер Ubuntu, я выполнил эти шаги

mysql -u root
use mysql;
update user set password=PASSWORD("root") where User='root';
flush privileges;
quit

Теперь остановите экземпляр и начните снова, т.е.

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

В mysql 5.7 поле пароля было заменено на authentic_string, так что вместо этого вы должны сделать что-то подобное

update user set authentication_string=PASSWORD("root") where User='root';

Посмотрите эту ссылку Пользовательская БД MySQL не имеет столбцов паролей - Установка MySQL на OSX

      alter user 'root'@'localhost' identified with mysql_native_password by '$your_password$';

это сработало для меня.

примечание: например, используйте надежный пароль

      alter user 'root'@'localhost' identified with mysql_native_password by 'root';

Ну, самый простой способ сбросить пароль root:

  • перезапустите mysqld - опция -skip-grant-tables. Это позволяет любому подключаться без пароля и со всеми привилегиями. Поскольку это небезопасно, вы можете использовать --skip-grant-tables в сочетании с --skip-network для предотвращения подключения удаленных клиентов.

  • Подключитесь к серверу mysqld с помощью этой команды:

  • shell> mysql Выполните следующие операторы в клиенте mysql. Замените пароль на пароль, который вы хотите использовать.

  • mysql> UPDATE mysql.user SET Password = PASSWORD ('MyNewPass') -> WHERE User = 'root'; mysql> FLUSH PRIVILEGES;

  • Остановите сервер, затем перезапустите его как обычно (без параметров --skip-grant-tables и --skip-network).

Исходная документация Mysql и личный опыт:

http://dev.mysql.com/doc/refman/5.6/en/resetting-permissions.html

В моем случае:

  • Я установил аутентификацию плагина на "" (пусто), и я не могу запустить сервер mysql:

РЕШЕНИЕ:

  1. нано /etc/mysql/my.cnf
  2. редактировать:

[mysqld]

пропустить столы грантов

  1. перезапуск службы mysql
  2. mysql -u корень
  3. использовать mysql
  4. ОБНОВЛЕНИЕ mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root'
  5. флеш привилегии

Я решил ту же проблему, запустив Workbench от имени администратора.

... Я думаю, это из-за ограничений на компьютеры компании, в моем случае...

Я работал над "Отказано в доступе для пользователя" root "@" localhost "(используя пароль: YES) в течение нескольких часов, я нашел следующее решение,

The answer to this problem was that in the my.cnf located within
/etc/mysql/my.cnf

the line was either 
bind-address = 127.0.0.1 
            (or)
bind-address = localhost
            (or)
bind-address = 0.0.0.0

I should prefer that 127.0.0.1

I should also prefer 0.0.0.0, it is more flexible 
because which will allow all connections

Я сделал это-

      sudo mysql -p

Затем я дал пароль для своей учетной записи root (пароль, который мы используем для sudo), затем он попросил ввести пароль, и я дал пароль для терминала mysql (новый пароль).

Пароль MySQL по умолчанию для root назначается в зависимости от того, как вы установили MySQL.

Если вы установили его из репозитория MySQL Yum, репозитория MySQL SUSE или пакетов RPM, загруженных непосредственно из Oracle, вы можете получить пароль, используя следующую команду:

      sudo grep 'temporary password' /var/log/mysqld.log

У меня была та же проблема, но она была вызвана тем, что я использовал сервер mysql на 32 (бит), а верстак работал на 64(бит) версии. сервер и верстак должны иметь одинаковую версию.

Xpress

Для меня я использовал MYSQLWorkbench, а порт был 3306 MAMP с использованием 8889

Для окон:-

Если конфигурация экземпляра дает сбой с аналогичной проблемой и если вы не можете войти в учетную запись root.

Шаги, которые я выполнил, чтобы решить проблему:-

  • Остановите службу MySql, если она запущена.
  • Удалите MySql, используя опцию «удалить» в мастере установки.
  • Если сервис MySql не удален из сервисов,

sc удалить <MYSQL_SERVICE_NAME>

  • Удалите все данные, содержащиеся в папке MySql («Программные файлы», «Программные данные» или указанный вами пользовательский каталог установки).
  • Удалите путь MySql из переменной среды.
  • Отключить брандмауэр виндовс.
  • Переустановите и настройте учетную запись root с новым паролем.

Я не думаю, что вы должны избежать --init-file параметр:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\\mysql-init.txt

Должно быть:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\mysql-init.txt

Я решил ту же проблему, используя следующий sql и перезапустив сервер MySQL:

update mysql.user set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y',Create_tablespace_priv='Y'
where user='root';

У меня такая же проблема. Впервые в MySQL. Я полностью заблудился. В рабочей среде я запускаю SHOW GRANTS FOR root; Мои результаты: Код ошибки: 1141. Нет такого разрешения, определенного для пользователя «root» на хосте «%».

^^ Это правильно?

Мне удалось остановить MySQL от сервисов. Не знаю, как сделать следующее, что было предложено в ответах выше:«перезапустите сервер с помощью --skip-grant-table и войдите в систему с любым пользователем и предоставьте полные привилегии root и перезапустите сервер снова без указанной выше опции»

sudo mysql -u root -p

1- CREATE USER '**root**'@'localhost' IDENTIFIED BY '**1234**';

2- GRANT ALL PRIVILEGES ON *.* TO '**root**'@'localhost' WITH GRANT OPTION;

причина может отсутствовать в файле mysqld в / var / run / mysqld

      sudo service mysql stop
sudo mysqld_safe --skip-grant-tables
sudo service mysql start

если файл не выходит, создайте файл

      mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld

проверьте, теперь вы можете войти в систему mysql -uroot -p123, в противном случае выполните

      sudo mysql -u root
use mysql;
show tables;
describe user;
update user set authentication_string=password('1111') where user='root';
FLUSH PRIVILEGES;
exit;
mysql -uroot -p123

ссылка - mysqld_safe Каталог '/var / run / mysqld' для файла сокета UNIX не существует

просто используйте свой предыдущий пароль

      sudo mysql -p

если у тебя нет пароля

      sudo mysql -uroot -p

Попробуйте следующие шаги, чтобы преодолеть эту проблему:

  1. Откройте терминал / командную строку и перейдите в папку bin папки установки MySQL. Затем запустите команду mysqld --console,
  2. Если вы можете увидеть эту строку 171010 14:58:22 [Note] --secure-file-priv установлен в NULL. Операции, связанные с импортом и экспортом данных, отключаются после выполнения вышеуказанной команды из командной строки.
  3. Затем вам нужно проверить, что mysqld заблокирован брандмауэром Windows или другой программой.
  4. Если он заблокирован брандмауэром Windows, необходимо разблокировать его и сохранить настройки.
  5. Чтобы разблокировать mysqld или же mysql приложение, выполните следующие действия:
    1. Перейдите в командную строку и введите wf.msc открыть настройки брандмауэра.
    2. Нажмите Разрешить приложение или функцию через брандмауэр Windows.
    3. Проверить mysqld или же mysqld экземпляры доступны в списке и установите флажок для домена, общего и частного и сохраните настройки.
  6. Вернитесь в папку bin и повторите команду, начиная с шага 1.
  7. Он должен работать нормально и не показывать никаких ошибок.

Теперь должна быть возможность без проблем запускать консоль MySQL!

Пожалуйста, проверьте свой пароль на веб-странице входа в phpmyadmin на локальном хосте, если он правильный, тогда он будет работать без изменения ваших учетных данных.

единственное, что сработало, это sudo mysqlс последующим добавлениемskip-grant-tablesв разделе [mysqld] файла /etc/my.cnf — Ubuntu Mysql 5.5

Другие вопросы по тегам