GRANT ... TO 'rails'@'localhost' ... REQUIRE SSL
Para iniciantes que exigem SSL para conexões de / para localhost é completamente sem sentido. O SSL ou o TLS fornecem segurança de transporte que você não precisa para comunicações que não saiam do sistema real, que não fornecem segurança adicional e apenas sobrecarga extra.
Além disso, as bibliotecas oficiais do MySQL no Linux / UNIX tratam a palavra-chave localhost diferente do que você esperaria e usarão o soquete Unix, não o TCP. do manual :
On Unix, MySQL programs treat the host name localhost specially, in a way that is likely different from what you expect compared to other network-based programs. For connections to localhost, MySQL programs attempt to connect to the local server by using a Unix socket file. This occurs even if a --port or -P option is given to specify a port number. ... You can also specify the connection protocol explicitly, by using the
--protocol=TCP
option.
O uso do soquete oferece muito mais desempenho do que o uso de TCP / IP e AFAIK, o soquete não suporta SSL (e não precisaria de nenhum dos dois).
Se você forçar uma conexão TCP, você precisará CONCEDER acesso sobre TCP também, com GRANT ... TO 'rails'@'127.0.0.1' ...
, porque a concessão de conexões de localhost
implica no soquete Unix.
Particularmente inútil é que, para mensagens de erro, o MySQL segue a convenção para fazer uma pesquisa inversa de DNS para endereços IP que irá converter o endereço IP 127.0.0.1
em localhost .