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

Я попытался развернуть веб-приложение на моем сервере, и я получаю это исключение базы данных 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)

Ответы [ 12 ]

20 голосов
/ 21 мая 2011

Вам нужно предоставить доступ к root от localhost. Проверьте эту справку по Ubuntu

8 голосов
/ 13 сентября 2013

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

mysql -uroot

тогда вы можете проверить другого пользователя и хост после входа в систему, используя

select user,host,password from mysql.user;
6 голосов
/ 10 октября 2012

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

2 голосов
/ 29 сентября 2015

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

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

  1. Подключение к MySQL от имени root

    mysql -u root -p
    

    затем введите свой корневой пароль MySQL;

  2. Выбор базы данных;

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

  4. Создать дополнительную запись для пользователя 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;
    
  5. Дополнительно к этому вы можете выполнить mysql_upgrade -u -p чтобы увидеть, все ли в порядке.

1 голос
/ 08 марта 2018

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

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

Шаг 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: Изменение корневого пароля

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 является надежным и надежным, и храните его в надежном месте.

1 голос
/ 07 мая 2013

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

0 голосов
/ 14 августа 2017

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

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

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

0 голосов
/ 07 февраля 2017

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

0 голосов
/ 09 августа 2014

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

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

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

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

0 голосов
/ 24 апреля 2014

Обновление Пользователь Таблица в 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

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