Невозможно войти с созданным пользователем в MySQL - PullRequest
65 голосов
/ 11 сентября 2009

Используя эту команду

GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password';

Я пытаюсь войти с помощью:

 mysql -u brian -ppassword

Ошибка:

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

Я делаю это как root, и я пытался сбросить привилегии.

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

Также проверьте, был ли пользователь в mysql.user, который он есть.

Показать гранты для Брайана:

| GRANT ALL PRIVILEGES ON *.* TO 'brian'@'%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |

Ответы [ 12 ]

173 голосов
/ 11 сентября 2009

Возможно, у вас есть постоянная проблема MySQL, когда один из пользователей по умолчанию в пользовательской таблице равен '' @ localhost, что приводит к отказу всех localhost пользователей позже в таблице. Я бы сделал mysqldump базу данных mysql и поищу эту запись в таблице User; если найдено, удалите его и очистите привилегии.

Подробнее см. https://dev.mysql.com/doc/refman/5.5/en/connection-access.html.

Распространено заблуждение, что для данного имени пользователя все строки, которые явно называют этого пользователя, используются первыми, когда сервер пытается найти соответствие для соединения. Это неправда. Предыдущий пример иллюстрирует это, когда соединение с h1.example.net от jeffrey сначала сопоставляется не строкой, содержащей jeffrey в качестве значения столбца User, а строкой без имени пользователя. В результате Джеффри аутентифицируется как анонимный пользователь, даже если он указал имя пользователя при подключении.

41 голосов
/ 21 июня 2013

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

shell> mysql_secure_installation 

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

21 голосов
/ 27 апреля 2013
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
10 голосов
/ 04 июня 2015

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

3 голосов
/ 21 декабря 2012

В документации MySQL есть следующее: (от http://dev.mysql.com/doc/refman/5.1/en/adding-users.html):

Две учетные записи имеют имя пользователя monty и пароль some_pass. Обе учетные записи являются учетными записями суперпользователя с полными привилегиями на все действия. Учетная запись 'monty'@'localhost' может использоваться только при подключении с локального хоста. Учетная запись 'monty'@'%' использует подстановочный знак '%' для узла, поэтому его можно использовать для подключения с любого узла.

Необходимо иметь обе учетные записи для monty, чтобы иметь возможность подключаться из любого места как monty. Без учетной записи localhost учетная запись анонимного пользователя для localhost, создаваемая mysql_install_db, будет иметь приоритет, когда monty подключится с местный хозяин. В результате, monty будет рассматриваться как анонимный пользователь. Причина этого заключается в том, что учетная запись анонимного пользователя имеет более конкретное значение столбца Host, чем учетная запись 'monty'@'%', и, следовательно, имеет более ранний порядок сортировки таблицы пользователя.

Имея это в виду, я бы порекомендовал вам создать 'brian'@'localhost' пользователя с такими же привилегиями.

2 голосов
/ 27 марта 2017

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

Для опытных пользователей это может показаться очевидным, но мой пароль был сгенерирован случайным образом и содержал «\». Мне потребовалось некоторое время, пока я не узнал, что этот персонаж вызывает проблемы, в результате чего я не могу войти в систему.

2 голосов
/ 29 апреля 2013

Я думаю, что «Рассел Сильва» прав ...

Я создал пользователя с помощью

CREATE USER 'username'@'%' PASSWORD='userpassword';

Но я не могу войти в эту учетную запись. Консоль сказала мне, что

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

Таким образом, я создал пользователя с тем же именем пользователя, за исключением того, что изменил «%» на «localhost», и я мог наконец войти в систему как «имя пользователя». Хотя это довольно странно для меня.

2 голосов
/ 11 сентября 2009

Вы забыли цитаты вокруг Брайана в своем заявлении на грант. Попробуйте это так:

GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password';

1 голос
/ 16 сентября 2017

В моем случае это было из-за того, что я нажал «SSL: REQUIRE SSL» (в phpmyadmin). Когда я изменил его на «НЕ ТРЕБУЕТСЯ», я мог войти в систему.

0 голосов
/ 20 апреля 2017

У меня была похожая проблема при попытке подключиться к базе данных Maria, работающей в Ubuntu, после обновления до 17.04.

По умолчанию было прослушивание только на localhost, 127.0.0.1.

Чтобы MySQL / Maria прослушивал все доступные порты и интерфейсы, мне нужно было явно указать bind-address = 0.0.0.0. Я добавил эту строку в конец файла /etc/mysql/my.cnf, т.е.

...
[client-server]

# Import all .cnf files from configuration directory

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
bind-address=0.0.0.0

Тогда ...

sudo /etc/init.d/mysql restart 
...