Подтвердить что ты не робот

Доступ запрещен для пользователя 'root' @'localhost' (с использованием пароля: YES) (Mysql:: Error)

Я попытался развернуть веб-приложение на моем сервере, и я получаю это исключение базы данных MySQL

Access denied for user 'root'@'localhost' (using password: YES) (Mysql::Error)

Я попытался получить доступ к базе данных из командной строки, используя mysql -u root -p Я могу выполнить все операции с базой данных.

в чем ошибка

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:771)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3649)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1176)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2558)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(DriverManager.java:620)
    at java.sql.DriverManager.getConnection(DriverManager.java:200)
    at com.mpigeon.DbConnection.DbConn(DbConnection.java:26)
    at com.mpigeon.CheckLoginHome.doGet(CheckLoginHome.java:39)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
4b9b3361

Ответ 1

Вам нужно предоставить доступ к root из localhost. Проверьте this Справка ubuntu

Ответ 2

попробуйте использовать root как..

mysql -uroot

то вы можете проверить разные пользователи и хост после входа в систему с помощью

select user,host,password from mysql.user;

Ответ 3

проверьте, что вы вводите пустое место в пароле.

Ответ 4

Я столкнулся с такой же ошибкой после обновления MySQL-сервера с 5.1.73 до 5.5.45 Есть еще один способ исправить эту ошибку.

В моем случае я смог подключиться к MySQL с использованием пароля root, но MySQL активно отказывался от GRANT PRIVILEGES любому пользователю;

  • Подключиться к MySQL как root

    mysql -u root -p
    

    затем введите свой пароль пользователя MySQL,

  • Выберите базу данных;

    use mysql;
    
  • Скорее всего, есть только одна запись для root в таблице mysql.user, позволяющая подключаться только от localhost (это было в моем случае), но по умолчанию для root должны быть две записи, одна для localhost и еще один для 127.0.0.1;

  • Создайте дополнительную запись для пользователя root с помощью Host='127.0.0.1', если она не существует;

        SET @s = CONCAT('INSERT INTO mysql.user SELECT ',
                REPLACE((SELECT GROUP_CONCAT(COLUMN_NAME) 
                         FROM INFORMATION_SCHEMA.COLUMNS
                         WHERE TABLE_NAME = 'user' AND TABLE_SCHEMA = 'mysql')
                ,"Host","'127.0.0.1'"),
                ' FROM mysql.user WHERE User="root"'); 
    
         PREPARE stmt FROM @s; 
         EXECUTE stmt;
    
  • Кроме того, вы можете выполнить mysql_upgrade -u -p чтобы убедиться, что все в порядке.

Ответ 5

Из моего ответа здесь подумал, что это может быть полезно:

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

Шаг 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 &

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

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

$ 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-доступ, вы можете изменить пароль 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 start mysql

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

$ sudo systemctl start mariadb

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

$ mysql -u root -p

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

Заключение

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

Ответ 6

Мое приложение использует Mura CMS, и я столкнулся с этой проблемой. Однако решением было несоответствие пароля между моим локальным сервером mysql и паролем в файлах конфигурации. Как только я их синхронизировал, он работал.

Ответ 7

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

Ответ 8

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

update mysql.user set password = PASSWORD('123456') where password = '';
flush privileges;

И снова попробовал от ATG CIM, предоставив пароль, и он работал нормально.

After update

http://i.stack.imgur.com/3Lchp.png

Ответ 9

У меня возникла эта проблема сегодня при установке SugarCRM (свободного CRM).

Система не смогла подключиться к базе данных с помощью пользователя root. Я мог окончательно войти в систему как root из консоли... так в чем проблема?

Я узнал, что в моей ситуации я получал точно такую ​​же ошибку, но это потому, что пароль был отправлен в mysql непосредственно из данных $_POST, другими словами, символ < из моего пароля был отправлен в mysql как &lt;, что означает, что пароль был неправильным.

Все остальное не помогло. Список пользователей в mysql был правильным, в том числе анонимным пользователем (который появляется после корневых записей.)

Ответ 10

Я много гугл, но не нашел определенного ответа на мою проблему. Я использовал KeyPass для создания надежного пароля и мог успешно использовать его в workbench mysql для подключения, но не из командной строки. Поэтому я сменил psw на простой, и он работал в командной строке. Мне удалось создать надежный пароль, который смог подключиться от терминала. Поэтому я советую, сначала попробуйте с легким паролем, прежде чем пытаться что-то делать.

Ответ 11

Я запускал UT, и я начал получать сообщения об ошибках. Я не знаю, в чем проблема. Но когда я изменил стиль кодировки в INTELLIJ на UTF8, он снова начал работать.

доступ запрещен для пользователя 'root' @'localhost' (с использованием пароля yes) спящий режим

это мой URL db.url = JDBC: MySQL://локальный: 3306/somedb useUnicode = истина & connectionCollation = utf8_general_ci & characterSetResults = utf8 & characterEncoding = utf8

Ответ 12

Эта ошибка возникает, если вы не установили пароль при установке, в этом случае mysql использует плагин unix-socket.

Но если удалить ссылку на плагин из настроек (таблица mysql.user) будет другая проблема. Это не решает проблему и создает другую проблему. Чтобы исправить удаленную ссылку и установить пароль ("PWD"), выполните следующие действия:

1) Запустите с --skip-grant-tables, как сказано выше.

Если это не работает, то добавьте строки skip-grant-tables в раздел [mysqld] файла /etc/mysql/mysql.conf.d/mysqld.cnf. Затем выполните перезапуск службы sudo в MySQL.

2) Запустите mysql -u root -p, затем (измените "PWD"):

update mysql.user 
    set authentication_string=PASSWORD("PWD"), plugin="mysql_native_password" 
    where User='root' and Host='localhost';    
flush privileges;

quit
then sudo service mysql restart. Check: mysql -u root -p.

Перед перезапуском удалите эту строку из файла mysqld.cnf, если вы ее там установили.

@bl79 является автором этого ответа, я только что разместил его, потому что он помогает!

Ответ 13

Обновить пустой пароль в таблице mysql.user mysql

use mysql;
select host,user,password from mysql.user;
update mysql.user set password = PASSWORD('123456') where password = '';
flush privileges;