2.7.0から2.7.1にアップグレードすると、 mysql_user
モジュールからこのエラーが発生し始めました。
unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, \"Access denied for user 'root'@'localhost'\")
タスクは次のとおりです。
# Write password to root home as readable only by root so future mysql
# operations can function.
- name: Write root login credentials
copy:
dest: /root/.my.cnf
owner: root
group: root
mode: 0600
content: |
# {{ ansible_note }}
[client]
user=root
password={{ db_root_password }}
# By default the root user has no password. Set one.
- name: Set root user password
mysql_user:
host: "{{ item }}"
name: root
password: "{{ db_root_password }}"
# Login without credentials
check_implicit_admin: yes
state: present
with_items:
- localhost
- "{{ ansible_hostname }}"
- 127.0.0.1
- ::1
後者は失敗します。
Ansible2.7.0は正常に動作します。
mysql_user
`` `下に貼り付けます
ansible 2.7.1
設定ファイル=なし
構成されたモジュール検索パス= ['/ Users / esamatti / .ansible / plugins / modules'、 '/ usr / share / ansible / plugins / modules']
ansiblepythonモジュールの場所= / usr / local / lib / python3.7 / site-packages / ansible
実行可能場所= / usr / local / bin / ansible
pythonバージョン= 3.7.0(デフォルト、2018年10月2日、09:18:58)[Clang 10.0.0(clang-1000.11.45.2)]
##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
ANSIBLE_PIPELINING(/Users/epeli/code/playbooks/ansible.cfg) = True
ANSIBLE_SSH_ARGS(/Users/epeli/code/playbooks/ansible.cfg) = -o ForwardAgent=yes
DEFAULT_FORKS(/Users/epeli/code/playbooks/ansible.cfg) = 100
DEFAULT_HOST_LIST(/Users/epeli/code/playbooks/ansible.cfg) = ['/Users/epeli/code/playbooks/tools/dynamic-inventory']
DEFAULT_REMOTE_USER(/Users/epeli/code/playbooks/ansible.cfg) = root
DEFAULT_SUDO_FLAGS(/Users/epeli/code/playbooks/ansible.cfg) = -HE
DEFAULT_VAULT_PASSWORD_FILE(env: ANSIBLE_VAULT_PASSWORD_FILE) = /Users/epeli/.ansible-vault-password
macOS Mojaveバージョン10.14(18A391)
そしてUbuntu18.04サーバー
概要を参照してください
paste below
TASK [mariadb : Set root user password] ********************************************************************************************************************************************************************************
failed: [1.2.3.4] (item=localhost) => {"changed": false, "item": "localhost", "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, \"Access denied for user 'root'@'localhost'\")"}
failed: [1.2.3.4] (item=customer) => {"changed": false, "item": "customer", "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, \"Access denied for user 'root'@'localhost'\")"}
failed: [1.2.3.4] (item=127.0.0.1) => {"changed": false, "item": "127.0.0.1", "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, \"Access denied for user 'root'@'localhost'\")"}
failed: [1.2.3.4] (item=::1) => {"changed": false, "item": "::1", "msg": "unable to connect to database, check login_user and login_password are correct or /root/.my.cnf has the credentials. Exception message: (1698, \"Access denied for user 'root'@'localhost'\")"}
こんにちは@epeli 、この問題を提出していただきありがとうございます!
説明で識別されるファイル:
これらのファイルが不正確な場合は、説明のcomponent name
セクションを更新するか、 !component
ボットコマンドを使用してください。
@epeliこんにちは、 https://github.com/ansible/ansible/pull/47809でこれを修正しますか?PRにコメントを追加してください
@timorungeご覧のとおり、このパッチがなくても、さまざまなmysqlユーザーを追加できました...
はい、私の問題はこのPRとは関係ありませんが、#47736と関係があるので、そこで話し続けます。 申し訳ありませんが、Dockerfileを提供できません。
同じことを別の順序で試しましたか? 基本的な意味:最初にパスワードなしでログインし、rootパスワードを設定し、その後.my.cnfを生成しますか?
最近使用しているPythonDBコネクタはどれですか? MySQLdbまたはPyMySQL?
cc @Jmainguy
ボットのヘルプについては、ここをクリックしてください
こんにちは、みんな、
Ansible 2.7.5で同じ問題が発生する可能性はありますか? mysql_dbを使用
ansible 2.7.5
config file = None
configured module search path = [u'/home/vagrant/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python2.7/dist-packages/ansible
executable location = /usr/local/bin/ansible
python version = 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]
ランニング:
`` `-名前:install_gerrit | MySQL DBの作成(使用する場合)
mysql_db:
名前: "{{item.db}}"
エンコーディング:latin1
状態:存在
with_items: '{{gerrit_db_info}}'
いつ:item.typeが定義され、item.type == "mysql"
Error:
失敗しました:[192.168.202.15] {
「変更された」:false、
「呼び出し」:{
"module_args":{
"照合": ""、
"config_file": "/root/.my.cnf"、
"connect_timeout":30、
"エンコーディング": "latin1"、
"ignore_tables":[]、
"login_host": "localhost"、
"login_password":null、
"login_port":3306、
"login_unix_socket":null、
"login_user":null、
"名前": "reviewdb"、
「クイック」:本当、
"single_transaction":false、
"ssl_ca":null、
"ssl_cert":null、
"ssl_key":null、
「状態」:「現在」、
「ターゲット」:null
}
}、
"アイテム":{
"db": "reviewdb"、
"host": "localhost"、
"合格": "xxxxxx"、
"タイプ": "mysql"、
"user": "gerrit"
}、
"msg": "データベースに接続できません。login_userとlogin_passwordが正しいか、/ root / .my.cnfに資格情報があります。例外メッセージ:(1698、u \"ユーザー 'root' @ 'localhost' \のアクセスが拒否されました")"
}
`` `
mysql_dbと同じ問題のようです-ansiblev2.7.0に戻ると問題が解決しました。
それがどこにあったかはわかりませんが、しばらく前(数週間?数ヶ月?)に同様の問題を調べました。その理由は、MySQLdb(libmysqlに基づく)がデフォルトでUnixソケットを使用して接続していたのに対し、PyMySQLはデフォルトでは、TCP経由でlocalhost
に接続していました。 MySQLサーバーへのルートアクセスがどのように構成されているかに応じて、これはこの問題を回避するのに役立つ場合があります。
私が言ったように、私は以前にこれをどこに書いたかを本当に覚えていません、そして私はもう詳細について本当によくわかりません、しかし多分これはこの問題を抱えているあなたの一人にそれを解決する方法のヒントを与えるでしょう:)
わかりました、見つけました。 10月2日の#ansible-develでのディスカッションで、接続に問題があったユーザー(空の文字列パスワードの処理が問題であると最初に疑った)は、最終的にlogin_unix_socket
を使用する必要があることに気付きました。 (私が上で述べた異なる振る舞いのために)、それでそれは彼のために働きました。 残念ながら、彼はその問題を作成しませんでした。
とにかく、 @ epeli @anniemelen @ bchanan03 、 login_unix_socket
オプションを試して、問題が解決するかどうかを確認できますか?
こんにちは、
Centos7、ansible2.7.6でも同じ問題が発生しました。
specifing socket=/var/lib/mysql/mysql.sock
で~/.my.cnf
またはmysql_dbタスクのlogin_unix_socket: /var/lib/mysql/mysql.sock
オプション
接続エラーを修正しています。
CC @Xyon @bmalynovytch @dagwieers @michaelcoburn @oneiroi @tolland
ボットのヘルプについては、ここをクリックしてください
cc @bmildren
ボットのヘルプについては、ここをクリックしてください
今まで申し訳ありませんが、このバグはまだ解決されていないと思います。
@nizarakbarmは私が提案したことを試し、
こんにちは@ felixfontein 、Ubuntu 18.04では、 @ efflamlemailletによる
私は、次のように思います:
https://stackoverflow.com/questions/41846000/mariadb-password-and-unix-socket-authentication-for-root
も関連しています。
こんにちは、
@pouyanaが言った
@felixfontein動作しますが、〜/ .my.cnfは使いたくありません
@nizarakbarm login_unix_socket: /var/lib/mysql/mysql.sock
はAnsibleで指定するものです。 あなたはそれを試しましたか?
@efflamlemailletは、より正確には、Ansibleモジュール自体ではなく、PythonMySQL接続ライブラリです。 古いライブラリであるMySQLdb(libmysqlに基づく)はUnixソケットを優先し、新しいライブラリであるPyMySQLはTCP接続を優先します。 プレイブック/ロールで明示的であり、接続方法を指定している場合、それは問題ではありません。 ただし、そうでない場合は、モジュールが使用しているライブラリによって異なります。 モジュールは最初にPyMySQLを試行し、PyMySQLが使用できない場合はMySQLdbにフォールバックします。
桶、お返事ありがとうございます。 @felixfonteinあなたの答えから、問題の理由を理解するのに役立ちます。
全体として、バグと見なすべきかどうかを知る必要がありますか?
その場合、インストールされているドライバーがMySQLdbまたはPyMySQLの場合、AnsibleモジュールがPyMySQLのデフォルトの動作をオーバーライドして、モジュールが同じ方法で接続するようにすることができます(接続オプションが指定されていない場合)。
cc @ Alexander198961
ボットのヘルプについては、ここをクリックしてください
cc @ Andersson007
ボットのヘルプについては、ここをクリックしてください
cc @kurtdavis
ボットのヘルプについては、ここをクリックしてください
私の場合、この回避策も役立ちましたlogin_unix_socket: /var/run/mysqld/mysqld.sock
ansible 2.8.4
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/eldar/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.15+ (default, Nov 27 2018, 23:36:35) [GCC 7.3.0]
- name: Create database
mysql_db:
name: dbname
state: present
login_unix_socket: /var/run/mysqld/mysqld.sock
cc @tomaszkiewicz
ボットのヘルプについては、ここをクリックしてください
これを指摘してくれてありがとう@felixfontein !
パラメータlogin_unix_socket: /var/run/mysqld/mysqld.sock
指定すると、問題が解決しました。
ただし、ファイルtasks/databases.yml
、 tasks/secure-installation.yml
、およびtasks/users.yml
すべてのmysql_{user,db}
モジュールタスクを更新する必要がありました。
私はこれをドキュメントhttps://github.com/ansible/ansible/pull/66848で説明しました
2.10が付属しています
close_me
最も参考になるコメント
わかりました、見つけました。 10月2日の#ansible-develでのディスカッションで、接続に問題があったユーザー(空の文字列パスワードの処理が問題であると最初に疑った)は、最終的に
login_unix_socket
を使用する必要があることに気付きました。 (私が上で述べた異なる振る舞いのために)、それでそれは彼のために働きました。 残念ながら、彼はその問題を作成しませんでした。とにかく、 @ epeli @anniemelen @ bchanan03 、
login_unix_socket
オプションを試して、問題が解決するかどうかを確認できますか?