MySql ERROR 1045 (28000): доступ запрещен для пользователя 'root' @'localhost' (с использованием пароля: НЕТ)
Я попробовал несколько решений из StackOverflow, но не имел никакого успеха. Я нахожусь в Mac OSX (Sierra 10.12.3), пытаясь создать новую базу данных и пользователя. От терминала я введите:
mysql -u root
который выводит эту ошибку:
ОШИБКА 1045 (28000): Доступ запрещен для пользователя 'root' @'localhost' (с использованием пароля: НЕТ)
Чтобы попробовать и разрешить это, я остановил mysql из "Системных настроек", затем с терминала, набранного:
sudo mysqld_safe —skip-grant-tables
Я открыл вторую вкладку и ввел:
mysql -u root
Затем из mysql:
update mysql.user set password_expired = 'N', authentication_string=PASSWORD('newpassword') where user = 'root';
flush privileges;
Затем перезагрузите компьютер (убить процесс с помощью CMD + C не работает). После перезапуска, попытка mysql -u root
по-прежнему вызывает ту же ошибку.
Я могу получить доступ к mysql через клиент MySQL и пользователь без полномочий root.
Любая помощь приветствуется.
Ответы
Ответ 1
Просто для подтверждения: вы уверены, что используете MySQL 5.7, а не MySQL 5.6 или более раннюю версию. И в столбце плагина содержится "mysql_native_password". (До MySQL 5.7 хэш пароля хранился в столбце с именем password. Начиная с MySQL 5.7, столбец пароля удаляется, а пароль хранится в столбце authentication_string.) И вы также проверили содержимое строки аутентификации соответствует возврату из PASSWORD ('mysecret'). Кроме того, есть ли причина, по которой мы используем DML для таблицы mysql.user вместо использования синтаксиса SET PASSWORD FOR? - spencer7593
Итак, просто убедитесь, что в столбце плагина содержится "mysql_native_password".
Не моя работа, но я прочитал комментарии и заметил, что это было указано как ответ, но пока не было опубликовано как возможный ответ.
Ответ 2
По соображениям безопасности mysql -u root не работает, пока вы не передадите команду -p, поэтому попробуйте сделать это ниже.
mysql -u root -p[Enter]
//enter your localhost password
Ответ 3
Вы должны запустить mysql с помощью xampp-controle.exe в папке XAMPP. После этого логин:
mysql -u root
Ответ 4
mysql -u root -p;
И mysql запросит пароль
Ответ 5
Возможно ли, что пароль root не так, как вы думаете? Вы проверили файл /root/.mysql_secret для пароля? Это местоположение по умолчанию для автоматического пароля root, который генерируется начиная с версии 5.7.
cat /root/.mysql_secret
Ответ 6
просто используйте:
$ sudo mysql
без параметра -u root.
Ответ 7
Если вам почему-то нужно пропустить приглашение пароля, вы можете ввести пароль в команде (Dangerous)
mysql -u root --password=secret
Ответ 8
Попробуйте это (в Windows, я не знаю, как в других), если вы изменили пароль, теперь не работают.
1) убить mysql
2) резервная копия/mysql/папка с данными
3) перейти в папку /mysql/backup
4) копировать файлы из /mysql/backup/mysql в папку /mysql/data/mysql (переписать)
5) запустите mysql
В моем XAMPP на Win7 он работает.