Existem duas coisas que você pode fazer
SUGESTÃO # 1: Verifique o Mestre
Certifique-se de que o MySQL foi iniciado no mestre com linhas como estas em my.cnf
[mysqld]
ssl-ca=cacert.pem
ssl-cert=server-cert.pem
ssl-key=server-key.pem
Faça login no mestre e execute
SHOW GLOBAL VARIABLES LIKE '%ssl%';
Você deve ver algo assim:
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | ... |
| ssl_capath | ... |
| ssl_cert | ... |
| ssl_cipher | ... |
| ssl_key | ... |
+---------------+----------+
Se have_open_ssl e have_ssl estão desabilitados, então o mysqld no Mestre não está usando SSL.
Por favor, leia a documentação do MySQL em ssl_ca , < href="http://dev.mysql.com/doc/refman/5.6/en/ssl-options.html#option_general_ssl-capath"> ssl_capath , ssl_cert , ssl_cipher e ssl_key sobre como usá-los. Evidentemente, se nenhum deles estiver definido, mesmo se have_open_ssl e have_ssl estão habilitados, então o mysqld no Master não é usando SSL.
SUGESTÃO # 2: Verifique os subsídios do MySQL no mestre
A conexão em si deve estar usando opções SSL. Na saída SHOW SLAVE STATUS\G
, vejo que você tem um usuário chamado slave_user
. No mestre, por favor, execute isto:
SELECT CONCAT('SHOW GRANTS FOR ',QUOTE(user),'@',QUOTE(host),';')
INTO @slaveusergrants FROM mysql.user WHERE user='slave_user';
PREPARE s FROM @slaveusergrants; EXECUTE s; DEALLOCATE PREPARE s;
Na saída disso, você deve ver um ou mais dos seguintes itens:
REQUIRE SSL
REQUIRE SUBJECT
REQUIRE X509
REQUIRE ISSUER
REQUIRE CIPHER
Se o usuário escravo no mestre tiver pelo menos uma dessas coisas definidas em suas concessões, o comando CHANGE MASTER TO que você executa no Escravo precisa corresponder às configurações de SSL no mestre.
Para mais esclarecimentos, leia Como configurar a replicação usando o SSL da documentação do MySQL
SUGESTÃO # 3: Verifique a conexão ao vivo
Você deve usar o tcpdump e inspecionar a porta 3306 . Se você ver coisas em texto simples, o SSL não está funcionando para você. Se você não fizer isso, isso não significa que ele também esteja criptografado. Por quê ? De acordo com as diretrizes de segurança da documentação do MySQL (veja a parte inferior da página) :
Do not transmit plain (unencrypted) data over the Internet. This information is accessible to everyone who has the time and ability to intercept it and use it for their own purposes. Instead, use an encrypted protocol such as SSL or SSH. MySQL supports internal SSL connections. Another technique is to use SSH port-forwarding to create an encrypted (and compressed) tunnel for the communication.
Learn to use the tcpdump and strings utilities. In most cases, you can check whether MySQL data streams are unencrypted by issuing a command like the following:
shell> tcpdump -l -i eth0 -w - src or dst port 3306 | strings This works under Linux and should work with small modifications under other systems.
Warning If you do not see cleartext data, this does not always mean that the information actually is encrypted. If you need high security, consult with a security expert.