Ошибка MySQL:: 'Доступ запрещен для пользователя 'root' @ 'localhost'


$ ./mysqladmin-u root-p'удалено'
Введите пароль:

mysqladmin: подключение к серверу на "localhost" не удалось ошибка:
'Доступ запрещен для пользователя 'root' @ ' localhost '(используя пароль: да)'

Как я могу это исправить?

9 67

9 ответов:

  1. Открыть И Редактировать /etc/my.cnf
  2. добавить skip-grant-tables под [mysqld]
  3. Перезапустить Mysql
  4. теперь вы можете войти в mysql, используя следующую команду mysql -u root -p
  5. выполнить mysql> flush privileges;
  6. установить новый пароль ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
  7. вернитесь к /etc / my.cnf и удалить/комментарий skip-grant-tables
  8. Перезапустить Mysql
  9. теперь вы сможете войти в систему с новым паролем mysql -u root -p

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

sudo mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

С помощью одного запроса мы меняем auth_plugin до mysql_native_password и установка пароля root в root(не стесняйтесь изменить его в запросе)

вы должны быть в состоянии войти с корнем. Более подробную информацию можно найти в документация mysql

(выход из консоли mysql с Ctrl + D или путем ввода выход)

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

Шаг 1: Определите версию базы данных

$ mysql --version

вы увидите некоторые выходные данные, как это с MySQL:

$ mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

или выводим вот так для MariaDB в:

mysql  Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

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

Шаг 2: остановка сервера баз данных

чтобы изменить пароль root, необходимо предварительно выключить сервер баз данных.

вы можете сделать это для MySQL с помощью:

$ sudo systemctl stop mysql

и MariaDB в с:

$ sudo systemctl stop mariadb

Шаг 3: перезапуск сервера баз данных без проверки разрешений

если вы запустите MySQL и MariaDB без загрузки информации о привилегиях пользователя, это позволит вам получить доступ к командной строке базы данных с правами суперпользователя без предоставления пароля. Это позволит вам получить доступ к базе не зная ее.

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

запустите базу данных без загрузки таблиц грантов или включения сети:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

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

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

$ mysql -u root

вместо этого вы сразу увидите приглашение оболочки базы данных.

MySQL Prompt

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

mysql>

MariaDB Prompt

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

MariaDB [(none)]>

теперь, когда у вас есть корневой доступ, вы можете изменить пароль root.

Шаг 4: изменение пароля Root

mysql> FLUSH PRIVILEGES;

теперь мы можем фактически изменить пароль root.

на MySQL 5.7.6 и новее а также MariaDB 10.1.20 и новее используйте следующую команду:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

на в MySQL 5.7.5 и старше а также MariaDB 10.1.20 и старше использовать:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

убедитесь в том, чтобы заменить new_password с вашим новым паролем выбора.

Примечание: если ALTER USER команда не работает, это обычно показательно о более серьезной проблеме. Тем не менее, вы можете попробовать UPDATE ... SET вместо того, чтобы сбросить пароль root.

[важно] это конкретная строка, которая исправила мою конкретную проблему:

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';

не забудьте перезагрузить таблицы после этого.

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

Query OK, 0 rows affected (0.00 sec)

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

Шаг 5: перезагрузите сервер баз данных в обычном режиме

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

для MySQL, используйте: $ sudo systemctl запуск mysql

для MariaDB, используйте:

$ sudo systemctl start mariadb
вы можете подтвердить, что новый пароль правильно работает:
$ mysql -u root -p

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

вывод

теперь у вас есть административный доступ к серверу MySQL или MariaDB восстановлен. Убедитесь, что новый пароль root, который вы выбираете, является сильным и безопасным, и держите его в безопасном месте.

для пользователей Ubuntu / Debian

выполните следующие действия для подключения от имени root (без пароля)

sudo /usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf

в вашем MySQL workbench вы можете перейти на левую боковую панель, в разделе Управление выберите "пользователи и привилегии", нажмите root под учетными записями пользователей, в правой части нажмите вкладку "ограничения учетной записи", чтобы увеличить максимальное количество запросов, обновлений и т. д., а затем нажмите вкладку "административные роли" и установите флажки, чтобы предоставить доступ к учетной записи. Надеюсь, это поможет!

Я сделал это, чтобы установить свой пароль root в начальной настройке MySQL в OSx. Откройте терминал.

sudo sh -c 'echo /usr/local/mysql/bin > /etc/paths.d/mysql'

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

sudo /usr/local/mysql/support-files/mysql.server stop
sudo mysqld_safe --skip-grant-tables

(sudo mysqld_safe --skip-grant-tables: это не сработало для меня в первый раз. Но вторая попытка была успешной.)

затем войдите в MySQL

mysql -u root

FLUSH PRIVILEGES;

изменить пароль:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

перезагрузка MySQL:

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

для новых пользователей linux это может быть сложной задачей. Позвольте мне обновить это с mysql 8(последняя версия доступна прямо сейчас-8.0.12 по состоянию на 12-Sep-2018)

  1. открыть " mysqld.cnf "конфигурационный файл at" /etc/mysql/mysql.конф.д."/
  2. добавить skip-grant-tables к следующей строке текста [mysql] и сохранить.
  3. перезапустите службу mysql как "sudo service mysql restart". Теперь ваш MySQL без каких-либо проверки подлинности.
  4. подключиться к клиент mysql (также известный как mysql-shell) как mysql-u root-p. На данный момент нет пароля для ввода.
  5. выполнить команду sql flush привилегии;
  6. сброс пароль ALTER USER 'root' @ 'localhost' идентифицируется с помощью 'MyNewPassword';
  7. Теперь давайте вернемся к нормальному состоянию; удалите эту строку "skip-grant-tables" из "mysqld.CNF" и перезапустить службу.

'Доступ запрещен для пользователя 'root' @ 'localhost' (используя пароль: да)' Эта ошибка произойдет только в том случае, если вы недавно изменили пароль, но не внесли изменений в конфигурацию.Инк.php файл phpmyadmin.

поэтому я решил свою проблему, изменив свой пароль в /XAMPP/xamppfiles/phpmyadmin / config.Инк.PHP-файл.

убедитесь, что вы запустили MySQL после загрузки.

mysql.server start

Если вы получаете следующее сообщение об ошибке: "ошибка! Сервер завершает работу без обновления PID-файла", убедитесь, что у вас нет других экземпляров MySQL.

см. ответ Томбарта:ошибка запуска сервера MySql 'сервер вышел без обновления PID-файла'