En Centos/Rhel, puede ejecutar fácilmente el mysql_secure_installation Comando para configurar una contraseña de root. Pero en Ubuntu 20.04 LTS, este método no funciona, ya que MySQL utiliza un complemento de autenticación diferente para el raíz usuario.
Este artículo le mostrará cómo configurar una contraseña de root MySQL en Centos 8 y Ubuntu 20.04 distribuciones LTS Linux utilizando módulos Ansible.
Requisitos previos
Si desea probar los ejemplos incluidos en este artículo,
1) Debe tener Ansible instalado en su computadora.
2) Debe tener al menos un host CentOS/RHEL 8 o un Ubuntu 20.04 host LTS configurado para la automatización Ansible.
Hay muchos artículos sobre Linuxhint dedicados a instalar Ansible y configurar hosts para Automatización Ansible. Puede verificarlos si es necesario.
Configuración de un directorio de proyecto
Antes de avanzar más, estableceremos un nuevo directorio de proyectos Ansible, solo para mantener las cosas un poco organizadas.
Para crear el directorio del proyecto mysql-root-pass/ y todos los subdirectorios requeridos (en su directorio de trabajo actual), ejecute el siguiente comando:
$ mkdir -pv mysql-root-pass/playbooks, host_vars, group_varsUna vez que se crea el directorio del proyecto, navegue al directorio del proyecto, de la siguiente manera:
$ CD MySQL-Root-Pass/Crear un Hospedadores archivo de inventario, como sigue:
$ nano anfitrionesAgregue los nombres de IP o DNS de host de su CentOS/RHEL 8 o Ubuntu 20.04 Hosts LTS en el archivo de inventario (un host por línea), como se muestra en la captura de pantalla a continuación.
Una vez que haya terminado, guarde el archivo presionando + X, seguido por Y y .
Aquí, he creado dos grupos, Centos8, y ubuntu20. El Centos8 El grupo tiene el nombre DNS de mi host Centos 8, VM3.notekita.comunicarse; y el ubuntu20 El grupo tiene el nombre DNS de mi Ubuntu 20.04 anfitrión LTS, VM7.notekita.comunicarse.
Crear un archivo de configuración ansible ansible.CFG En su directorio de proyecto, como sigue:
$ nano ansible.CFGEscriba las siguientes líneas en el ansible.CFG archivo:
[Valores predeterminados]Una vez que haya terminado, guarde el ansible.CFG Archivo presionando + X, seguido por Y y .
Intenta hacer ping a todos los hosts que has agregado en tu Hospedadores archivo de inventario, como sigue:
$ ansible all -u ansible -m ping
Como puede ver, el host My Centos 8 (VM3.notekita.com) y ubuntu 20.04 LTS Host (VM7.notekita.com) son accesibles.
Instalación de MySQL y configurando la contraseña de root en CentOS/RHEL 8
Esta sección le mostrará cómo instalar el servidor de base de datos MySQL y configurar una contraseña de root en CentOS 8 usando Ansible. El mismo procedimiento debe funcionar en RHEL 8.
Crea el nuevo libro de jugadas Ansible install_mysql_centos8.yaml en el Libros de jugadas/ Directorio, como sigue:
$ Nano Playbooks/install_mysql_centos8.yamlEscriba las siguientes líneas en el install_mysql_centos8.yaml archivo:
- Anfitriones: Centos8Una vez que haya terminado, presione + X, seguido por Y y , Para salvar el install_mysql_centos8.yaml archivo.
La línea de abajo le dice a Ansible que ejecute el libro de jugadas install_mysql_centos8.yaml en cada anfitrión en el Centos8 grupo.
Aquí, he definido 5 tareas.
La primera tarea actualiza el caché del repositorio del paquete DNF de CentOS 8 utilizando el Ansible DNF módulo.
La segunda tarea instala el paquete de servidor MySQL servidor mysql Usando el Ansible DNF módulo.
La tercera tarea instala el paquete de cliente MySQL mysql Usando el Ansible DNF módulo.
La cuarta tarea asegura que el mysqld El servicio se está ejecutando y que se ha agregado al inicio del sistema para que se inicie automáticamente en el arranque.
La quinta tarea instala la biblioteca MySQL Python 3 pymysql. Esto se requiere para acceder a MySQL desde Ansible.
Ejecutar el install_mysql_centos8.yaml Libro de jugadas, como sigue:
$ Ansible-Playbook Playbooks/install_mysql_centos8.yamlComo puedes ver, el libro de jugadas install_mysql_centos8.yaml corrió con éxito.
En mi anfitrión CentOS 8, puedo acceder a MySQL como el raíz Usuario sin contraseña, como puede ver en la captura de pantalla a continuación:
$ sudo mysql -u rootAhora que el servidor MySQL está instalado, es hora de configurar una contraseña de root para el servidor MySQL.
Crear el nuevo archivo de variable de grupo Centos8 (en el Group_vars/ directorio) para el Centos8 grupo, como sigue:
$ nano group_vars/centos8Agregar una nueva variable mysql_pass con la contraseña de root (en mi caso, secreto) le gustaría establecer, como se muestra en la captura de pantalla a continuación.
Una vez que haya terminado, presione + X, seguido por Y y
Crea un nuevo libro de jugadas set_root_pass_centos8.yaml Con el siguiente comando:
$ Nano Playbooks/set_root_pass_centos8.yamlEscriba las siguientes líneas en el set_root_pass_centos8.yaml archivo:
- Anfitriones: Centos8Una vez que haya terminado, presione + X, seguido por Y y , Para salvar el set_root_pass_centos8.yaml archivo.
Este libro de jugadas usa el mysql_user Módulo ansible para establecer una contraseña de root mySQL.
El Login_host, Login_user, y contraseña de inicio de sesión opciones de la mysql_user El módulo Ansible se utilizan para establecer el nombre de host de inicio de sesión, nombre de usuario y contraseña de inicio de sesión mySQL actual, respectivamente. Por defecto, el nombre host de inicio de sesión mysql (Login_host) es el hostil, el nombre de usuario de inicio de sesión (Login_user) es el raíz, y el inicio de sesión contraseña (contraseña de inicio de sesión) esta vacio (") en Centos 8.
El contraseña opción del mysql_user El módulo Ansible se usa para establecer una nueva contraseña de root de MySQL, aquí. La contraseña de root mySQL será el valor del mysql_pass variable de grupo que se estableció anteriormente.
Ejecutar el libro de jugadas set_root_pass_centos8.yaml Con el siguiente comando:
$ Ansible-Playbook Playbooks/set_root_pass_centos8.yamlEl libro de jugadas se ejecutó con éxito, como se ve en la captura de pantalla a continuación:
Como puede ver, ya no puedo iniciar sesión en el servidor MySQL sin una contraseña de root.
Para iniciar sesión en el servidor mysql como el raíz Usuario con una contraseña, ejecute el siguiente comando en su host CentOS 8:
$ sudo mysql -u root -p
Escriba la contraseña de root que ha establecido usando Ansible y presione .
Debe iniciarse sesión en el servidor MySQL como el raíz usuario.
Instalación de MySQL y configurando la contraseña de root en Ubuntu 20.04 LTS
Esta sección le mostrará cómo instalar el servidor de base de datos MySQL y configurar una contraseña de root en Ubuntu 20.04 LTS usando Ansible.
Crea un nuevo libro de jugadas Ansible install_mysql_ubuntu20.yaml en el Libros de jugadas/ Directorio, como sigue:
$ Nano Playbooks/install_mysql_ubuntu20.yamlEscriba las siguientes líneas en el install_mysql_ubuntu20.yaml archivo:
- Anfitriones: Ubuntu20Una vez que haya terminado, presione + X, seguido por Y y , Para salvar el install_mysql_ubuntu20.yaml archivo.
La siguiente línea le dice a Ansible que ejecute el libro de jugadas install_mysql_ubuntu20.yaml en cada anfitrión en el ubuntu20 grupo:
Aquí, he definido 5 tareas.
La primera tarea actualiza el caché del repositorio de paquetes APT de Ubuntu 20.04 lts usando el ansible apto módulo.
La segunda tarea instala el paquete de servidor MySQL servidor mysql Usando el Ansible apto módulo.
La tercera tarea instala el paquete de cliente MySQL mysql Usando el Ansible apto módulo.
La cuarta tarea asegura que el mysql El servicio se está ejecutando y que se ha agregado al inicio del sistema para que se inicie automáticamente en el arranque.
La quinta tarea instala la biblioteca MySQL Python 3 pymysql. Esto se requiere para acceder a MySQL desde Ansible.
Ejecutar el install_mysql_ubuntu20.yaml Libro de jugadas, como sigue:
$ Ansible-Playbook Playbooks/install_mysql_ubuntu20.yamlComo puedes ver, el libro de jugadas install_mysql_ubuntu20.yaml corrió con éxito.
En mi ubuntu 20.04 LTS Host, puedo acceder a MySQL como el raíz Usuario sin contraseña, como puede ver en la captura de pantalla a continuación.
$ sudo mysql -u rootAhora que el servidor MySQL está instalado, es hora de configurar una contraseña de root para el servidor MySQL.
Crear un nuevo archivo variable de grupo ubuntu20 (en el Group_vars/ directorio) para el ubuntu20 grupo, como sigue:
$ nano group_vars/ubuntu20Agregar una nueva variable, mysql_pass, con la contraseña de root (en mi caso, muy secreto) que le gustaría establecer, como se muestra en la captura de pantalla a continuación.
Una vez que haya terminado, presione + X, seguido por Y y , Para guardar el archivo.
Crea un nuevo libro de jugadas set_root_pass_ubuntu20.yaml Con el siguiente comando:
$ Nano Playbooks/set_root_pass_ubuntu20.yamlEscriba las siguientes líneas en el set_root_pass_ubuntu20.yaml archivo:
- Anfitriones: Ubuntu20Una vez que haya terminado, presione + X, seguido por Y y , Para salvar el set_root_pass_ubuntu20.yaml archivo.
Aquí, he definido tres tareas.
La primera tarea cambia el complemento de autenticación del MySQL raíz usuario de auth_socket a mysql_native_password.
La segunda tarea recarga todos los privilegios.
La tercera tarea usa el mysql_user Módulo ansible para establecer una contraseña de root mySQL.
En la tercera tarea, el Login_host, Login_user, y contraseña de inicio de sesión opciones de la mysql_user El módulo Ansible se utilizan para establecer el nombre de host de inicio de sesión, nombre de usuario y contraseña de inicio de sesión mySQL actual, respectivamente. Por defecto, el nombre host de inicio de sesión mysql (Login_host) es hostil, el nombre de usuario de inicio de sesión (Login_user) es raíz, y el inicio de sesión contraseña (contraseña de inicio de sesión) esta vacio (") en el sistema.
Aquí el contraseña opción del mysql_user El módulo Ansible se usa para establecer una nueva contraseña de root de MySQL. La contraseña de root mySQL será el valor del mysql_pass variable de grupo, que establecí anteriormente, en el Group_vars/Ubuntu20 archivo.
Ejecutar el libro de jugadas set_root_pass_ubuntu20.yaml Con el siguiente comando:
$ Ansible-Playbook Playbooks/set_root_pass_ubuntu20.yamlEl libro de jugadas se ejecutó con éxito, como puede ver en la captura de pantalla a continuación:
Como puede ver, ya no puedo iniciar sesión en el servidor MySQL sin una contraseña de root.
$ sudo mysql -u rootPara iniciar sesión en el servidor MySQL como usuario raíz con la contraseña establecida, ejecute el siguiente comando en su Ubuntu 20.04 LTS Host:
$ sudo mysql -u root -pEscriba la contraseña de root que ha establecido usando Ansible y presione .
Debe iniciarse sesión en el servidor MySQL como usuario root.
Conclusión
Este artículo le mostró cómo instalar el servidor MySQL y establecer una contraseña de root MySQL en CentOS 8 y Ubuntu 20.04 distribuciones LTS Linux usando Ansible. Este artículo usó el mysql_user Módulo Ansible para configurar la contraseña de root de MySQL. Puede usar este módulo para cambiar la contraseña de root de MySQL, crear nuevos usuarios de MySQL y antes de muchas más funciones de administración de usuarios.
Para más información sobre el mysql_user Módulo, verifique la documentación oficial del módulo mysql_user.