Nota

Este complemento es parte del colección community.mysql (versión 1.2.0).

Para instalarlo use: ansible-galaxy collection install community.mysql.

Para usarlo en un libro de jugadas, especifique: community.mysql.mysql_user.

  • Sinopsis
  • Requisitos
  • Parámetros
  • Notas
  • Ver también
  • Ejemplos de

Sinopsis

  • Agrega o elimina un usuario de una base de datos MySQL.

Requisitos

Los siguientes requisitos son necesarios en el host que ejecuta este módulo.

  • PyMySQL (Python 2.7 y Python 3.X), o
  • MySQLdb (Python 2.x)

Parámetros

Parámetro Opciones / Valores predeterminados Comentarios
append_privs booleano
    Opciones:

  • no
Agregue los privilegios definidos por priv a los existentes para este usuario en lugar de sobrescribir los existentes.
ca_cert sendero La ruta a un certificado de autoridad certificadora (CA). Esta opción, si se utiliza, debe especificar el mismo certificado que utiliza el servidor.

alias: ssl_ca
check_hostname booleano agregado en 1.1.0 de community.mysql
    Opciones:

  • no
Si validar el nombre de host del servidor cuando se requiere una conexión SSL. Estableciendo esto en false deshabilita la verificación del nombre de host. Úselo con precaución. Requiere pymysql> = 0.7.11. Esta optoína no tiene ningún efecto sobre MySQLdb.
check_implicit_admin booleano
    Opciones:

  • no
Compruebe si mysql permite el inicio de sesión como root / nopassword antes de probar las credenciales proporcionadas. Si tiene éxito, pasó login_user/contraseña de inicio de sesión será ignorado.
client_cert sendero La ruta a un certificado de clave pública de cliente.

alias: ssl_cert
clave_cliente sendero La ruta a la clave privada del cliente.

alias: ssl_key
archivo de configuración sendero Defecto:
“~ / .my.cnf”
Especifique un archivo de configuración desde el que se leerán el usuario y la contraseña.
connect_timeout entero Defecto:
30
El tiempo de espera de la conexión al conectarse al servidor MySQL.
cifrado booleano
    Opciones:

  • no
Indique que el campo “contraseña” es un hash “mysql_native_password”.
anfitrión cuerda Defecto:
“localhost”
La parte ‘host’ del nombre de usuario de MySQL.
host_all booleano
    Opciones:

  • no
Anule la opción de host, haciendo que ansible aplique cambios a todos los nombres de host para un usuario determinado. Esta opción no se puede utilizar al crear usuarios.
login_host cuerda Defecto:
“localhost”
Host que ejecuta la base de datos. En algunos casos, para conexiones locales, login_unix_socket = / ruta / a / mysqld / socket, que suele ser /var/run/mysqld/mysqld.sock, debe usarse en lugar de login_host = localhost.
contraseña de inicio de sesión cuerda La contraseña utilizada para autenticarse.
login_port entero Defecto:
3306
Puerto del servidor MySQL. Requiere login_host definirse como distinto de localhost si se utiliza login_port.
login_unix_socket cuerda La ruta a un socket de dominio Unix para conexiones locales.
login_user cuerda El nombre de usuario utilizado para autenticarse.
nombre cuerda / requerido Nombre del usuario (función) que se agregará o eliminará.
contraseña cuerda Establezca la contraseña del usuario.
enchufar cuerda agregado en 0.1.0 de community.mysql Complemento del usuario para autenticarse (“ CREAR USUARIO DE USUARIO IDENTIFICADO CON el complemento ”).
plugin_auth_string cuerda agregado en 0.1.0 de community.mysql Complemento de usuario auth_string (“ CREAR USUARIO usuario IDENTIFICADO CON complemento POR plugin_auth_string ”).
plugin_hash_string cuerda agregado en 0.1.0 de community.mysql Cadena de hash del complemento del usuario (“ CREAR USUARIO usuario IDENTIFICADO CON el complemento COMO plugin_hash_string ”).
priv crudo Cadena de privilegios de MySQL en el formato: db.table:priv1,priv2. Se pueden especificar varios privilegios separando cada uno con una barra diagonal: db.table:priv/db.table:priv. El formato está basado en MySQL GRANT declaración. Los nombres de bases de datos y tablas se pueden citar, al estilo MySQL. Si se utilizan privilegios de columna, priv1,priv2 La pieza debe ser exactamente como la devolvió un SHOW GRANT declaración. Si no se sigue, el módulo siempre informará los cambios. Incluye agrupar columnas por permiso (SELECT(col1,col2) en lugar de SELECT(col1, SELECCIONAR (col2))). Se puede pasar como diccionario (ver ejemplos).
resource_limits diccionario agregado en 0.1.0 de community.mysql Limite el usuario para ciertos recursos del servidor. Proporcionado desde MySQL 5.6 / MariaDB 10.2. Las opciones disponibles son MAX_QUERIES_PER_HOUR: num, MAX_UPDATES_PER_HOUR: num, MAX_CONNECTIONS_PER_HOUR: num, MAX_USER_CONNECTIONS: num. Usado cuando estado = presente, ignorado de lo contrario.
sql_log_bin booleano
    Opciones:

  • no
Si el registro binario debe habilitarse o deshabilitarse para la conexión.
estado cuerda
    Opciones:

  • ausente
  • regalo
Si el usuario debería existir. Cuando absent, elimina al usuario.
tls_requires diccionario agregado en 1.0.0 de community.mysql Establezca los requisitos para el transporte seguro como un diccionario de requisitos (consulte los ejemplos). Los requisitos válidos son SSL, X509, SUBJECT, ISSUER, CIPHER. SUBJECT, ISSUER y CIPHER son complementarios y mutuamente excluyentes con SSL y X509.
https://mariadb.com/kb/en/securing-connections-for-client-and-server/#requiring-tls.
Actualiza contraseña cuerda
    Opciones:

  • siempre
  • on_create
always actualizará las contraseñas si difieren.
on_create solo establecerá la contraseña para los usuarios recién creados.

Notas

Nota

  • El servidor MySQL se instala por defecto login_user de root y sin contraseña. Para proteger a este usuario como parte de un libro de jugadas idempotente, debe crear al menos dos tareas: 1) cambiar la contraseña del usuario raíz, sin proporcionar ninguna login_user/contraseña de inicio de sesión detalles, 2) soltar un ~/.my.cnf archivo que contiene las nuevas credenciales de root. Las ejecuciones posteriores del libro de jugadas se realizarán correctamente al leer las nuevas credenciales del archivo.
  • Actualmente, solo hay soporte para mysql_native_password módulo hash de contraseña cifrada.
  • Soporta (check_mode).
  • Requiere el paquete PyMySQL (Python 2.7 y Python 3.X) o MySQL-python (Python 2.X) instalado en el host remoto. El paquete de Python se puede instalar con apt-get install python-pymysql (Ubuntu; consulte ansible.builtin.apt) o yum install python2-PyMySQL (RHEL / CentOS / Fedora; ver ansible.builtin.yum). También puede usar dnf install python2-PyMySQL para versiones más nuevas de Fedora; ver ansible.builtin.dnf.
  • Asegúrese de tener la biblioteca PyMySQL o MySQLdb instalada en la máquina de destino para el intérprete de Python que Ansible usa, por ejemplo, si es Python 3, debe instalar la biblioteca para Python 3. También puede cambiar el intérprete. Para más información, ver https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html.
  • Ambos login_password y login_user son necesarios cuando se pasan las credenciales. Si no hay ninguno presente, el módulo intentará leer las credenciales de ~/.my.cnfy, finalmente, vuelva a utilizar el inicio de sesión predeterminado de MySQL de ‘root’ sin contraseña.
  • Si hay problemas con las conexiones locales, utilice login_unix_socket = / ruta / a / mysqld / socket en lugar de login_host = localhost podría ayudar. Como ejemplo, la instalación predeterminada de MariaDB de la versión 10.4 y posteriores usa el complemento de autenticación unix_socket de manera predeterminada que sin usar login_unix_socket = / var / run / mysqld / mysqld.sock (la ruta predeterminada) provoca el error Host '127.0.0.1' is not allowed to connect to this MariaDB server.
  • Alternativamente, puede usar la biblioteca mysqlclient en lugar de MySQL-python (MySQLdb) que es compatible con Python 2.X y Python> = 3.5. Ver https://pypi.org/project/mysqlclient/ cómo instalarlo.

Ver también

Ver también

community.mysql.mysql_info

La documentación oficial sobre el community.mysql.mysql_info módulo.

Control de acceso de MySQL y referencia de administración de cuentas

Referencia completa de la documentación de control de acceso y administración de cuentas de MySQL.

Referencia de privilegios proporcionados por MySQL

Referencia completa de la documentación de privilegios proporcionada por MySQL.

Ejemplos de

- name: Removes anonymous user account for localhost
  community.mysql.mysql_user:
    name: ''
    host: localhost
    state: absent

- name: Removes all anonymous user accounts
  community.mysql.mysql_user:
    name: ''
    host_all: yes
    state: absent

- name: Create database user with name 'bob' and password '12345' with all database privileges
  community.mysql.mysql_user:
    name: bob
    password: 12345
    priv: '*.*:ALL'
    state: present

- name: Create database user using hashed password with all database privileges
  community.mysql.mysql_user:
    name: bob
    password: '*EE0D72C1085C46C5278932678FBE2C6A782821B4'
    encrypted: yes
    priv: '*.*:ALL'
    state: present

- name: Create database user with password and all database privileges and 'WITH GRANT OPTION'
  community.mysql.mysql_user:
    name: bob
    password: 12345
    priv: '*.*:ALL,GRANT'
    state: present

- name: Create user with password, all database privileges and 'WITH GRANT OPTION' in db1 and db2
  community.mysql.mysql_user:
    state: present
    name: bob
    password: 12345dd
    priv:
      'db1.*': 'ALL,GRANT'
      'db2.*': 'ALL,GRANT'

# Note that REQUIRESSL is a special privilege that should only apply to *.* by itself.
# Setting this privilege in this manner is supported for backwards compatibility only.
# Use 'tls_requires' instead.
- name: Modify user to require SSL connections
  community.mysql.mysql_user:
    name: bob
    append_privs: yes
    priv: '*.*:REQUIRESSL'
    state: present

- name: Modify user to require TLS connection with a valid client certificate
  community.mysql.mysql_user:
    name: bob
    tls_requires:
      x509:
    state: present

- name: Modify user to require TLS connection with a specific client certificate and cipher
  community.mysql.mysql_user:
    name: bob
    tls_requires:
      subject: '/CN=alice/O=MyDom, Inc./C=US/ST=Oregon/L=Portland'
      cipher: 'ECDHE-ECDSA-AES256-SHA384'

- name: Modify user to no longer require SSL
  community.mysql.mysql_user:
    name: bob
    tls_requires:

- name: Ensure no user named 'sally'@'localhost' exists, also passing in the auth credentials
  community.mysql.mysql_user:
    login_user: root
    login_password: 123456
    name: sally
    state: absent

# check_implicit_admin example
- name: >
    Ensure no user named 'sally'@'localhost' exists, also passing in the auth credentials.
    If mysql allows root/nopassword login, try it without the credentials first.
    If it's not allowed, pass the credentials
  community.mysql.mysql_user:
    check_implicit_admin: yes
    login_user: root
    login_password: 123456
    name: sally
    state: absent

- name: Ensure no user named 'sally' exists at all
  community.mysql.mysql_user:
    name: sally
    host_all: yes
    state: absent

- name: Specify grants composed of more than one word
  community.mysql.mysql_user:
    name: replication
    password: 12345
    priv: "*.*:REPLICATION CLIENT"
    state: present

- name: Revoke all privileges for user 'bob' and password '12345'
  community.mysql.mysql_user:
    name: bob
    password: 12345
    priv: "*.*:USAGE"
    state: present

# Example privileges string format
# mydb.*:INSERT,UPDATE/anotherdb.*:SELECT/yetanotherdb.*:ALL

- name: Example using login_unix_socket to connect to server
  community.mysql.mysql_user:
    name: root
    password: abc123
    login_unix_socket: /var/run/mysqld/mysqld.sock

- name: Example of skipping binary logging while adding user 'bob'
  community.mysql.mysql_user:
    name: bob
    password: 12345
    priv: "*.*:USAGE"
    state: present
    sql_log_bin: no

- name: Create user 'bob' authenticated with plugin 'AWSAuthenticationPlugin'
  community.mysql.mysql_user:
    name: bob
    plugin: AWSAuthenticationPlugin
    plugin_hash_string: RDS
    priv: '*.*:ALL'
    state: present

- name: Limit bob's resources to 10 queries per hour and 5 connections per hour
  community.mysql.mysql_user:
    name: bob
    resource_limits:
      MAX_QUERIES_PER_HOUR: 10
      MAX_CONNECTIONS_PER_HOUR: 5

# Example .my.cnf file for setting the root password
# [client]
# user=root
# password=n<_665{vS43y

Autores

  • Jonathan Mainguy (@Jmainguy)
  • Benjamin Malynovytch (@bmalynovytch)
  • Lukasz Tomaszkiewicz (@tomaszkiewicz)