Ansible

Cómo configurar la contraseña raíz de MySQL usando Ansible

Cómo configurar la contraseña raíz de MySQL usando Ansible
La mayoría de las distribuciones de Linux, incluidas CentOS / RHEL y Ubuntu / Debian, no configuran la contraseña raíz de MySQL automáticamente. Como la contraseña de root de MySQL no se establece automáticamente, se puede iniciar sesión en la consola de MySQL como root sin ninguna contraseña. Esto no es muy bueno para la seguridad.

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 usa un complemento de autenticación diferente para el raíz usuario.

Este artículo le mostrará cómo configurar una contraseña raíz de MySQL en CentOS 8 y Ubuntu 20.04 distribuciones LTS Linux usando módulos Ansible.

Prerrequisitos


Si desea probar los ejemplos incluidos en este artículo,

1) Debes tener Ansible instalado en tu 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 la automatización de Ansible. Puede consultar estos si es necesario.

Configurar un directorio de proyectos

Antes de continuar, configuraremos un nuevo directorio de proyectos de Ansible, solo para mantener las cosas un poco organizadas.

Para crear el directorio del proyecto mysql-root-pass / y todos los subdirectorios necesarios (en su directorio de trabajo actual), ejecute el siguiente comando:

$ mkdir -pv mysql-root-pass / playbooks, host_vars, group_vars

Una vez que se crea el directorio del proyecto, navegue hasta el directorio del proyecto, de la siguiente manera:

$ cd mysql-root-pass /

Crear un Hospedadores archivo de inventario, de la siguiente manera:

$ nano hosts

Agregue la IP de host o los nombres DNS 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 siguiente.

Una vez que haya terminado, guarde el archivo presionando + X, seguido por Y y .

Aquí, he creado dos grupos, centos8, y ubuntu20. La centos8 el grupo tiene el nombre DNS de mi host CentOS 8, vm3.nodekite.com; y el ubuntu20 grupo tiene el nombre DNS de mi Ubuntu 20.04 anfitrión LTS, vm7.nodekite.com.

Cree un archivo de configuración de Ansible ansible.cfg en el directorio de su proyecto, de la siguiente manera:

$ nano ansible.cfg

Escriba las siguientes líneas en el ansible.cfg expediente:

[valores predeterminados]
inventario = hosts
host_key_checking = Falso

Una vez que haya terminado, guarde el ansible.cfg archivo presionando + X, seguido por Y y .

Intente hacer ping a todos los hosts que ha agregado en su Hospedadores archivo de inventario, de la siguiente manera:

$ ansible all -u ansible -m ping

Como puede ver, el host my CentOS 8 (vm3.nodekite.com) y Ubuntu 20.04 host LTS (vm7.nodekite.com) son accesibles.

Instalación de MySQL y configuración de contraseña raíz 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 debería funcionar en RHEL 8.

Crea el nuevo libro de jugadas de Ansible install_mysql_centos8.yaml en el libros de jugadas / directorio, de la siguiente manera:

$ nano playbooks / install_mysql_centos8.yaml

Escriba las siguientes líneas en el install_mysql_centos8.yaml expediente:

- anfitriones: centos8
usuario: ansible
hecho realidad
Tareas:
- nombre: Actualizar la caché del repositorio del paquete DNF
dnf:
update_cache: Verdadero
- nombre: Instale el servidor MySQL en CentOS 8
dnf:
nombre: servidor mysql
estado: presente
- nombre: Instale el cliente MySQL en CentOS 8
dnf:
nombre: mysql
estado: presente
- nombre: asegúrese de que el servicio mysqld se esté ejecutando
Servicio:
nombre: mysqld
estado: iniciado
habilitado: Verdadero

- nombre: instalar la biblioteca python3-PyMySQL
dnf:
nombre: python3-PyMySQL
estado: presente

Una vez que haya terminado, presione + X, seguido por Y y , para salvar el install_mysql_centos8.yaml expediente.

La línea a continuación le dice a Ansible que ejecute el libro de jugadas install_mysql_centos8.yaml en cada host en el centos8 grupo.

Aquí, he definido 5 tareas.

La primera tarea actualiza el caché del repositorio de paquetes DNF de CentOS 8 utilizando Ansible dnf módulo.

La segunda tarea instala el paquete del 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 inicio.

La quinta tarea instala la biblioteca MySQL de Python 3 pymysql. Esto es necesario para acceder a MySQL desde Ansible.

Ejecutar el install_mysql_centos8.yaml libro de jugadas, de la siguiente manera:

$ ansible-playbook playbooks / install_mysql_centos8.yaml

Como puede ver, el libro de jugadas install_mysql_centos8.yaml corrió con éxito.

En mi host CentOS 8, puedo acceder a MySQL como raíz usuario sin contraseña, como puede ver en la captura de pantalla a continuación:

$ sudo mysql -u root

Ahora que el servidor MySQL está instalado, es hora de configurar una contraseña de root para el servidor MySQL.

Cree el nuevo archivo de variable de grupo centos8 (en el group_vars / directorio) para el centos8 grupo, de la siguiente manera:

$ nano group_vars / centos8

Agregar una nueva variable mysql_pass con la contraseña de root (en mi caso, secreto) que le gustaría configurar, 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_centos8.yaml con el siguiente comando:

$ nano playbooks / set_root_pass_centos8.yaml

Escriba las siguientes líneas en el set_root_pass_centos8.yaml expediente:

- anfitriones: centos8
usuario: ansible
hecho realidad
Tareas:
- name: Establecer contraseña de root de MySQL
mysql_user:
login_host: 'localhost'
login_user: 'root'
contraseña de inicio de sesión: "
nombre: 'root'
contraseña: 'mysql_pass'
estado: presente

Una vez que haya terminado, presione + X, seguido por Y y , para salvar el set_root_pass_centos8.yaml expediente.

Este libro de jugadas utiliza el mysql_user Módulo Ansible para establecer una contraseña de root de MySQL.

La login_host, login_user, y contraseña de inicio de sesión opciones de la mysql_user El módulo Ansible se utiliza para establecer el nombre de host, el nombre de usuario y la contraseña de inicio de sesión de MySQL, respectivamente. De forma predeterminada, el nombre de host de inicio de sesión de MySQL (login_host) es el localhost, 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.

La contraseña opción de la mysql_user El módulo Ansible se usa para establecer una nueva contraseña raíz de MySQL, aquí. La contraseña de root de MySQL será el valor de la mysql_pass variable de grupo que se estableció anteriormente.

Ejecuta el libro de jugadas set_root_pass_centos8.yaml con el siguiente comando:

$ ansible-playbook playbooks / set_root_pass_centos8.yaml

El libro de jugadas se ejecutó correctamente, como se ve en la siguiente captura de pantalla:

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 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 con Ansible y presione .

Debe iniciar sesión en el servidor MySQL como el raíz usuario.

Instalación de MySQL y configuración de 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 de Ansible install_mysql_ubuntu20.yaml en el libros de jugadas / directorio, de la siguiente manera:

$ nano playbooks / install_mysql_ubuntu20.yaml

Escriba las siguientes líneas en el install_mysql_ubuntu20.yaml expediente:

- hosts: ubuntu20
usuario: ansible
hecho realidad
Tareas:
- nombre: Actualizar la caché del repositorio del paquete APT
apto:
update_cache: Verdadero
- nombre: Instale el servidor MySQL en Ubuntu 20.04 LTS
apto:
nombre: servidor mysql
estado: presente
- nombre: Instale el cliente MySQL en Ubuntu 20.04 LTS
apto:
nombre: mysql-client
estado: presente
- nombre: asegúrese de que el servicio mysql se esté ejecutando
Servicio:
nombre: mysql
estado: iniciado
habilitado: Verdadero
- nombre: instalar la biblioteca python3-pymysql
apto:
nombre: python3-pymysql
estado: presente

Una vez que haya terminado, presione + X, seguido por Y y , para salvar el install_mysql_ubuntu20.yaml expediente.

La siguiente línea le dice a Ansible que ejecute el libro de jugadas install_mysql_ubuntu20.yaml en cada host en el ubuntu20 grupo:

Aquí, he definido 5 tareas.

La primera tarea actualiza la caché del repositorio de paquetes APT de Ubuntu 20.04 LTS usando Ansible apto módulo.

La segunda tarea instala el paquete del 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 inicio.

La quinta tarea instala la biblioteca MySQL de Python 3 pymysql. Esto es necesario para acceder a MySQL desde Ansible.

Ejecutar el install_mysql_ubuntu20.yaml libro de jugadas, de la siguiente manera:

$ ansible-playbook playbooks / install_mysql_ubuntu20.yaml

Como puede ver, el libro de jugadas install_mysql_ubuntu20.yaml corrió con éxito.

En mi Ubuntu 20.04 LTS, puedo acceder a MySQL como raíz usuario sin contraseña, como puede ver en la captura de pantalla a continuación.

$ sudo mysql -u root

Ahora que el servidor MySQL está instalado, es el momento de configurar una contraseña de root para el servidor MySQL.

Crear un nuevo archivo de variable de grupo ubuntu20 (en el group_vars / directorio) para el ubuntu20 grupo, de la siguiente manera:

$ nano group_vars / ubuntu20

Agregar una nueva variable, mysql_pass, con la contraseña de root (en mi caso, muy secreto) que le gustaría configurar, 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.yaml

Escriba las siguientes líneas en el set_root_pass_ubuntu20.yaml expediente:

- hosts: ubuntu20
usuario: ansible
hecho realidad
Tareas:
- nombre: cambie el complemento de autenticación del usuario raíz de MySQL a mysql_native_password
shell: mysql -u root -e 'ACTUALIZAR mysql.usuario SET plugin = "mysql_native_password"
DONDE usuario = "root" Y host = "localhost" '
- name: Privilegios de descarga
shell: mysql -u root -e 'PRIVILEGIOS DE DESCARGA'
- nombre: establece la contraseña de root de MySQL
mysql_user:
login_host: 'localhost'
login_user: 'root'
contraseña de inicio de sesión: "
nombre: 'root'
contraseña: 'mysql_pass'
estado: presente

Una vez que haya terminado, presione + X, seguido por Y y , para salvar el set_root_pass_ubuntu20.yaml expediente.

Aquí, he definido tres tareas.

La primera tarea cambia el complemento de autenticación de 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 de 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 utiliza para establecer el nombre de host, el nombre de usuario y la contraseña de inicio de sesión de MySQL, respectivamente. De forma predeterminada, el nombre de host de inicio de sesión de MySQL (login_host) es localhost, 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 de la mysql_user El módulo Ansible se usa para establecer una nueva contraseña de root de MySQL. La contraseña de root de MySQL será el valor de la mysql_pass variable de grupo, que configuré anteriormente, en la group_vars / ubuntu20 expediente.

Ejecuta el libro de jugadas set_root_pass_ubuntu20.yaml con el siguiente comando:

$ ansible-playbook playbooks / set_root_pass_ubuntu20.yaml

El libro de jugadas se ejecutó correctamente, 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 root

Para iniciar sesión en el servidor MySQL como usuario root con la contraseña establecida, ejecute el siguiente comando en su Ubuntu 20.04 anfitrión LTS:

$ sudo mysql -u root -p

Escriba la contraseña de root que ha establecido con Ansible y presione .

Debe iniciar 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 raíz de MySQL en CentOS 8 y Ubuntu 20.04 distribuciones LTS de Linux usando Ansible. Este artículo utilizó el mysql_user Módulo Ansible para configurar la contraseña raíz de MySQL. Puede usar este módulo para cambiar la contraseña raíz de MySQL, crear nuevos usuarios de MySQL y, por lo tanto, muchas más funciones de administración de usuarios.

Para obtener más información sobre mysql_user módulo, consulte la documentación oficial del módulo mysql_user.

Cómo instalar League Of Legends en Ubuntu 14.04
Si eres fanático de League of Legends, esta es una oportunidad para que pruebes League of Legends. Tenga en cuenta que LOL es compatible con PlayOnLin...
Instale el último juego de estrategia de OpenRA en Ubuntu Linux
OpenRA es un motor de juego de estrategia en tiempo real libre / gratuito que recrea los primeros juegos de Westwood como el clásico Command & Conquer...
Instale el último emulador de Dolphin para Gamecube y Wii en Linux
Dolphin Emulator te permite jugar los juegos de Gamecube y Wii que elijas en computadoras personales con Linux (PC). Al ser un emulador de juegos de ...