Строка 'myuser'@'localhost'
относится к вашей учетной записи, а не к строке подключения к серверу; например, если вы запустили попытку подключения с компьютера с именем foo-instance
, даже если вы используете строку подключения с указанием удаленного IP-адреса, ваш логин будет 'myuser'@'foo-instance'
. В то время как прямые соединения с использованием вашего sqlclient будут разрешать исходное имя хоста по-разному в зависимости от указанного имени хоста сервера, на это не следует полагаться. В частности, в вашем случае служба ProxySQL будет действовать от вашего имени, поэтому имя хоста источника будет исходить из экземпляра ProxySQL, а не из строки подключения.
Возможно, вы захотите поделиться более подробной информацией о вашей конфигурации ProxySQL, но если вы используете значения по умолчанию, ваш PROXYSQL_HOSTNAME будет установлен на localhost
; Вы можете попробовать убедиться, что вместо PROXYSQL_HOSTNAME установлено значение 127.0.0.1
.
Интересно, что, основываясь на кратком тестировании, создается впечатление, что создание пользовательских привилегий, обозначенных 127.0.0.1
, более ограничивает хост входа, в то время как создание гранта для localhost
допускает как 127.0.0.1
, так и localhost
для имен хостов соединения:
MariaDB [(none)]> create user 'dhuo'@'127.0.0.1' identified by 'dhuopass';
...
$ mysql -h localhost -pdhuopass
ERROR 1045 (28000): Access denied for user 'dhuo'@'localhost' (using password: YES)
$ mysql -h 127.0.0.1 -pdhuopass
Welcome to the MariaDB monitor. Commands end with ; or \g.
...
MariaDB [(none)]> drop user dhuo@127.0.0.1
MariaDB [(none)]> create user 'dhuo'@'localhost' identified by 'dhuopass';
...
$ mysql -h localhost -pdhuopass
Welcome to the MariaDB monitor. Commands end with ; or \g.
$ mysql -h 127.0.0.1 -pdhuopass
Welcome to the MariaDB monitor. Commands end with ; or \g.
Как правило, лучше всего настроить ваши пользовательские привилегии так, чтобы они идентифицировались как исходящие из localhost
вместо 127.0.0.1
, чтобы иметь наилучшую возможность поддержки любого входящего имени хоста.