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

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

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

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

root@127.0.0.1 по-видимому, имеет доступ, но я вошел в систему, но он просто назначает localhost в любом случае-localhost не имеет привилегий.

Я сделал несколько вещей, таких как флеш-хосты, флеш-привилегии, ect но не нашли успеха ни в этом, ни в интернете.

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

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

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

14 ответов


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

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

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

ему не понравилась моя привилегия пользователя, поэтому я SUDO его. (в bash

sudo mysql -uroot -p

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

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

для людей, которые сталкиваются с ошибкой ниже в версии 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 / ошибка.бревно.

просто нажмите 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;

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

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

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

  2. mysql> flush privileges; Запрос ОК, 0 затронутых строк (0.00 сек)

  3. mysql> quit Пока!--11-->

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

..180102 11:37: 12 mysqld_safe mysqld из pid-файла /var/run/mysqld/mysqld.пид закончилась . * MySQL Community Server 5.7.8-rc остановлен Ариф@в Ubuntu:~$ судо /и т. д./init.D / mysql запуск .. * В MySQL Запущен сервер сообщества 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.пользовательская таблица.

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


простой способ сбросить пароль root в Linux :

sudo dpkg-reconfigure mysql-server-5.5

проверка некоторых других причин отказа в доступе:

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


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

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

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

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

  • mysql> обновить mysql.пароль пользователя=пароль ('MyNewPass') - >Где пользователь= 'root'; mysql> привилегии FLUSH;

  • остановите сервер, затем перезапустите его нормально (без --skip-grant-tables и --skip-networking options).

исходная документация Mysql и личный опыт:

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


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

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

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

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());
        }
    }
}

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


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

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

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


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

Я не думаю, что вы должны бежать :

"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


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

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


я столкнулся с этой проблемой при установке Testlink на Ubuntu server, я выпал эти шаги

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

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

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

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

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

ссылка MySQL user DB не имеет столбцов паролей-установка MySQL на OSX