Is MySQL port 3306 encrypted, and if no, how can I encrypt it?

Solution 1:

No, by default mysql traffic is not encrypted. Setting up MySQL to work with OpenSSL on a per-connection basis is your best bet. Most binaries are built with SSL support these days, but it's easy enough to check if your version will support it. From the documentation:

To check whether a server binary is compiled with SSL support, invoke it with the --ssl option. An error will occur if the server does not support SSL:

shell> mysqld --ssl --help
060525 14:18:52 [ERROR] mysqld: unknown option '--ssl'

Solution 2:

By default MySQL does not encrypt its client/server communication:

  • https://dev.mysql.com/doc/refman/5.6/en/security-guidelines.html

You can setup MySQL to accept connections over SSL and require users to use SSL. Here's the guide for SSL setup:

  • https://dev.mysql.com/doc/refman/5.6/en/encrypted-connections.html

MySQL 8:

  • https://dev.mysql.com/doc/refman/8.0/en/security-guidelines.html
  • https://dev.mysql.com/doc/refman/8.0/en/encrypted-connections.html