Версии:
Метод установки:
Я установил Ansible следующим образом:
TARGET = "/ tmp / ansible01" sudo apt-get install python-setuptools sudo easy_install virtualenv cd $ TARGET && virtualenv ansible источник $ TARGET / ansible / bin / activate pip install ansible
Описание:
Используя эту книгу (скопируйте / вставьте из документации), запрос mysql на клиенте может фактически создать пользователя. Но он не применяет привилегии.
- name: Установка пароля пользователя Galera mysql_user: login_user = {{mysql_user}} login_password = {{mysql_password}} name = {{galera_user}} пароль = {{galera_password}} state = present priv = *. *: ALL
Выброшенная ошибка:
REMOTE_MODULE mysql_user login_user = root login_password = любопытное имя = пароль elvis = состояние пружины = присутствует priv = *. *: ВСЕ фатальный: [c6-4] => не удалось проанализировать: Traceback (последний вызов последним): Файл "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", строка 1348, в основной() Файл "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", строка 405, в основном изменено = user_mod (курсор, пользователь, хост, пароль, Priv) Файл "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", строка 188, в user_mod привилегии_revoke (курсор, пользователь, хост, db_table, grant_option) Файл "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user", строка 263, в привилегиях_revoke cursor.execute (запрос) Файл "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", строка 173, выполняется self.errorhandler (self, exc, значение) Файл "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", строка 36, в defaulterrorhandler поднять класс ошибок, значение ошибки _mysql_exceptions.OperationalError: (1045, «Доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: ДА)») FATAL: все хосты уже вышли из строя - прерывание
Обратите внимание, что пользователь действительно создается:
[root @ c6-4 ~] # mysql mysql -e "выбрать хост, пользователя от пользователя;" | grep elvis | localhost | Элвис |
Похоже, это вопрос аутентификации модуля MySQL (возможно, необходимо установить my.cnf и т. Д.), Пожалуйста, зайдите в список рассылки, если вам нужна помощь.
Извлеченный урок: не копируйте / вставляйте из документов, не задумываясь.
Для будущих поколений:
Я использовал эту задачу, чтобы изменить пароль пользователя mysql 'root':
- name- name: Установка пароля root MySQL mysql_user: name = root password = {{mysql_password}} priv = *. *: ВСЕ состояние = присутствует
Похоже, что это привело к блокировке разрешений GRANT для 'root', следовательно, не удалось выполнить следующий бит предоставления привилегий только что созданному пользователю ....
Бля, со мной то же самое случилось. документы должны быть изменены здесь как можно скорее.
Теперь приходится много систем исправлять вручную :(
Мне потребовалась вечность, чтобы понять, почему некоторые вызовы существующих пользователей или удаление пользователей работают нормально, но создание новых невозможно с такими же правильными учетными данными ...
его следует открывать повторно, пока не будут исправлены документы и в модуле mysql_user должен быть механизм предотвращения или хотя бы предупреждение !!!
это может потенциально привести к поломке многих систем, и найти или исправить это будет непросто.
Если кто-то действительно захочет удалить грант через priv=*.*:ALL
должен быть другой вариант, чтобы принудительно сделать это даже для пользователя root (с большим предупреждением в документах, что это может оставить вас без пользователей с привилегиями Grant) или должен потерпеть неудачу, если не найдет пользователя с оставшимися привилегиями предоставления ...
Исправление вручную - перезапустить mysql с опцией:
--skip-grant-tables
И выполните следующие команды в команде mysql (ПРИМЕЧАНИЕ: GRANT ... ALL .. не работает, так как эти таблицы предоставления пропущены, да):
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;