mysql, tcp / ip e senhas

0

Não consigo entender por que isso está acontecendo.

Meu usuário tem duas contas: ans@localhost para conexões de soquete e ans@% para conexões TCP / IP. Meu nome de host é 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)

Observe que a conta ans@% não tem senha.

$ 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>

Eu consigo fazer login sem uma senha, o que significa que estou usando minha conta TCP / IP, que posso verificar com \s :

mysql> \s
Current user:           ans@valiant
Connection:             valiant via TCP/IP

Por isso, atribuo uma senha à conta.

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)

Eu posso fazer o login através do socket local

$ 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>

mas não sobre TCP / IP

$ mysql -uans -pfoo -hvaliant
ERROR 1045 (28000): Access denied for user 'ans'@'valiant' (using password: YES)

O que estou perdendo?

    
por hymie 18.04.2016 / 19:06

1 resposta

1

Típico. Assim que faço uma pergunta, tropeço na resposta.

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 prestativamente (?) criou dois usuários com nome de usuário em branco e senhas em branco, que permitem que qualquer usuário se conecte a partir desse host sem uma senha.

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
    
por 18.04.2016 / 19:19