it-swarm.com.ru

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

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

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

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

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

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

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

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

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

Спасибо всем, кто может оказать помощь

61
Chase

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

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

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

Мне не нравились мои пользовательские привилегии, поэтому я сделал это. (в bash << Sudo установить имя пользователя и пароль) (это дает имя пользователя root и ничего не устанавливает пароль) (на Mac)

Sudo mysql -uroot -p
31
Dan Kaiser

Если у вас есть та же проблема в 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.

28
KeitelDOG

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

~$ 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> 
19
aashish

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

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

  2. Sudo /etc/init.d/mysql stop ... MySQL Community Server 5.7.8-rc остановлен

  3. 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 Community Server (GPL)

Copyright (c) 2000, 2015, Oracle и/или ее филиалы. Все права защищены.

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

Напечатайте 'помощь;' или '\ h' за помощь. Введите "\ c", чтобы очистить текущий оператор ввода.

  1. mysql> use mysql;

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

База данных изменена

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

  2. mysql> flush privileges; Query OK, затронуто 0 строк (0,00 сек)

  3. mysql> quit Пока

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

..180102 11:37:12 mysqld_safe mysqld из файла pid /var/run/mysqld/mysqld.pid завершен. * MySQL Community Server 5.7.8-rc остановлен при запуске @ ubuntu: ~ $ Sudo /etc/init.d/mysql .. * MySQL Community Server 5.7.8-rc запущен

  1. mysql -u root -p

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

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

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

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

13
ArifMustafa

Простой способ сбросить пароль root в системах Linux:

Sudo dpkg-reconfigure mysql-server-5.5

Оформить заказ некоторые другие причины для отказа в доступе:

https://dev.mysql.com/doc/refman/5.7/en/problems-connecting.html

6
Parth mehta

в mysql 5.7 поле пароля было заменено на authentication_string, поэтому вы должны сделать что-то вроде этого

update user set authentication_string=PASSWORD("root") where User='root';

Смотрите эту ссылку Пользовательская БД MySQL не имеет столбцов паролей - Установка MySQL в OSX

2
PrestonDocks

Я столкнулся с этой проблемой при установке 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
2
Shridhar S Chini

Я работал над "Отказано в доступе для пользователя" 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
1
Veera Prasad

Ну, самый простой способ сбросить пароль root:

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

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

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

  • mysql> UPDATE mysql.user SET Password = PASSWORD ('MyNewPass') -> WHERE User = 'root'; mysql> FLUSH PRIVILEGES;

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

Источник документации Mysql и личного опыта:

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

1
Aneesh Vijendran

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

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

0
Igor Šćepanović

Я решил ту же проблему, используя следующий 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';
0
Alex Tsurika

Я не думаю, что вам нужно экранировать параметр --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

0
Jordan

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

xpress

0
xpress

Попробуйте следующие шаги, чтобы преодолеть эту проблему:

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

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

0
srinivas krithvik

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

0
Koyel Sharma