Я не могу понять, почему это происходит.

У моего пользователя есть две учетные записи: 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)

Что мне не хватает?

1 ответ1

1

Типичный. Как только я задаю вопрос, я натыкаюсь на ответ.

mysql> select host,user,password from mysql.user ;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *64B2393C4607E57C549B41537134BC7C3314164E |
| localhost |      |                                           |
| valiant   |      |                                           |
| localhost | ans  | *F3A2A51A9B0F2BE2468926B4132313728C250DBF |
| %         | ans  | *F3A2A51A9B0F2BE2468926B4132313728C250DBF |
+-----------+------+-------------------------------------------+
5 rows in set (0.00 sec)

mysql услужливо (?) создал двух пользователей с пустым именем пользователя и пустыми паролями, которые позволяют любому пользователю подключаться с этого хоста без пароля.

mysql> drop user ''@'valiant';
Query OK, 0 rows affected (0.00 sec)

$ mysql -uans -pfoo -hvaliant
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 249
Server version: 5.1.73 Source distribution

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .