Я не могу понять, почему это происходит.
У моего пользователя есть две учетные записи: ans@localhost
для соединений через сокеты и ans@%
для соединений TCP/IP. Мое имя хозяина valiant
.
mysql> select host,user,password from mysql.user where user = 'ans';
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | ans | *40BA1B1CA7EE7B1B5FE4B2B754F74CD789DA6959 |
| % | ans | |
+-----------+------+-------------------------------------------+
2 rows in set (0.05 sec)
Обратите внимание, что учетная запись ans@%
не имеет пароля.
$ mysql -uans -hvaliant
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 221
Server version: 5.1.73 Source distribution
mysql>
Я могу войти без пароля, что означает, что я использую свою учетную запись TCP/IP, которую я могу проверить с помощью \s
:
mysql> \s
Current user: ans@valiant
Connection: valiant via TCP/IP
Поэтому я назначаю пароль для учетной записи.
mysql> set password for 'ans'@'%' = password('foo');
Query OK, 0 rows affected (0.00 sec)
mysql> set password for 'ans'@'localhost' = password('foo');
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user,password from mysql.user where user = 'ans';
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | ans | *F3A2A51A9B0F2BE2468926B4132313728C250DBF |
| % | ans | *F3A2A51A9B0F2BE2468926B4132313728C250DBF |
+-----------+------+-------------------------------------------+
2 rows in set (0.00 sec)
Я могу войти через локальный сокет
$ mysql -uans -pfoo
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 233
Server version: 5.1.73 Source distribution
mysql>
но не через TCP/IP
$ mysql -uans -pfoo -hvaliant
ERROR 1045 (28000): Access denied for user 'ans'@'valiant' (using password: YES)
Что мне не хватает?