Анонимные пользователи в MySQL — это учетные записи пользователей, у которых не указано имя пользователя. Они позволяют любому человеку подключаться к серверу MySQL без необходимости предоставления имени пользователя и пароля. Обычно такие учетные записи создаются по умолчанию при установке MySQL и используются только для тестирования и упрощения процесса установки.
Если у вас включен удаленный доступ к MySQL (например, если `bind-address` настроен на `0.0.0.0` или на конкретный внешний IP), и в вашей базе данных есть анонимные пользователи, то любой человек сможет подключиться к базе данных без ввода логина и пароля, используя учетную запись анонимного пользователя. Это представляет серьезную угрозу безопасности, особенно в производственной среде.
Вот почему важно удалить анонимных пользователей и ограничить доступ к базе данных только авторизованными пользователями.
### Характеристики анонимных пользователей:
1. **Отсутствие имени пользователя**: В таблице пользователей MySQL (`mysql.user`) для анонимных пользователей поле `User` пустое (`''`).
2. **Без пароля**: Подключение к MySQL может происходить без предоставления пароля.
3. **Ограниченные права**: По умолчанию анонимные пользователи имеют минимальные права доступа. Однако это все равно представляет угрозу безопасности, так как любой человек может подключиться к серверу.
### Опасности анонимных пользователей:
- **Неавторизованный доступ**: Любой пользователь, имеющий доступ к серверу MySQL, может подключиться без предоставления учетных данных.
- **Уязвимости безопасности**: Анонимные пользователи могут быть использованы злоумышленниками для несанкционированного доступа к базе данных и выполнения произвольных запросов.
### Удаление анонимных пользователей:
Чтобы удалить анонимных пользователей, можно использовать команду
```bash
sudo mysql_secure_installation
```
или выполнить следующие команды непосредственно в MySQL:
1. Подключитесь к серверу MySQL с правами администратора:
```bash
sudo mysql
```
2. Удалите анонимных пользователей:
```sql
DELETE FROM mysql.user WHERE User='';
```
3. Примените изменения:
```sql
FLUSH PRIVILEGES;
```
4. Выйдите из MySQL:
```sql
EXIT;
```
### Проверка наличия анонимных пользователей:
Чтобы проверить, есть ли в вашей базе данных анонимные пользователи, выполните следующий запрос:
```sql
SELECT User, Host FROM mysql.user WHERE User='';
```
Если результат запроса не пустой, это означает, что в вашей базе данных есть анонимные пользователи.