MySQL 5.5.16 разрешает анонимные подключения

По-видимому, я могу подключиться к MySQL (по крайней мере, с моего локального хоста) без указания имени пользователя или пароля. Я даже могу указать что угодно в качестве имени пользователя, если пароль пуст. У меня есть доступ к information_schema а также test базы данных. Я могу создавать таблицы. Если я бегу SELECT USER() он возвращает правильное значение randomstring @ localhost, где случайная строка - это то, что я использовал для имени пользователя при подключении.

mysql.user таблица содержит root@localhost, root@127.0.0.1, @localhost и pma@localhost. Я вручную устанавливаю зашифрованные пароли ко всем записям (UPDATE user SET password=...) и только root имеет какие-либо привилегии, две другие записи имеют "N" для всех привилегий. Эта запись с пустым именем пользователя выглядит подозрительно, но я не думаю, что это имеет какое-либо отношение к этому, и я думаю, что она была там с самого начала.

Что еще хуже, если я добавлю пользователя с паролем, я могу подключиться только с использованием пустой строки в качестве пароля (точно так же, как если я введу что-нибудь в качестве имени пользователя). Если я пытаюсь подключиться, используя имя пользователя, которое я создал, и пароль, который я указал при его создании (CREATE USER .. IDENTIFIED BY ..) это не работает.

Кто-нибудь знает, что не так и как я могу это исправить?

Примечание. Я использую MySQL 5.5.16 для Windows, предоставляемый пакетом XAMPP.

2 ответа

Решение

Вам нужно просто удалить анонимного пользователя.

В будущем запуск /usr/bin/mysql_secure_installation (Расположение в установке RPM) предложит вам удалить этих анонимных пользователей.

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

Удалить анонимных пользователей? [Да / Нет] у... Удачи!

Удалите запись пользователя с пустым именем пользователя. Это причина. использование select user(); при входе в систему, чтобы убедиться, что вы вошли как пользователь.

Смотрите здесь:

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

Другие вопросы по тегам