it-swarm.com.ru

MySQL ERROR 1045 (28000): доступ запрещен для пользователя 'bill' @ 'localhost' (используется пароль: YES)

Прежде всего позвольте мне упомянуть, что я прошел через многие предложенные вопросы и не нашел подходящего ответа. Вот что я делаю.

Я подключен к своему экземпляру Amazon EC2. Я могу войти с MySQL root с помощью этой команды:

mysql -u root -p

Затем я создал новый счет пользователя с Host% 

CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';

Предоставлены все привилегии для счета пользователя:

grant all privileges on *.* to 'bill'@'%' with grant option;

Затем я выхожу от пользователя root и пытаюсь войти с помощью счета:

mysql -u bill -p

ввел правильный пароль и получил эту ошибку:

ОШИБКА 1045 (28000): доступ запрещен для пользователя 'bill' @ 'localhost' (с использованием пароля: ДА)

354
Ali

Возможно, у вас есть анонимный пользователь ''@'localhost' или ''@'127.0.0.1'.

Согласно руководство :

Если возможно несколько совпадений, сервер должен определить, какой из их использовать. Это решает эту проблему следующим образом: (...)

  • Когда клиент пытается подключиться, сервер просматривает строки [таблицы mysql.user] в отсортированном порядке.
  • Сервер использует первую строку, которая соответствует имени хоста клиента и имени пользователя.

(...) Сервер использует правила сортировки, которые сначала упорядочивают строки с наиболее специфичными значениями хоста . Литеральные имена хостов [такие как 'localhost'] и IP-адреса являются наиболее конкретными.

Следовательно, такой анонимный пользователь будет «маскировать» любого другого пользователя, такого как '[any_username]'@'%', при подключении с localhost.

'bill'@'localhost' соответствует 'bill'@'%', но будет соответствовать (например, ''@'localhost') заранее.

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


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

Правка 1

Аутентификация как 'bill'@'%' через сокет.

 root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass --socket =/tmp/mysql-5.5.sock 
 Добро пожаловать на монитор MySQL (...) 

 mysql> ВЫБЕРИТЕ пользователя, Host FROM mysql.user; 
 + ------ + ----------- + 
 | пользователь | Хост | 
 + ------ + ----------- + 
 | счет | % | 
 | корень | 127.0.0.1 | 
 | корень | :: 1 | 
 | корень | localhost | 
 + ------ + ----------- + 
 4 ряда в наборе (0,00 сек) 

 mysql> SELECT USER (), CURRENT_USER (); 
 + ---------------- + ---------------- + 
 | ПОЛЬЗОВАТЕЛЬ () | CURRENT_USER () | 
 + ---------------- + ---------------- + 
 | счет @ localhost | счет @% | 
 + ---------------- + ---------------- + 
 1 ряд в наборе (0,02 сек) 

 mysql> ПОКАЗАТЬ ПЕРЕМЕННЫЕ НРАВИТСЯ 'skip_networking'; 
 + ----------------- + ------- + 
 | Переменное_имя | Значение | 
 + ----------------- + ------- + 
 | skip_networking | ON | 
 + ----------------- + ------- + 
 1 ряд в наборе (0,00 сек) 

Правка 2

Точно такая же настройка, за исключением того, что я повторно активировал сеть, и теперь я создаю анонимного пользователя ''@'localhost'.

 root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql
 Добро пожаловать на монитор MySQL (...) 

 mysql> CREATE USER '' @ 'localhost', ИДЕНТИФИЦИРОВАННЫЙ 'Anotherpass'; 
 Запрос в порядке, затронуто 0 строк (0,00 с) 

 mysql> Пока 

 root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass\
 --socket =/TMP/MySQL-5.5.sock 
 ОШИБКА 1045 (28000): доступ запрещен для пользователя 'bill' @ 'localhost' (используется пароль: YES) 
 root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass\
 -h127.0.0.1 --protocol = TCP 
 ОШИБКА 1045 (28000): доступ запрещен для пользователя 'bill' @ 'localhost' (используется пароль: YES) 
 root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass\
 -hlocalhost --protocol = TCP 
 ОШИБКА 1045 (28000): доступ запрещен для пользователя 'bill' @ 'localhost' (используется пароль: YES) 

Правка 3

Та же ситуация, что и в редактировании 2, теперь указывается пароль анонимного пользователя.

 root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -panotherpass -hlocalhost 
 Добро пожаловать на монитор MySQL (...) 

 mysql> SELECT USER (), CURRENT_USER (); 
 + ---------------- + ---------------- + 
 | ПОЛЬЗОВАТЕЛЬ () | CURRENT_USER () | 
 + ---------------- + ---------------- + 
 | счет @ localhost | @localhost | 
 + ---------------- + ---------------- + 
 1 ряд в наборе (0,01 с) 

Вывод 1, из редактирования 1: Можно аутентифицироваться как 'bill'@'%' через сокет.

Вывод 2, из редактирования 2: подключается ли кто-либо через TCP или через сокет, не влияет на процесс аутентификации (за исключением того, что никто не может подключиться, как кто-либо другой, кроме 'something'@'localhost' через сокет, очевидно).

Вывод 3, из редактирования 3: Хотя я указал -ubill, мне был предоставлен доступ как анонимного пользователя. Это из-за "правил сортировки", рекомендованных выше. Обратите внимание, что в большинстве установок по умолчанию без пароля, анонимный пользователь существует (и должен быть защищен/удален).

394
RandomSeed

Пытаться:

~$ mysql -u root -p
Enter Password:

mysql> grant all privileges on *.* to [email protected] identified by 'pass' with grant option;
126
Edgar Aviles

Когда ты побежал 

mysql -u bill -p

и получил эту ошибку

ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES)

mysqld ожидает, что вы подключитесь как [email protected]

Попробуйте создать [email protected]

CREATE USER [email protected] IDENTIFIED BY 'passpass';
grant all privileges on *.* to [email protected] with grant option;

Если вы хотите подключиться удаленно, вы должны указать либо DNS-имя, публичный IP-адрес, либо 127.0.0.1 с использованием TCP/IP:

mysql -u bill -p [email protected]
mysql -u bill -p -h10.1.2.30
mysql -u bill -p -h127.0.0.1 --protocol=TCP

После входа в систему, пожалуйста, запустите

SELECT USER(),CURRENT_USER();

USER () сообщает, как вы пытались пройти аутентификацию в MySQL

CURRENT_USER () сообщает, как вам разрешили проходить аутентификацию в MySQL из таблицы mysql.user

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

Вот пример: я создам анонимного пользователя на моем рабочем столе MySQL 

mysql> select user,Host from mysql.user;
+---------+-----------+
| user    | Host      |
+---------+-----------+
| lwdba   | %         |
| mywife  | %         |
| lwdba   | 127.0.0.1 |
| root    | 127.0.0.1 |
| lwdba   | localhost |
| root    | localhost |
| Vanilla | localhost |
+---------+-----------+
7 rows in set (0.00 sec)

mysql> grant all on *.* to [email protected]'%';
Query OK, 0 rows affected (0.02 sec)

mysql> select user,Host from mysql.user;
+---------+-----------+
| user    | Host      |
+---------+-----------+
| lwdba   | %         |
| mywife  | %         |
| x       | %         |
| lwdba   | 127.0.0.1 |
| root    | 127.0.0.1 |
| lwdba   | localhost |
| root    | localhost |
| Vanilla | localhost |
+---------+-----------+
8 rows in set (0.00 sec)

mysql> update mysql.user set user='' where user='x';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> select user,Host from mysql.user;
+---------+-----------+
| user    | Host      |
+---------+-----------+
|         | %         |
| lwdba   | %         |
| mywife  | %         |
| lwdba   | 127.0.0.1 |
| root    | 127.0.0.1 |
| lwdba   | localhost |
| root    | localhost |
| Vanilla | localhost |
+---------+-----------+
8 rows in set (0.00 sec)

mysql>

ОК, смотри, как я вошел как анонимный пользователь

C:\MySQL_5.5.12>mysql -urol -Dtest -h127.0.0.1 --protocol=TCP
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.5.12-log MySQL Community Server (GPL)

Copyright (c) 2000, 2010, 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> select user(),current_user();
+---------------+----------------+
| user()        | current_user() |
+---------------+----------------+
| [email protected] | @%             |
+---------------+----------------+
1 row in set (0.00 sec)

mysql>

Порядок аутентификации очень строг. Он проверяет от наиболее конкретного до наименее. Я написал об этом стиле аутентификации в DBA StackExchange .

Не забудьте явно вызвать TCP в качестве протокола для клиента mysql, когда это необходимо.

64
RolandoMySQLDBA

Если вы забыли свой пароль или хотите изменить его. Вы можете выполнить следующие действия:

1: останови свой mysql

[root @ maomao ~] # служба mysqld stop
Остановка MySQL: [OK]

2: использовать «--skip-grant-tables» для перезапуска mysql

[root @ mcy400 ~] # mysqld_safe --skip-grant-tables 
[root @ cy400 ~] # Запуск демона mysqld с базами данных из/var/lib/mysql

3: откройте новое окно и введите mysql -u root

[root @ cy400 ~] # mysql -u root 
Добро пожаловать на монитор MySQL. Команды заканчиваются на; или\g.

4: изменить базу данных пользователей

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

5: измените свой пароль, ваш новый пароль должен быть введен в «()»

mysql> обновить пользовательский набор password = пароль ('root123'), где user = 'root'; 
Запрос в порядке, затронуто 3 строки (0,00 сек) 
Строк совпало: 3 Изменено: 3 Предупреждений: 0

6: флеш

mysql> сброс привилегий;

7: выйти

mysql> выход 
до свидания

8: перезапустите MySQL

[root @ cy400 ~] # служба mysqld restart; 
Остановка MySQL: [OK] 
Запуск MySQL: [OK]

Бинго! Вы можете связать свою базу данных с вашим именем пользователя и новым паролем:

[[email protected] ~]# mysql -u root -p <br>
Enter password: admin123 <br>
Welcome to the MySQL monitor.  Commands end with ; or \g. <br>
Your MySQL connection id is 2 <br>
Server version: 5.0.77 Source distribution <br>
Type 'help;' or '\h' for help. Type '\c' to clear the buffer. <br>
mysql> quit <br>
Bye
14
Li Yingjun

Когда вы набираете mysql -u root -p, вы подключаетесь к серверу mysql через локальный сокет unix. 

Однако предоставленный вами грант 'bill'@'%' достаточно любопытен только для соединений TCP/IP.

Если вы хотите предоставить доступ к локальному сокету unix, вам нужно предоставить привилегии для 'bill' @ 'localhost', что, как ни странно, не то же самое, что 'bill'@'127.0.0.1'

Вы также можете подключиться с помощью TCP/IP к клиенту командной строки mysql, чтобы соответствовать привилегиям, которые вы уже предоставили, например, запустите mysql -u root -p -h 192.168.1.123 или какой-либо локальный IP-адрес вашего ящика.

14
nos

Связанная проблема в моем случае была попытка подключения с помощью:

mysql -u mike -p mypass

Пробелы IS, очевидно, разрешены между -u # uname #, ноНЕмежду -p и # password #

Поэтому необходимо:

mysql -u mike -pmypass

В противном случае с пробелом между -p mypass mysql принимает 'mypass' в качестве db name

14
mstram

Избавьте себя от ОСНОВНОЙ головной боли ... Ваша проблема может заключаться в том, что вы пропускаете кавычки вокруг пароля. По крайней мере, это был мой случай, который отвлек меня на 3 часа.

[client]
user = myusername
password = "mypassword"   # <----------------------- VERY IMPORTANT (quotes)
Host = localhost

http://dev.mysql.com/doc/refman/5.7/en/option-files.html

Найдите «Вот типичный файл опций пользователя:» и посмотрите пример, в котором они изложены. Удачи, и я надеюсь сэкономить кому-то еще время.

13
mimoralea

Супер поздно к этому

Я попробовал все эти другие ответы и запустил много разных версий mysql -u root -p, но никогда не запускал 


mysql -u root -p 

И просто нажав [ENTER] для пароля. 


Как только я это сделал, это сработало. Надеюсь, это кому-нибудь поможет. 

12
garrettmac

Решение состоит в том, чтобы удалить анонимного (любого) пользователя!

Я также столкнулся с той же проблемой при настройке сервера кем-то другим. Обычно я не решаю создать анонимного пользователя после установки MySQL, поэтому не заметил этого. Сначала я вошел в систему как «root» пользователь и создал пару «обычных» пользователей (то есть пользователей с привилегиями только на dbs с их именем пользователя в качестве префикса), затем вышел из системы и продолжил проверку первого обычного пользователя. Я не мог войти. Ни через phpMyAdmin, ни через Shell. Оказывается, виновником этого «любого» пользователя.

12
fevangelou

Лучшее решение, которое я нашел для себя, это.

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

ERROR 1045 (28000): Access denied for user 'sonar'@'localhost' (using password: YES)

Кроме того, как я пытаюсь это с другой машины и через работу Jenkins, мой URL для доступа 

alm-lt-test.xyz.com

если вы хотите подключиться удаленно, вы можете указать это различными способами следующим образом:

mysql -u sonar -p -halm-lt-test.xyz.com
mysql -u sonar -p -h101.33.65.94
mysql -u sonar -p -h127.0.0.1 --protocol=TCP
mysql -u sonar -p -h172.27.59.54 --protocol=TCP

Чтобы получить доступ к этому с помощью URL, вам просто нужно выполнить следующий запрос.

GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'alm-lt-test.xyz.com' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'127.0.0.1' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'172.27.59.54' IDENTIFIED BY 'sonar';
5
Abhijeet Kamble

Хорошо, я не уверен, но, вероятно, это файл my.cnf внутри установочного каталога mysql - виновник . Закомментируйте эту строку, и проблема может быть решена.

bind-address = 127.0.0.1
3
Ali

Просто хотел сообщить вам необычное обстоятельство, я получил ту же ошибку. Возможно, это поможет кому-то в будущем.

Я разработал несколько базовых представлений, создал их на сайте разработки и перенес их на производственную площадку. Позже на этой неделе я изменил скрипт PHP, и внезапно возникли ошибки, когда доступ был запрещен для пользователя 'local-web-user' @ 'localhost'. Объект источника данных не изменился, поэтому я сосредоточился на пользователе базы данных в MySQL, опасаясь, пока кто-нибудь взломает мой сайт. К счастью, остальная часть сайта казалась невредимой.

Позже выяснилось, что взгляды были виновником (ами). Наши передачи объектов выполняются с использованием другого (и удаленного: admin @ ip-address) пользователя, нежели пользователь локального веб-сайта. Таким образом, представления были созданы с «admin» @ «IP-адрес» в качестве определителя. По умолчанию создание представления SECURITY 

SQL SECURITY DEFINER

Когда локальный веб-пользователь пытается использовать представление, он сталкивается с отсутствующими привилегиями определителя для использования таблиц. После того, как безопасность была изменена на: 

SQL SECURITY INVOKER

проблема была решена. Фактическая проблема полностью отличалась от ожидаемой на основании сообщения об ошибке.

3
Erik

Это разница между:

CREATE USER 'bill'@'%' IDENTIFIED BY 'passpass';

а также 

CREATE USER 'bill'@'localhost' IDENTIFIED BY 'passpass';

Проверь это:

mysql> select user,Host from mysql.user;
+---------------+----------------------------+
| user          | Host                       |
+---------------+----------------------------+
| bill          | %                          | <=== created by first
| root          | 127.0.0.1                  |
| root          | ::1                        |
| root          | localhost                  |
| bill          | localhost                  | <=== created by second
+---------------+----------------------------+

Команда 

mysql -u bill -p

доступ неявный к 'bill' @ 'localhost' и НЕ к 'bill' @ '%'.

Нет разрешений для 'bill' @ 'localhost'

вы получаете ошибку:

ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES)

решение проблемы:

CREATE USER 'bill'@'localhost' IDENTIFIED BY 'passpass';

grant all privileges on . to 'bill'@'localhost' with grant option;
3
Gerd

Это также происходит, когда ваш пароль содержит некоторые специальные символы, такие как @, $ и т.д Чтобы избежать этой ситуации, вы можете заключить пароль в одинарные кавычки:

$ mysql -usomeuser -p'[email protected]$$w0Rd'

Или вместо этого не используйте пароль при вводе. Оставьте это поле пустым, а затем введите его, когда терминал спросит. Это рекомендуемый способ.

$ mysql -usomeuser -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 191
Server version: 5.5.46-0ubuntu0.14.04.2 (Ubuntu)

Copyright (c) 2000, 2015, 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>
3
Pranit More

У меня была несколько похожая проблема - при первой попытке войти в MySql от имени пользователя root мне было отказано в доступе. Оказывается, я забыл использовать судо ... 

Итак, если вы не смогли выполнить root с первой попытки, попробуйте: 

Sudo mysql -u root -p 

и затем введите свой пароль, это должно работать. 

2
David Refaeli

Сводка отладки

  • Проверьте на опечатку: имя пользователя или пароль. 
  • Проверьте имя хоста и сравните его с таблицей имен хостов mysql.user. 
  • Проверьте, существует ли пользователь или нет. 
  • Проверьте, содержит ли хост IP-адрес или имя хоста.

С большой вероятностью вы, возможно, сталкивались с этой проблемой несколько раз в своей работе. Эта проблема возникала у меня чаще всего из-за неправильного ввода имени пользователя или пароля. Хотя это одна из причин, есть много других шансов, что вы можете получить эту проблему. Иногда это выглядит очень похоже, но когда вы будете копать глубже, вы поймете несколько факторов, способствующих этой ошибке. В этом посте будет подробно объяснено большинство распространенных причин и способы решения этой проблемы. 

Возможные причины:

  • Случай 1: опечатка: имя пользователя или пароль.

Это самая распространенная причина этой ошибки. Если вы ввели имя пользователя или пароль неправильно, вы обязательно получите эту ошибку.

Решение:  

Решение для этого типа ошибки очень просто. Просто введите правильное имя пользователя и пароль. Эта ошибка будет устранена. В случае, если вы забыли пароль, вы можете сбросить имя пользователя/пароль . Если вы забыли пароль для учетной записи администратора/root, существует много способов сбросить/восстановить пароль root. Я опубликую еще один пост о том, как сбросить пароль root на случай, если вы забудете пароль root.

  • Случай 2: Доступ с неверного хоста.

MySQL предоставляет ограничения на основе хоста для доступа пользователей в качестве функций безопасности. В нашей производственной среде мы использовали ограничение доступа только к серверам приложений. Эта функция действительно полезна во многих производственных сценариях. 

Решение:

Когда вы сталкиваетесь с этим типом проблемы, сначала проверьте, разрешен ли ваш Хост, проверив таблицу mysql.user . Если она не определена, вы можете обновить или вставить новую запись в таблицу mysql.user . Как правило, доступ с правами root с удаленного компьютера отключен, и это не рекомендуется из-за проблем с безопасностью ........ Если у вас есть требования для доступа к серверу с нескольких компьютеров, предоставьте доступ только этим компьютерам. Лучше не использовать подстановочные знаки (%) и дает универсальный доступ . Позвольте мне обновить таблицу mysql.user, теперь демосер может получить доступ к серверу MySQL с любого хоста.

  • Случай 3: пользователь не существует на сервере.

Этот тип ошибки возникает, когда пользователь, к которому вы пытаетесь обратиться, не существует на сервере MySQL.

Решения:

Когда вы сталкиваетесь с этим типом проблемы, просто проверьте, существует ли пользователь в таблице mysql.user или нет. Если запись не существует, пользователь не может получить доступ. Если для этого пользователя требуется доступ, создайте нового пользователя с таким именем.

  • Случай 4: Сочетание хостов на основе чисел и имен.

Важные моменты

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

  • Отключите вход в систему с удаленного компьютера.

  • Используйте концепцию прокси-пользователя.

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

  • Что делать, если вы забыли пароль root на сервере MySQL.
  • Проблемы с привилегиями MySQL Access и пользовательские таблицы.
  • Функции безопасности MySQL с лучшими практиками.

Я надеюсь, что этот пост поможет вам исправить MySQL Error Code 1045 Доступ запрещен для пользователя в MySQL.

2
Abhijit Jagtap

Для меня эта проблема была вызвана новой функцией MySQL 5.7.2: записи userignored, если их поле plugin пустое.

Установите его, например, mysql_native_password чтобы включить их:

UPDATE user SET plugin='mysql_native_password' WHERE user='foo';
FLUSH PRIVILEGES;

Смотрите примечания к выпуску для MySQL 5.7.2 , в разделе «Примечания по аутентификации».

По какой-то причине (возможно, из-за того, что мои хеши паролей до 4.1 были удалены), скрипт mysql_upgrade не установил значение плагина по умолчанию.

Я узнал, заметив следующее предупреждающее сообщение в /var/log/mysql/error.log:

[Предупреждение] Пользовательская запись 'foo' @ '%' имеет пустое значение плагина. Пользователь будет проигнорирован, и никто больше не сможет войти в систему с этим пользователем.

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

2
maxelost

Не уверен, что кто-нибудь еще найдет это полезным, но я столкнулся с той же ошибкой и все время искал анонимных пользователей ... а их там не было. Проблема закончилась тем, что для учетной записи пользователя было установлено «Требовать SSL» - что я нашел в PHPMyAdmin, перейдя в раздел «Учетные записи пользователей» и нажав «Изменить привилегии для пользователя». Как только я снял эту опцию, все заработало как положено!

2
Alan

Я обнаружил еще один случай, который на поверхности выглядит как случай Эджа; Я могу экспортировать в файловую систему через SELECT INTO .. ​​OUTFILE как root, но не как обычный пользователь. Хотя это может быть вопросом разрешений, я посмотрел на это и не вижу ничего особенно очевидного. Все, что я могу сказать, это то, что выполнение запроса обычным пользователем, имеющим все разрешения для рассматриваемой базы данных, возвращает ошибку «отказ в доступе», которая привела меня к этой теме. Когда я нашел расшифровку успешного использования SELECT INTO… OUTFILE в старом проекте, я заметил, что вошел в систему как root. Конечно же, когда я вошел в систему как root, запрос выполнялся как ожидалось.

2
David A. Gray

Я надеюсь, что вы не причинили больше вреда, также удалив пользователя debian-sys-maint в mysql 

Пусть ваш демон mysql работает в обычном режиме. Запустите клиент MySQL, как показано ниже

mysql -u debian-sys-maint -p

В другом терминале cat файл /etc/mysql/debian.cnf. Этот файл содержит пароль; вставьте этот пароль при запросе.

http://ubuntuforums.org/showthread.php?t=1836919

2
ysk

В окне Как решить ОШИБКУ 1045 (28000): доступ запрещен для пользователя 'root' @ 'localhost' (используется пароль: НЕТ)

1) Uninstall mysql from control panel
2)Delete MySql folder from C:\Program Files,C:\Program Files (x86) and C:\ProgramData
3)Install mysql
0
Sanjay

Это может относиться к очень немногим людям, но здесь идет. Не используйте восклицательный знак (!) В своем пароле. Я сделал и получил вышеупомянутую ошибку, используя MariaDB. Когда я упростил это до просто цифр и букв, это сработало. Другие символы, такие как @ и $, работают нормально - я использовал эти символы у другого пользователя в том же экземпляре. Пятый ответ по этому адресу привел меня к моему исправлению.

0
Chiwda

ОС: Windows 

Мое сообщение об ошибке: «MySQL ERROR 1045 (28000): доступ запрещен для пользователя« root »@« localhost »(с использованием пароля: YES)»

Моя причина не открыть cmd с administrator permission 

итак, мое решение: откройте cmd с administrator permission, тогда это работает.

0
yilin

Я столкнулся с той же ошибкой. Настройка, которая не работала, выглядит следующим образом:

define("HOSTNAME", "localhost");
define("HOSTUSER", "van");
define("HOSTPASS", "helsing");
define("DBNAME", "crossbow");
$connection = mysqli_connect(HOSTNAME, HOSTUSER, HOSTPASS);

Отредактированная установка ниже - та, которая заставила это работать. Заметили разницу?

define('HOSTNAME', 'localhost');
define('HOSTUSER', 'van');
define('HOSTPASS', 'helsing');
define('DBNAME', 'crossbow');
$connection = mysqli_connect(HOSTNAME, HOSTUSER, HOSTPASS);

Разница заключается в двойных кавычках. Они кажутся весьма значительными в PHP в отличие от Java, и они оказывают влияние, когда речь заходит о экранировании символов, настройке URL-адресов и, теперь, передаче параметров в функцию. Они красивее (я знаю), но всегда используйте одинарные кавычки, насколько это возможно, тогда двойные кавычки могут быть вложены в них, если это необходимо. 

Эта ошибка возникла, когда я тестировал свое приложение на Linux-боксе, а не в среде Windows.

0
Raymond Wachaga

Я решил эту проблему, удалив старые ошибочные записи пользователя "bill" (это важная часть: как из mysql.user , так и mysql.db ), а затем создал того же пользователя, что и sad:

FLUSH PRIVILEGES;
CREATE USER [email protected] IDENTIFIED BY 'passpass';
grant all privileges on *.* to [email protected] with grant option;
FLUSH PRIVILEGES;

Работал, пользователь подключается. Теперь я уберу из этого некоторые превеликции :)

0
dxvargas