Versiones:
Método de instalación:
Instalé Ansible de la siguiente manera:
OBJETIVO = "/ tmp / ansible01" sudo apt-get install python-setuptools sudo easy_install virtualenv cd $ TARGET && virtualenv ansible fuente $ TARGET / ansible / bin / activo pip instalar ansible
Descripción:
Usando este libro de jugadas (copiar / pegar de la documentación), la consulta de mysql en el cliente es capaz de crear al usuario. Pero no aplica los privilegios.
- nombre: Configuración de la contraseña de usuario de Galera mysql_user: login_user = {{mysql_user}} login_password = {{mysql_password}} nombre = {{galera_user}} contraseña = {{galera_password}} estado = presente priv = *. *: TODOS
Error arrojado:
REMOTE_MODULE mysql_user login_user = root login_password = nombre curioso = contraseña de elvis = estado de primavera = presente priv = *. *: TODOS fatal: [c6-4] => no se pudo analizar: Traceback (última llamada más reciente): Archivo "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", línea 1348, en principal() Archivo "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", línea 405, en main cambiado = user_mod (cursor, usuario, host, contraseña, priv) Archivo "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", línea 188, en user_mod privileges_revoke (cursor, usuario, host, db_table, grant_option) Archivo "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", línea 263, en privileges_revoke cursor.execute (consulta) Archivo "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", línea 173, en ejecución self.errorhandler (self, exc, value) Archivo "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", línea 36, en defaulterrorhandler elevar errorclass, errorvalue _mysql_exceptions.OperationalError: (1045, "Acceso denegado para el usuario 'root' @ 'localhost' (usando contraseña: YES)") FATAL: todos los hosts ya han fallado - abortando
Tenga en cuenta que el usuario realmente se crea:
[root @ c6-4 ~] # mysql mysql -e "seleccionar Host, User from user;" | grep elvis | localhost | elvis |
Esta parece ser una pregunta de autenticación del módulo MySQL (probablemente una necesidad de configurar my.cnf, etc.), por favor pase por la lista de correo si desea ayuda.
Lección aprendida: no copie / pegue documentos sin pensar.
Para las generaciones futuras:
Usé esta tarea para cambiar la contraseña del usuario de mysql 'root':
- nombre- nombre: Configuración de la contraseña raíz de MySQL mysql_user: nombre = contraseña raíz = {{mysql_password}} priv = *. *: TODO el estado = presente
Parece que esto golpeó los permisos GRANT de 'root', por lo tanto, falló el siguiente bit de otorgar privilegios a un usuario recién creado ...
Joder, a mí me pasó lo mismo. Los documentos deben cambiarse aquí lo antes posible.
Ahora tengo que arreglar muchos sistemas manualmente :(
Me tomó una eternidad descubrir por qué algunas llamadas a usuarios existentes o eliminar usuarios funcionan bien, pero crear nuevos es imposible con las mismas credenciales correctas ...
¡¡¡Esto debería ser reabierto hasta que los documentos estén arreglados y debería haber un mecanismo de prevención en el módulo mysql_user o al menos una advertencia !!!
esto puede potencialmente romper muchos sistemas y encontrarlo o arreglarlo es engorroso.
Si alguien realmente quisiera eliminar la concesión a través de priv=*.*:ALL
, debería haber otra opción para forzar esto incluso para el usuario root (con una gran advertencia en los documentos de que esto podría dejarlo sin ningún usuario con privilegios de concesión) o debería fallar si no encuentra ningún usuario con privilegios de concesión restantes ...
La solución manual es reiniciar mysql con la opción:
--skip-grant-tables
Y ejecute los siguientes comandos en el comando mysql (NOTA: GRANT ... ALL ... no funciona ya que las tablas de concesiones se omiten):
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;