Разница между таблицей mysql.user и mysql -u -h

Обычно я запускаю mysql, используя что-то вроде этого:

mysql -h hostname -u user -p
(and then type password here)

, но я хотел знать, как это связано с таблицей mysql.user. Когда я вхожу в mysql, а затем запускаю:

select user,host from mysql.user

, база данных, в которую я вхожу, имеет много разных IP-адресов для хоста. Обычно я вижу только «%» или «localhost», но я обращаюсь к базе данных, у которой много разных IP-адресов (я изменил IP-адреса с настоящих по соображениям безопасности, но они выглядят следующим образом):

| user              | host          |
-------------------------------------
| user_1            | 54.211.18.65  |
| user_support      | 32.162.28.13  |
| user_admin        | 33.167.1.142  |
| user_super        | 35.161.72.123 |

Кроме того, когда я попробуйте получить доступ к user_1 с помощью mysql cli:

mysql -h mysql.example.com -u user_1 -p

, он разрешает mysql.example.com как мой собственный IP, даже когда dig показывает другой IP, в основном такой же, как в этом вопросе . Пожалуйста, помогите понять разницу между параметром хоста -h и хостом в таблице mysql.user.

0
задан 27 June 2018 в 22:10
1 ответ

-h в командной строке mysql - это хост, к которому вы подключаетесь. Хост в mysql.Таблица user - это хост, с которого сервер будет аутентифицировать пользователя.

Рекомендуется использовать только IP-адреса в mysql.user (также известном как CREATE USER ) ( и skip-name-resolv включен), поскольку обратный DNS является медленным и ненадежным механизмом аутентификации.

1
ответ дан 4 December 2019 в 15:54

Теги

Похожие вопросы