Ошибка MySQL:: 'Доступ запрещен для пользователя 'root' @ 'localhost'
$ ./mysqladmin-u root-p'удалено'
Введите пароль:
mysqladmin: подключение к серверу на "localhost" не удалось ошибка:
'Доступ запрещен для пользователя 'root' @ ' localhost '(используя пароль: да)'
Как я могу это исправить?
9 ответов:
- Открыть И Редактировать
/etc/my.cnf
- добавить
skip-grant-tables
под[mysqld]
- Перезапустить Mysql
- теперь вы можете войти в mysql, используя следующую команду
mysql -u root -p
- выполнить
mysql> flush privileges;
- установить новый пароль
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
- вернитесь к /etc / my.cnf и удалить/комментарий skip-grant-tables
- Перезапустить Mysql
- теперь вы сможете войти в систему с новым паролем
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)
- открыть " mysqld.cnf "конфигурационный файл at" /etc/mysql/mysql.конф.д."/
- добавить skip-grant-tables к следующей строке текста [mysql] и сохранить.
- перезапустите службу mysql как "sudo service mysql restart". Теперь ваш MySQL без каких-либо проверки подлинности.
- подключиться к клиент mysql (также известный как mysql-shell) как mysql-u root-p. На данный момент нет пароля для ввода.
- выполнить команду sql flush привилегии;
- сброс пароль ALTER USER 'root' @ 'localhost' идентифицируется с помощью 'MyNewPassword';
- Теперь давайте вернемся к нормальному состоянию; удалите эту строку "skip-grant-tables" из "mysqld.CNF" и перезапустить службу.
'Доступ запрещен для пользователя 'root' @ 'localhost' (используя пароль: да)' Эта ошибка произойдет только в том случае, если вы недавно изменили пароль, но не внесли изменений в конфигурацию.Инк.php файл phpmyadmin.
поэтому я решил свою проблему, изменив свой пароль в /XAMPP/xamppfiles/phpmyadmin / config.Инк.PHP-файл.
убедитесь, что вы запустили MySQL после загрузки.
mysql.server start
Если вы получаете следующее сообщение об ошибке: "ошибка! Сервер завершает работу без обновления PID-файла", убедитесь, что у вас нет других экземпляров MySQL.
см. ответ Томбарта:ошибка запуска сервера MySql 'сервер вышел без обновления PID-файла'