Versões:
Método de instalação:
Instalei o Ansible da seguinte maneira:
TARGET = "/ tmp / ansible01" sudo apt-get install python-setuptools sudo easy_install virtualenv cd $ TARGET && virtualenv ansible fonte $ TARGET / ansible / bin / activate pip install ansible
Descrição:
Usando este manual (copiar / colar da documentação), a consulta mysql no cliente é capaz de realmente criar o usuário. Mas não consegue aplicar os privilégios.
- nome: Configuração de senha de usuário Galera mysql_user: login_user = {{mysql_user}} login_password = {{mysql_password}} name = {{galera_user}} password = {{galera_password}} state = present priv = *. *: ALL
Erro lançado:
REMOTE_MODULE mysql_user login_user = root login_password = nome curioso = senha elvis = estado da primavera = presente priv = *. *: ALL fatal: [c6-4] => falha ao analisar: Traceback (última chamada mais recente): Arquivo "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", linha 1348, em a Principal() Arquivo "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", linha 405, no principal alterado = user_mod (cursor, usuário, host, senha, priv) Arquivo "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", linha 188, em user_mod privileges_revoke (cursor, usuário, host, db_table, grant_option) Arquivo "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", linha 263, em privileges_revoke cursor.execute (consulta) Arquivo "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", linha 173, em execução self.errorhandler (self, exc, value) Arquivo "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", linha 36, em defaulterrorhandler aumentar errorclass, errorvalue _mysql_exceptions.OperationalError: (1045, "Acesso negado para o usuário 'root' @ 'localhost' (usando senha: SIM)") FATAL: todos os hosts já falharam - abortando
Observe que o usuário realmente é criado:
[root @ c6-4 ~] # mysql mysql -e "selecionar Host, Usuário do usuário;" | grep elvis | localhost | elvis |
Esta parece ser uma questão de autenticação do módulo MySQL (provavelmente uma necessidade de definir my.cnf, etc), por favor, pare na lista de discussão se você precisar de ajuda.
Lição aprendida: não copie / cole de documentos sem pensar.
Para as gerações futuras:
Usei esta tarefa para alterar a senha do usuário mysql 'root':
- nome- nome: Configurando a senha de root do MySQL mysql_user: name = root password = {{mysql_password}} priv = *. *: ALL estado = presente
Parece que isso superou as permissões GRANT de 'root', portanto, falhando na próxima parte de conceder privs a um usuário recém-criado ....
Porra, o mesmo aconteceu comigo. docs devem ser alterados aqui o mais rápido possível.
Agora tenho que consertar vários sistemas manualmente :(
Demorei muito para descobrir por que algumas chamadas em usuários existentes ou a remoção de usuários funcionam bem, mas criar novos é impossível com as mesmas credenciais corretas ....
ele deve ser reaberto até que os documentos sejam corrigidos e deve haver um mecanismo de prevenção no módulo mysql_user ou pelo menos um aviso !!!
isso pode quebrar potencialmente muitos sistemas e encontrá-los ou consertá-los é complicado.
Se alguém realmente deseja remover a concessão por meio de priv=*.*:ALL
, deve haver outra opção para forçar isso até mesmo para o usuário root (com um grande aviso nos documentos de que isso pode deixá-lo sem nenhum usuário com privilégios de concessão) ou deve falhar se não encontrar nenhum usuário com privilégios de concessão restantes ...
A correção manual é reiniciar o mysql com a opção:
--skip-grant-tables
E execute os seguintes comandos no comando mysql (NOTA: GRANT ... ALL ..não funciona, uma vez que as tabelas de permissões são puladas duh):
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;