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.