From 83b76a4804ad078411c45bf86ee61381df49e1b3 Mon Sep 17 00:00:00 2001 From: Andrew Klychkov Date: Tue, 13 Apr 2021 11:22:45 +0200 Subject: [PATCH] tmp --- plugins/module_utils/mysql.py | 4 +++- plugins/modules/mysql_user.py | 6 ++++-- .../test_mysql_user/tasks/test_charset.yml | 16 +++++++++++++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/plugins/module_utils/mysql.py b/plugins/module_utils/mysql.py index 6f0c9ce..3a229ff 100644 --- a/plugins/module_utils/mysql.py +++ b/plugins/module_utils/mysql.py @@ -100,6 +100,8 @@ def mysql_connect(module, login_user=None, login_password=None, config_file='', if charset is not None: config['charset'] = charset + module.warn('%s' % config) + if _mysql_cursor_param == 'cursor': # In case of PyMySQL driver: db_connection = mysql_driver.connect(autocommit=autocommit, **config) @@ -134,7 +136,7 @@ def mysql_common_argument_spec(): client_key=dict(type='path', aliases=['ssl_key']), ca_cert=dict(type='path', aliases=['ssl_ca']), check_hostname=dict(type='bool', default=None), - charset=dict(type='str'), + charset=dict(type='str', default=None), ) diff --git a/plugins/modules/mysql_user.py b/plugins/modules/mysql_user.py index 86d2b9c..0202d03 100644 --- a/plugins/modules/mysql_user.py +++ b/plugins/modules/mysql_user.py @@ -1177,13 +1177,15 @@ def main(): if check_implicit_admin: try: cursor, db_conn = mysql_connect(module, "root", "", config_file, ssl_cert, ssl_key, ssl_ca, db, - connect_timeout=connect_timeout, check_hostname=check_hostname, charset=charset) + connect_timeout=connect_timeout, check_hostname=check_hostname, + charset=charset) except Exception: pass if not cursor: cursor, db_conn = mysql_connect(module, login_user, login_password, config_file, ssl_cert, ssl_key, ssl_ca, db, - connect_timeout=connect_timeout, check_hostname=check_hostname) + connect_timeout=connect_timeout, check_hostname=check_hostname, + charset=charset) except Exception as e: module.fail_json(msg="unable to connect to database, check login_user and login_password are correct or %s has the credentials. " "Exception message: %s" % (config_file, to_native(e))) diff --git a/tests/integration/targets/test_mysql_user/tasks/test_charset.yml b/tests/integration/targets/test_mysql_user/tasks/test_charset.yml index f435f07..a965b6d 100644 --- a/tests/integration/targets/test_mysql_user/tasks/test_charset.yml +++ b/tests/integration/targets/test_mysql_user/tasks/test_charset.yml @@ -49,8 +49,21 @@ <<: *mysql_params name: '{{ user_name_5 }}' password: '{{ user_password_5 }}' + priv: '*.*:SELECT' state: present + - name: Create user with default charset again + mysql_user: + <<: *mysql_params + name: '{{ user_name_5 }}' + password: '{{ user_password_5 }}' + state: present + priv: '*.*:SELECT' + register: result + + - assert: + that: result is not changed + - name: Try to get connect and get info, must fail mysql_query: login_host: 127.0.0.1 @@ -79,9 +92,10 @@ name: '{{ user_name_5 }}' password: '{{ user_password_5 }}' state: present + priv: '*.*:SELECT' charset: utf8mb4 - - name: Try to get connect and get info, must succeed + - name: Try to connect and get info, must succeed mysql_query: login_host: 127.0.0.1 login_port: '{{ mysql_primary_port }}'