Доступ запрещен для пользователя "root" @ "localhost" (с использованием пароля: YES) - Нет привилегий?

Я постоянно получаю эту ошибку.

Я использую mySQL Workbench, и я обнаружил, что привилегии корневой схемы не установлены. Там нет никаких привилегий вообще.

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

[email protected], по- видимому, имеет большой доступ, но я вошел в систему как таковой, но он все равно назначается localhost - у localhost нет привилегий.

Я сделал несколько вещей, таких как FLUSH HOSTS, FLUSH PRIVILEGES и т.д., Но не нашел успеха ни в этом, ни в Интернете.

Как я могу получить root доступ обратно? Я нахожу это разочаровывающим, потому что когда я смотрю вокруг, люди ожидают, что у вас будет "доступ", но у меня нет доступа, поэтому я не могу войти в командную строку или что-нибудь еще и GRANT себя чему-либо.

При запуске SHOW GRANTS FOR root вот что я получаю взамен:

Код ошибки: 1141. Для пользователя 'root' на хосте '%' не определено такое разрешение.

Ответы

Ответ 1

Используйте инструкции по сбросу пароля root - но вместо того, чтобы сбросить пароль root, мы намеренно сделаем INSERT запись в Таблица mysql.user

В файле инициализации используйте это вместо

INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD'));
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;

Ответ 2

Если у вас есть та же проблема в MySql 5.7. +:

Access denied for user 'root'@'localhost'

Это потому, что MySql 5.7 по умолчанию разрешает соединение с сокетом, а это значит, что вы просто соединяетесь с sudo mysql. Если вы запускаете sql:

SELECT user,authentication_string,plugin,host FROM mysql.user;

тогда вы увидите это:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Чтобы разрешить соединение с пользователем root и паролем, обновите значения в таблице с помощью команды:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';
FLUSH PRIVILEGES;

Затем снова запустите команду select, и вы увидите, что она изменилась:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *2F2377C1BC54BE827DC8A4EE051CBD57490FB8C6 | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

И это оно. Вы можете запустить этот процесс после запуска и завершения команды sudo mysql_secure_installation.

Ответ 3

Мне не нравилась моя пользовательская привилегия, поэтому я СДЕЛАТЬ ее. (в bash < sudo заданный пользователь и пароль) (это дает имя пользователя root и устанавливает пароль ни к чему) (На Mac)

sudo mysql -uroot -p

Ответ 4

Попробуйте выполнить следующие команды

~$ sudo /etc/init.d/mysql stop
~$ sudo mysqld_safe --skip-grant-tables &
~$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

mysql> use mysql;

mysql> update user set password=PASSWORD("root") where User='root';

mysql> flush privileges;

mysql> quit

~$ sudo /etc/init.d/mysql stop

Stopping MySQL database server: mysqld

STOPPING server from pid file /var/run/mysqld/mysqld.pid

mysqld_safe[6186]: ended

[1]+  Done                    mysqld_safe --skip-grant-tables

~$ sudo /etc/init.d/mysql start

~$ mysql -u root -p

* MySQL Community Server 5.6.35 is started
~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> 

Ответ 5

для людей, которые сталкиваются с ошибкой в ​​mysql версии 5.7+ -

Access denied for user 'root'@'localhost' (using password: YES)
  • Открыть новый терминал

  • sudo /etc/init.d/mysql stop ... Сервер MySQL Community Server 5.7.8-rc остановлен

  • sudo mysqld_safe --skip-grant-tables & это пропустит все привилегии уровня гранта и запустит mysql в безопасном режиме Иногда процесс застрял только из-за

grep: ошибка записи: сломанная труба 180102 11:32:28 mysqld_safe Вход в '/var/log/mysql/error.log'.

Просто нажмите Ctrl + Z или Ctrl + C, чтобы прервать и завершить процесс

  1. mysql -u root

Добро пожаловать на монитор MySQL. Команды заканчиваются; или \g. Ваш идентификатор соединения с MySQL равен 2 Версия сервера: 5.7.8-rc Сервер сообщества MySQL (GPL)

Авторское право (c) 2000, 2015, Oracle и/или его аффилированные лица. Все права защищены.

Oracle является зарегистрированным товарным знаком корпорации Oracle и/или ее ветки. Другие названия могут быть товарными знаками соответствующих владельцы.

Введите "help"; или '\ h' для получения справки. Введите '\ c', чтобы очистить текущую инструкцию ввода.

  1. mysql > use mysql;

Чтение табличной информации для заполнения имен таблиц и столбцов Вы можете отключить эту функцию, чтобы быстрее запустить с помощью -A

Изменена база данных

  1. mysql > update user set authentication_string=password('password') where user='root'; Запрос ОК, 4 строки затронуты, 1 предупреждение (0,03 сек) Соответствие строк: 4 Изменено: 4 Предупреждения: 1

  2. mysql > flush privileges; Query OK, 0 строк (0.00 sec)

  3. mysql > quit Bye

  4. sudo /etc/init.d/mysql stop

.. 180102 11:37:12 mysqld_safe mysqld из pid файла /var/run/mysqld/mysqld.pid закончился ,  * Сервер MySQL Server 5.7.8-rc остановлен arif @ubuntu: ~ $sudo/etc/init.d/mysql start ..  * Начат запуск MySQL Server Server 5.7.8-rc

  1. mysql -u root -p

    Введите пароль:

    Добро пожаловать на монитор MySQL. Команды заканчиваются; или \g. Ваш идентификатор соединения с MySQL равен 2 Версия сервера: 5.7.8-rc Сервер сообщества MySQL (GPL)

после версии mysql 5.7+ пароль столбца заменен именем authentication_string из таблицы mysql.user.

надеюсь, что эти шаги помогут кому угодно, спасибо.

Ответ 7

Я столкнулся с этой проблемой при установке Testlink на сервер Ubuntu, я выполнил следующие действия

mysql -u root
use mysql;
update user set password=PASSWORD("root") where User='root';
flush privileges;
quit

Теперь остановите экземпляр и начните снова, т.е.

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

Ответ 9

Ну, самый простой способ для пароля reset root:

  • перезапустить mysqld --skip-grant-tables. Это позволяет любому подключаться без пароля и со всеми привилегиями. Потому что это небезопасно, вы можете использовать -skip-grant-tables совместно с -skip-networking для предотвращения подключения удаленных клиентов.

  • Подключитесь к серверу mysqld с помощью этой команды:

  • shell > mysql Выполните следующие инструкции в mysql-клиенте. Замените пароль на пароль, который вы хотите использовать.

  • mysql > UPDATE mysql.user SET Password = PASSWORD ('MyNewPass')      - > WHERE User = 'root'; mysql > ПРИВИЛЕГИИ FLUSH;

  • Остановите сервер, затем перезапустите его в обычном режиме (без -skip-grant-tables и -skip-network options).

Документация Source Mysql и личный опыт:

http://dev.mysql.com/doc/refman/5.6/en/resetting-permissions.html

Ответ 10

Я работал над Access Denied для пользователя "root" @ "localhost" (используя пароль: YES) в течение нескольких часов, я нашел следующее решение,

The answer to this problem was that in the my.cnf located within
/etc/mysql/my.cnf

the line was either 
bind-address = 127.0.0.1 
            (or)
bind-address = localhost
            (or)
bind-address = 0.0.0.0

I should prefer that 127.0.0.1

I should also prefer 0.0.0.0, it is more flexible 
because which will allow all connections

Ответ 11

Я использовал Ubuntu 18 и просто установил MySQL (пароль: root) с помощью следующих команд.

sudo apt install mysql-server
sudo mysql_secure_installation

Когда я пытался войти в систему с обычным пользователем Ubuntu, это вызывало у меня эту проблему.

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

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

sudo mysql    
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
exit;

Тогда вы сможете войти в Mysql с обычной учетной записью.

enter image description here

Ответ 12

Для устранения этой проблемы выполните следующие действия:

  • Откройте команду терминала/командной строки и перейдите в папку bin в установочной папке MySQL. Затем запустите команду mysqld --console.
  • Если вы видите, что для строки 171010 14:58:22 [Note] --secure-file-priv установлено значение NULL. Операции, связанные с импортом и экспортом данных, отключены после выполнения указанной команды из командной строки.
  • Затем вам нужно проверить, что mysqld либо заблокирован брандмауэром Windows, либо другой программой.
  • Если он заблокирован брандмауэром Windows, необходимо разблокировать его и сохранить настройки.
  • Чтобы разблокировать приложение mysqld или mysql, выполните следующие действия:
    • Перейдите в командную строку и введите wf.msc, чтобы открыть настройки брандмауэра.
    • Нажмите "Разрешить приложение или функцию через брандмауэр Windows".
    • Проверьте, что экземпляры mysqld или mysqld доступны в списке и установите флажок для домена, общедоступный и закрытый, и сохраните настройки.
  • Вернитесь в папку bin и снова попробуйте выполнить команду с шага 1.
  • Он должен работать нормально и не показывать никаких ошибок.

Теперь можно запустить консоль MySQL без проблем!

Ответ 13

Я решил эту же проблему, используя следующий sql и перезапустив сервер MySQL:

update mysql.user set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y',Create_tablespace_priv='Y'
where user='root';

Ответ 14

Я не думаю, что вам нужно избежать параметра --init-file:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\\mysql-init.txt

Должно быть:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\mysql-init.txt

Ответ 15

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

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
class Delete
{
    public static void main(String []k)
    {
        String url="jdbc:mysql://localhost:3306/student";

        String user="root";
        String pass="jacob234";
        try
        {
            Connection myConnection=DriverManager.getConnection(url,user,pass);
            Statement myStatement=myConnection.createStatement();
            String deleteQuery="delete from students where id=2";
            myStatement.executeUpdate(deleteQuery);
            System.out.println("delete completed");
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }
}

Сохраните системный пароль как jacob234, а затем запустите код.

Ответ 16

Я решил ту же проблему, запустив Workbench с правами администратора.

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

Ответ 17

У меня была та же проблема, но она была вызвана тем, что я использовал сервер mysql на 32 (бит), а верстак работал на 64 (бит) версии. сервер и верстак должны иметь одинаковую версию.

Xpress

Ответ 18

Для меня я использовал MYSQLWorkbench, и порт был 3306 MAMP с использованием 8889