Обычно я запускаю 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.
-h
в командной строке mysql
- это хост, к которому вы подключаетесь. Хост
в mysql.Таблица user
- это хост, с которого сервер будет аутентифицировать пользователя.
Рекомендуется использовать только IP-адреса в mysql.user
(также известном как CREATE USER
) ( и skip-name-resolv
включен), поскольку обратный DNS является медленным и ненадежным механизмом аутентификации.