La guía supone que tiene un servidor reservado para el uso de MySQL con una dirección IP estática accesible, tal vez en la nube o en algún lugar de su red local. Los siguientes comandos, en esta subsección, deben ejecutarse en el shell del servidor. Instalemos y configuremos rápidamente MySQL en Ubuntu.
$ sudo apt actualizaciónEl último comando ejecutará un script para cambiar algunos de los valores predeterminados inseguros de MySQL. Primero sería un mensaje para instalar un complemento de validación de contraseña. Esto verificaría si la nueva contraseña que está configurando para los usuarios es lo suficientemente fuerte o no. Puede optar por no participar en este complemento, si lo desea. Después de esto, se le solicitará que establezca contraseña de usuario root de MySQL. Continúe y establezca una contraseña de usuario raíz fuerte.
Presione Y | y para sí, cualquier otra tecla para no: nDespués de esto puedes decir más o menos Sí A cualquier otro mensaje en este script, a medida que el script elimina el usuario de la prueba, elimina la base de datos de prueba, deshabilita el inicio de sesión de raíz remota y finalmente recarga su tabla de privilegios. Una vez hecho esto, ya que hemos rechazado el inicio de sesión de raíz remota, creemos una base de datos y un nuevo usuario que pueda acceder a esa base de datos de forma remota sin tener que tener que ssh (o iniciar sesión) en el Servidor de Unix/Linux Shell. Pero antes de hacer eso, verifiquemos si nuestra construcción de MySQL tiene TLS incorporada o no.
Verificar si TLS está disponible
TLS está disponible en MySQL solo si MySQL está compilado para que se haya integrado en él. No hay un módulo dinámico para cargar. Entonces, si no está seguro de que su paquete MySQL tenga TLS instalado o no, puede verificarlo ejecutando:
$ sudo mysqlSi dice que las variables Have_openssl y have_ssl tener valores establecidos en DESACTIVADO Entonces tienes SSL y estás listo (solo necesitas habilitarlo, leyendo más). Si los valores se establecen en NO, Entonces debe obtener una versión diferente de MySQL de su administrador de paquetes o en otro lugar.
mysql> SalirConfiguración de MySQL
De forma predeterminada, el servidor MySQL solo escucha en la interfaz de Loopback, es decir en la dirección 'localhost' o '127.0.0.1 ', para conexiones remotas, también queremos que escuche en la IP estática pública. Para hacer esto, abra el archivo, /etc/mysql/my.CNF y agregar los siguientes pares de líneas al final.
…Aquí, reemplaza el con la IP real de su servidor. Si tiene dudas sobre qué IP usar, puede usar 0.0.0.0 para escuchar en todas las interfaces. Ahora reinicie el servidor, para que se realice la nueva configuración.
$ sudo servicio mysql reiniciarCreación de usuario remoto
Nota: Si desea usar la base de datos en producción, es probable que el cliente que se conecte a esta base de datos, su front -end, tenga una IP estática. Si ese es el caso, reemplace el símbolo de porcentaje '%' con la IP del cliente apropiada. '%' es solo un comodín, que significa 'cualquier valor'. Estaremos configurando nuestro myuser para que pueda iniciar sesión desde cualquier dirección IP (por ejemplo, la dirección IP cambiante de su conexión de banda ancha nacional) que es, posiblemente, insegura.
$ sudo mysqlReemplazar 'contraseña' con una contraseña segura real y tenemos un usuario nombrado myuser que tiene acceso completo a la base de datos mydatabase.
Habilitando TLS (también conocido como 'SSL')
Mientras registra el shell MySQL como el usuario root de MySQL, puede verificar el estado de conexión escribiendo \ s:
mysql> \ sPreste atención a las líneas resaltadas sobre la conexión y SSL. Si bien este estado está bien para un inicio de sesión local del usuario raíz, para cuando iniciamos sesión en TLS como el myuser El tipo de conexión estará sobre TCP/IP, no es un enchufe sin procesar y un cifrado SSL estará en uso. Hay un orden simple para lograr esto. Pero primero salgamos nuestro mensaje mysql.
mysql> SalirAhora corre,
$ sudo mysql_ssl_rsa_setup --uid = mysql
Una vez hecho esto, puedes mirar el Have_ssl variable de nuevo.
Iniciar sesión en un cliente mysql separado
Hay nuevos parámetros que indican que el certificado TLS y la clave están en su lugar y TLS está habilitado. Ahora puede iniciar sesión en esta máquina, abrir un cliente MySQL en su computadora local, si no tiene una (y está usando Debian o Ubuntu) obtenga un cliente MySQL Shell:
$ sudo apt install mysql-clientReemplace la myuser y Con su nombre de usuario y IP de servidor real, ingrese la contraseña elegida y debe iniciarse sesión en la base de datos. Verifique la conexión:
mysql> \ sPuede ver que ahora está usando RSA para cifrar su tráfico y la conexión es una IP específica sobre TCP/IP. Ahora, su conexión con esta base de datos MySQL es segura.
Esta es la forma más sencilla de asegurar sus conexiones MySQL remotas con TLS. Tenga en cuenta que esto no es lo mismo que asegurar un cliente de Phpmyadmin sobre TLS. Eso es TLS y HTTP combinados, y requiere que asegure la interfaz web. La conexión entre el PhPMyadmin, que hace que su interfaz de usuario web, y la base de datos aún no esté cifrada, lo que está bien siempre que estén en el mismo servidor.
Puede obtener más información sobre la conexión TLS, CAS subyacente, certificados y gestión de claves en los documentos oficiales de MySQL.