Доступ запрещен для пользователя "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, чтобы прервать и завершить процесс
-
mysql -u root
Добро пожаловать на монитор MySQL. Команды заканчиваются; или \g.
Ваш идентификатор соединения с MySQL равен 2
Версия сервера: 5.7.8-rc Сервер сообщества MySQL (GPL)
Авторское право (c) 2000, 2015, Oracle и/или его аффилированные лица. Все права защищены.
Oracle является зарегистрированным товарным знаком корпорации Oracle и/или ее
ветки. Другие названия могут быть товарными знаками соответствующих
владельцы.
Введите "help"; или '\ h' для получения справки. Введите '\ c', чтобы очистить текущую инструкцию ввода.
- mysql >
use mysql;
Чтение табличной информации для заполнения имен таблиц и столбцов
Вы можете отключить эту функцию, чтобы быстрее запустить с помощью -A
Изменена база данных
-
mysql > update user set authentication_string=password('password') where user='root';
Запрос ОК, 4 строки затронуты, 1 предупреждение (0,03 сек)
Соответствие строк: 4 Изменено: 4 Предупреждения: 1
-
mysql > flush privileges;
Query OK, 0 строк (0.00 sec)
-
mysql > quit
Bye
-
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
-
mysql -u root -p
Введите пароль:
Добро пожаловать на монитор MySQL. Команды заканчиваются; или \g.
Ваш идентификатор соединения с MySQL равен 2
Версия сервера: 5.7.8-rc Сервер сообщества MySQL (GPL)
после версии mysql 5.7+ пароль столбца заменен именем authentication_string из таблицы mysql.user.
надеюсь, что эти шаги помогут кому угодно, спасибо.
Ответ 6
Простой способ reset пароля root в системах Linux:
sudo dpkg-reconfigure mysql-server-5.5
Ознакомьтесь с некоторыми другими причинами отказа в доступе:
https://dev.mysql.com/doc/refman/5.7/en/problems-connecting.html
Ответ 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
Ответ 8
в mysql 5.7 поле пароля было заменено на authentication_string, поэтому вы должны сделать что-то вроде этого
update user set authentication_string=PASSWORD("root") where User='root';
Посмотрите эту ссылку Пользовательская БД MySQL не имеет столбцов паролей - Установка MySQL на OSX
Ответ 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