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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
Si el registro binario debe habilitarse o deshabilitarse para la conexión. |
estado cuerda |
|
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 |
|
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
ylogin_user
son necesarios cuando se pasan las credenciales. Si no hay ninguno presente, el módulo intentará leer las credenciales de~/.my.cnf
y, 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)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)