バージョン:
インストール方法:
次の方法で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クエリで実際にユーザーを作成できます。 しかし、それは特権を適用することに失敗します。
-名前:Galeraユーザーパスワードの設定 mysql_user:login_user = {{mysql_user}} login_password = {{mysql_password}} name = {{galera_user}} password = {{galera_password}} state = present priv = *。*:ALL
スローされたエラー:
REMOTE_MODULE mysql_user login_user = root login_password = curious name = elvis password = spring state = present priv = *。*:ALL 致命的:[c6-4] =>解析に失敗しました:トレースバック(最後の最後の呼び出し): ファイル "/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 rights_revoke(カーソル、ユーザー、ホスト、db_table、grant_option) ファイル "/root/.ansible/tmp/ansible-1380442867.96-101659379289717/mysql_user"、263行目、privileges_revoke cursor.execute(query) ファイル "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py"、行173、実行中 self.errorhandler(self、exc、value) defaulterrorhandlerのファイル "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py"、行36 errorclass、errorvalueを上げる _mysql_exceptions.OperationalError:(1045、 "ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES)") 致命的:すべてのホストがすでに失敗しています-中止
ユーザーは実際に作成されることに注意してください。
[root @ c6-4〜] #mysql mysql -e "select Host、User from user;" | grep elvis | ローカルホスト| エルビス|
これはMySQLモジュール認証の質問のようです(おそらくmy.cnfを設定する必要があるなど)。助けが必要な場合は、メーリングリストに立ち寄ってください。
教訓:考えずにドキュメントからコピー/貼り付けしないでください。
将来の世代のために:
このタスクを使用して、mysqlユーザー「root」のパスワードを変更しました。
--name- name:MySQLルートパスワードの設定 mysql_user:name = root password = {{mysql_password}} priv = *。*:ALL state = present
これにより、「root」のGRANT権限が破壊されたため、新しく作成されたユーザーに特権を付与する次のビットに失敗したようです。
クソ、私も同じことが起こった。 ドキュメントはここでできるだけ早く変更する必要があります。
今、私は多くのシステムを手動で修正する必要があります:(
既存のユーザーへの一部の呼び出しまたはユーザーの削除が正常に機能するのに、同じ正しいクレデンシャルでは新しい呼び出しを作成できない理由を理解するために、私は永遠にかかりました。
ドキュメントが修正され、mysql_userモジュールに防止メカニズムがあるか、少なくとも警告が表示されるまで、これを再度開く必要があります。
これは多くのシステムを潜在的に破壊する可能性があり、それを見つけたり修正したりするのは面倒です。
誰かが本当にpriv=*.*:ALL
を介して許可を削除したい場合は、rootユーザーに対してもこれを強制する別のオプションが必要です(これにより、許可特権を持つユーザーがいない可能性があるという大きな警告がドキュメントにあります)。付与権限を持つユーザーが残っていない場合は失敗するはずです...
手動による修正は、次のオプションを使用してmysqlを再起動することです。
--skip-grant-tables
そして、mysqlコマンドで次のコマンドを実行します(注:GRANT ... ALL ..その許可テーブルはスキップされるため、機能しません):
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;