Browse code

Fix mysql authentication errors

The mysql-server package on Ubuntu16.04 was recently updated to disallow
unauthenticated root user login over tcp/ip. This, coupled with pymysql
using tcp/ip whenever host and port is specified causes us to fail to
connect to the database when testing Python3 on Ubuntu16.04.

The fix is to use the unix socket instead.

(cherry picked from commit 748ea39ecd99bcb476dc460bfdd054567ef2bfc6)

Toshio Kuratomi authored on 2018/10/25 00:22:44
Showing 9 changed files
... ...
@@ -18,13 +18,21 @@
18 18
 
19 19
 # ============================================================
20 20
 
21
+- name: remove database if it exists
22
+  command: >
23
+    mysql -sse "drop database {{db_name}};"
24
+  ignore_errors: True
25
+
21 26
 - name: make sure the test database is not there
22 27
   command: mysql {{db_name}}
23 28
   register: mysql_db_check
24 29
   failed_when: "'1049' not in mysql_db_check.stderr"
25 30
 
26 31
 - name: test state=present for a database name (expect changed=true)
27
-  mysql_db: name={{ db_name }} state=present
32
+  mysql_db:
33
+    name: '{{ db_name }}'
34
+    state: present
35
+    login_unix_socket: '{{ mysql_socket }}'
28 36
   register: result
29 37
 
30 38
 - name: assert output message that database exist
... ...
@@ -42,7 +50,10 @@
42 42
 
43 43
 # ============================================================
44 44
 - name: test state=absent for a database name (expect changed=true)
45
-  mysql_db: name={{ db_name }} state=absent
45
+  mysql_db:
46
+    name: '{{ db_name }}'
47
+    state: absent
48
+    login_unix_socket: '{{ mysql_socket }}'
46 49
   register: result
47 50
 
48 51
 - name: assert output message that database does not exist
... ...
@@ -60,7 +71,11 @@
60 60
 
61 61
 # ============================================================
62 62
 - name: test mysql_db encoding param not valid - issue 8075
63
-  mysql_db: name=datanotvalid state=present encoding=notvalid
63
+  mysql_db:
64
+    name: datanotvalid
65
+    state: present
66
+    encoding: notvalid
67
+    login_unix_socket: '{{ mysql_socket }}'
64 68
   register: result
65 69
   ignore_errors: true
66 70
 
... ...
@@ -73,7 +88,11 @@
73 73
 
74 74
 # ============================================================
75 75
 - name: test mysql_db using a valid encoding utf8 (expect changed=true)
76
-  mysql_db: name=en{{ db_name }}  state=present encoding=utf8
76
+  mysql_db:
77
+    name: 'en{{ db_name }}'
78
+    state: present
79
+    encoding: utf8
80
+    login_unix_socket: '{{ mysql_socket }}'
77 81
   register: result
78 82
 
79 83
 - name: assert output message created a database
... ...
@@ -87,11 +106,18 @@
87 87
   assert: { that: "'utf8' in result.stdout" }
88 88
 
89 89
 - name: remove database
90
-  mysql_db: name=en{{ db_name }} state=absent
90
+  mysql_db:
91
+    name: 'en{{ db_name }}'
92
+    state: absent
93
+    login_unix_socket: '{{ mysql_socket }}'
91 94
 
92 95
 # ============================================================
93 96
 - name: test mysql_db using valid encoding binary (expect changed=true)
94
-  mysql_db: name=en{{ db_name }}  state=present encoding=binary
97
+  mysql_db:
98
+    name: 'en{{ db_name }}'
99
+    state: present
100
+    encoding: binary
101
+    login_unix_socket: '{{ mysql_socket }}'
95 102
   register: result
96 103
 
97 104
 - name: assert output message that database was created
... ...
@@ -105,14 +131,26 @@
105 105
   assert: { that: "'binary' in result.stdout" }
106 106
 
107 107
 - name: remove database
108
-  mysql_db: name=en{{ db_name }}  state=absent
108
+  mysql_db:
109
+    name: 'en{{ db_name }}'
110
+    state: absent
111
+    login_unix_socket: '{{ mysql_socket }}'
109 112
 
110 113
 # ============================================================
111 114
 - name: create user1 to access database dbuser1
112
-  mysql_user: name=user1 password=Hfd6fds^dfA8Ga priv=*.*:ALL state=present
115
+  mysql_user:
116
+    name: user1
117
+    password: 'Hfd6fds^dfA8Ga'
118
+    priv: '*.*:ALL'
119
+    state: present
120
+    login_unix_socket: '{{ mysql_socket }}'
113 121
 
114 122
 - name: create database dbuser1 using user1
115
-  mysql_db: name={{ db_user1 }} state=present login_user=user1 login_password=Hfd6fds^dfA8Ga
123
+  mysql_db:
124
+    name: '{{ db_user1 }}'
125
+    state: present
126
+    login_user: user1
127
+    login_password: 'Hfd6fds^dfA8Ga'
116 128
   register: result
117 129
 
118 130
 - name: assert output message that database was created
... ...
@@ -127,10 +165,19 @@
127 127
 
128 128
 # ============================================================
129 129
 - name: create user2 to access database with privilege select only
130
-  mysql_user: name=user2 password=kjsfd&F7safjad priv=*.*:SELECT state=present
130
+  mysql_user:
131
+    name: user2
132
+    password: 'kjsfd&F7safjad'
133
+    priv: '*.*:SELECT'
134
+    state: present
135
+    login_unix_socket: '{{ mysql_socket }}'
131 136
 
132 137
 - name: create database dbuser2 using user2 with no privilege to create (expect failed=true)
133
-  mysql_db: name={{ db_user2 }} state=present login_user=user2 login_password=kjsfd&F7safjad
138
+  mysql_db:
139
+    name: '{{ db_user2 }}'
140
+    state: present
141
+    login_user: user2
142
+    login_password: 'kjsfd&F7safjad'
134 143
   register: result
135 144
   ignore_errors: true
136 145
 
... ...
@@ -149,7 +196,11 @@
149 149
 
150 150
 # ============================================================
151 151
 - name: delete database using user2 with no privilege to delete (expect failed=true)
152
-  mysql_db: name={{ db_user1 }} state=absent login_user=user2 login_password=kjsfd&F7safjad
152
+  mysql_db:
153
+    name: '{{ db_user1 }}'
154
+    state: absent
155
+    login_user: user2
156
+    login_password: 'kjsfd&F7safjad'
153 157
   register: result
154 158
   ignore_errors: true
155 159
 
... ...
@@ -168,7 +219,11 @@
168 168
 
169 169
 # ============================================================
170 170
 - name: delete database using user1 with all privilege to delete a database (expect changed=true)
171
-  mysql_db: name={{ db_user1 }} state=absent login_user=user1 login_password=Hfd6fds^dfA8Ga
171
+  mysql_db:
172
+    name: '{{ db_user1 }}'
173
+    state: absent
174
+    login_user: user1
175
+    login_password: 'Hfd6fds^dfA8Ga'
172 176
   register: result
173 177
   ignore_errors: true
174 178
 
... ...
@@ -20,7 +20,10 @@
20 20
 - set_fact: db_file_name="{{tmp_dir}}/{{file}}"
21 21
 
22 22
 - name: state dump/import - create database
23
-  mysql_db: name={{ db_name }} state=present
23
+  mysql_db:
24
+    name: '{{ db_name }}'
25
+    state: present
26
+    login_unix_socket: '{{ mysql_socket }}'
24 27
 
25 28
 - name: state dump/import - create table department
26 29
   command: mysql {{ db_name }} '-e create table department(id int, name varchar(100));'
... ...
@@ -44,6 +47,7 @@
44 44
     target: "{{ db_file_name }}"
45 45
     ignore_tables:
46 46
         - "{{ db_name }}.department"
47
+    login_unix_socket: '{{ mysql_socket }}'
47 48
   register: result
48 49
 
49 50
 - name: assert successful completion of dump operation
... ...
@@ -55,10 +59,17 @@
55 55
   file: name={{ db_file_name }} state=file
56 56
 
57 57
 - name: state dump/import - remove database
58
-  mysql_db: name={{ db_name }} state=absent
58
+  mysql_db:
59
+    name: '{{ db_name }}'
60
+    state: absent
61
+    login_unix_socket: '{{ mysql_socket }}'
59 62
 
60 63
 - name: test state=import to restore the database of type {{ format_type }} (expect changed=true)
61
-  mysql_db: name={{ db_name }} state=import target={{ db_file_name }}
64
+  mysql_db:
65
+    name: '{{ db_name }}'
66
+    state: import
67
+    target: '{{ db_file_name }}'
68
+    login_unix_socket: '{{ mysql_socket }}'
62 69
   register: result
63 70
 
64 71
 - name: show the tables
... ...
@@ -71,7 +82,11 @@
71 71
        - "'department' not in result.stdout"
72 72
 
73 73
 - name: test state=dump to backup the database of type {{ format_type }} (expect changed=true)
74
-  mysql_db: name={{ db_name }} state=dump target={{ db_file_name }}
74
+  mysql_db:
75
+    name: '{{ db_name }}'
76
+    state: dump
77
+    target: '{{ db_file_name }}'
78
+    login_unix_socket: '{{ mysql_socket }}'
75 79
   register: result
76 80
 
77 81
 - name: assert output message backup the database
... ...
@@ -91,7 +106,11 @@
91 91
   command: mysql {{ db_name }} "-e update employee set name='John Doe' where id=47;"
92 92
 
93 93
 - name: test state=import to restore the database of type {{ format_type }} (expect changed=true)
94
-  mysql_db: name={{ db_name }} state=import target={{ db_file_name }}
94
+  mysql_db:
95
+    name: '{{ db_name }}'
96
+    state: import
97
+    target: '{{ db_file_name }}'
98
+    login_unix_socket: '{{ mysql_socket }}'
95 99
   register: result
96 100
 
97 101
 - name: assert output message restore the database
... ...
@@ -108,7 +127,10 @@
108 108
        - "'Joe Smith' in result.stdout"
109 109
 
110 110
 - name: remove database name
111
-  mysql_db: name={{ db_name }} state=absent
111
+  mysql_db:
112
+    name: '{{ db_name }}'
113
+    state: absent
114
+    login_unix_socket: '{{ mysql_socket }}'
112 115
 
113 116
 - name: remove file name
114 117
   file: name={{ db_file_name }}  state=absent
... ...
@@ -18,7 +18,11 @@
18 18
 
19 19
 # ============================================================
20 20
 - name: create mysql user {{user_name}}
21
-  mysql_user: name={{user_name}} password={{user_password}} state=present
21
+  mysql_user:
22
+    name: '{{user_name}}'
23
+    password: '{{user_password}}'
24
+    state: present
25
+    login_unix_socket: '{{ mysql_socket }}'
22 26
   register: result
23 27
 
24 28
 - name: assert output message mysql user was created
... ...
@@ -33,7 +33,11 @@
33 33
 - include: create_user.yml user_name={{user_name_1}} user_password={{ user_password_1 }}
34 34
 
35 35
 - name: create mysql user that already exist (expect changed=false)
36
-  mysql_user: name={{user_name_1}} password={{user_password_1}} state=present
36
+  mysql_user:
37
+    name: '{{user_name_1}}'
38
+    password: '{{user_password_1}}'
39
+    state: present
40
+    login_unix_socket: '{{ mysql_socket }}'
37 41
   register: result
38 42
 
39 43
 - name: assert output message mysql user was not created
... ...
@@ -43,7 +47,11 @@
43 43
 # remove mysql user and verify user is removed from mysql database
44 44
 #
45 45
 - name: remove mysql user state=absent (expect changed=true)
46
-  mysql_user: name={{ user_name_1 }} password={{ user_password_1 }} state=absent
46
+  mysql_user:
47
+    name: '{{ user_name_1 }}'
48
+    password: '{{ user_password_1 }}'
49
+    state: absent
50
+    login_unix_socket: '{{ mysql_socket }}'
47 51
   register: result
48 52
 
49 53
 - name: assert output message mysql user was removed
... ...
@@ -55,7 +63,11 @@
55 55
 # remove mysql user that does not exist on mysql database
56 56
 #
57 57
 - name: remove mysql user that does not exist state=absent (expect changed=false)
58
-  mysql_user: name={{ user_name_1 }} password={{ user_password_1 }} state=absent
58
+  mysql_user:
59
+    name: '{{ user_name_1 }}'
60
+    password: '{{ user_password_1 }}'
61
+    state: absent
62
+    login_unix_socket: '{{ mysql_socket }}'
59 63
   register: result
60 64
 
61 65
 - name: assert output message mysql user that does not exist
... ...
@@ -67,7 +79,11 @@
67 67
 # Create user with no privileges and verify default privileges are assign
68 68
 #
69 69
 - name: create user with select privilege state=present (expect changed=true)
70
-  mysql_user: name={{ user_name_1 }} password={{ user_password_1 }} state=present
70
+  mysql_user:
71
+    name: '{{ user_name_1 }}'
72
+    password: '{{ user_password_1 }}'
73
+    state: present
74
+    login_unix_socket: '{{ mysql_socket }}'
71 75
   register: result
72 76
 
73 77
 - include: assert_user.yml user_name={{user_name_1}} priv=USAGE
... ...
@@ -80,7 +96,12 @@
80 80
 # Create user with select privileges and verify select privileges are assign
81 81
 #
82 82
 - name: create user with select privilege state=present (expect changed=true)
83
-  mysql_user: name={{ user_name_2 }} password={{ user_password_2 }} state=present priv=*.*:SELECT
83
+  mysql_user:
84
+    name: '{{ user_name_2 }}'
85
+    password: '{{ user_password_2 }}'
86
+    state: present
87
+    priv: '*.*:SELECT'
88
+    login_unix_socket: '{{ mysql_socket }}'
84 89
   register: result
85 90
 
86 91
 - include: assert_user.yml user_name={{user_name_2}} priv=SELECT
... ...
@@ -93,7 +114,12 @@
93 93
 # Assert user has access to multiple databases
94 94
 #
95 95
 - name: give users access to multiple databases
96
-  mysql_user: name={{ item[0]  }} priv={{ item[1] }}.*:ALL append_privs=yes password={{ user_password_1 }}
96
+  mysql_user:
97
+    name: '{{ item[0] }}'
98
+    priv: '{{ item[1] }}.*:ALL'
99
+    append_privs: yes
100
+    password: '{{ user_password_1 }}'
101
+    login_unix_socket: '{{ mysql_socket }}'
97 102
   with_nested:
98 103
     - [ '{{ user_name_1 }}', '{{ user_name_2 }}']
99 104
     - "{{db_names}}"
... ...
@@ -119,7 +145,12 @@
119 119
 - include: remove_user.yml user_name={{user_name_2}} user_password={{ user_password_1 }}
120 120
 
121 121
 - name: give user access to database via wildcard
122
-  mysql_user: name={{ user_name_1 }} priv=%db.*:SELECT append_privs=yes password={{ user_password_1 }}
122
+  mysql_user:
123
+    name: '{{ user_name_1 }}'
124
+    priv: '%db.*:SELECT'
125
+    append_privs: yes
126
+    password: '{{ user_password_1 }}'
127
+    login_unix_socket: '{{ mysql_socket }}'
123 128
 
124 129
 - name: show grants access for user1 on multiple database
125 130
   command: mysql "-e SHOW GRANTS FOR '{{ user_name_1 }}'@'localhost';"
... ...
@@ -132,7 +163,12 @@
132 132
       - "'SELECT' in result.stdout"
133 133
 
134 134
 - name: change user access to database via wildcard
135
-  mysql_user: name={{ user_name_1 }} priv=%db.*:INSERT append_privs=yes password={{ user_password_1 }}
135
+  mysql_user:
136
+    name: '{{ user_name_1 }}'
137
+    priv: '%db.*:INSERT'
138
+    append_privs: yes
139
+    password: '{{ user_password_1 }}'
140
+    login_unix_socket: '{{ mysql_socket }}'
136 141
 
137 142
 - name: show grants access for user1 on multiple database
138 143
   command: mysql "-e SHOW GRANTS FOR '{{ user_name_1 }}'@'localhost';"
... ...
@@ -18,7 +18,11 @@
18 18
 
19 19
 # ============================================================
20 20
 - name: remove mysql user {{user_name}}
21
-  mysql_user: name={{user_name}} password={{user_password}} state=absent
21
+  mysql_user:
22
+    name: '{{user_name}}'
23
+    password: '{{user_password}}'
24
+    state: absent
25
+    login_unix_socket: '{{ mysql_socket }}'
22 26
   register: result
23 27
 
24 28
 - name: assert output message mysql user was removed
... ...
@@ -26,17 +30,29 @@
26 26
 
27 27
 # ============================================================
28 28
 - name: create blank mysql user to be removed later
29
-  mysql_user: name="" state=present password='KJFDY&D*Sfuydsgf'
29
+  mysql_user:
30
+    name: ""
31
+    state: present
32
+    password: 'KJFDY&D*Sfuydsgf'
33
+    login_unix_socket: '{{ mysql_socket }}'
30 34
 
31 35
 - name: remove blank mysql user with hosts=all (expect changed)
32
-  mysql_user: user="" host_all=true state=absent
36
+  mysql_user:
37
+    user: ""
38
+    host_all: true
39
+    state: absent
40
+    login_unix_socket: '{{ mysql_socket }}'
33 41
   register: result
34 42
 
35 43
 - name: assert changed is true for removing all blank users
36 44
   assert: { that: "result.changed == true" }
37 45
 
38 46
 - name: remove blank mysql user with hosts=all (expect ok)
39
-  mysql_user: user="" host_all=true state=absent
47
+  mysql_user:
48
+    user: ""
49
+    host_all: true
50
+    state: absent
51
+    login_unix_socket: '{{ mysql_socket }}'
40 52
   register: result
41 53
 
42 54
 - name: assert changed is true for removing all blank users
... ...
@@ -18,14 +18,25 @@
18 18
 
19 19
 # ============================================================
20 20
 - name: create user with basic select privileges
21
-  mysql_user: name={{ user_name_2 }} password={{ user_password_2 }} priv=*.*:SELECT state=present
21
+  mysql_user:
22
+    name: '{{ user_name_2 }}'
23
+    password: '{{ user_password_2 }}'
24
+    priv: '*.*:SELECT'
25
+    state: present
26
+    login_unix_socket: '{{ mysql_socket }}'
22 27
   when: current_append_privs ==  "yes"
23 28
 
24 29
 - include: assert_user.yml user_name={{user_name_2}} priv='SELECT'
25 30
   when: current_append_privs ==  "yes"
26 31
  
27 32
 - name: create user with current privileges (expect changed=true)
28
-  mysql_user: name={{ user_name_2 }} password={{ user_password_2 }} priv=*.*:{{current_privilege}} append_privs={{current_append_privs}} state=present
33
+  mysql_user:
34
+    name: '{{ user_name_2 }}'
35
+    password: '{{ user_password_2 }}'
36
+    priv: '*.*:{{current_privilege}}'
37
+    append_privs: '{{current_append_privs}}'
38
+    state: present
39
+    login_unix_socket: '{{ mysql_socket }}'
29 40
   register: result
30 41
 
31 42
 - name: assert output message for current privileges 
... ...
@@ -44,7 +55,11 @@
44 44
   when: current_append_privs ==  "yes"
45 45
 
46 46
 - name: create database using user current privileges
47
-  mysql_db: name={{ db_name }} state=present login_user={{ user_name_2 }} login_password={{ user_password_2 }}
47
+  mysql_db:
48
+    name: '{{ db_name }}'
49
+    state: present
50
+    login_user: '{{ user_name_2 }}'
51
+    login_password: '{{ user_password_2 }}'
48 52
   ignore_errors: true 
49 53
 
50 54
 - name: run command to test that database was not created
... ...
@@ -56,14 +71,24 @@
56 56
 
57 57
 # ============================================================
58 58
 - name: Add privs to a specific table (expect changed)
59
-  mysql_user: name={{ user_name_2 }} password={{ user_password_2 }} priv=jmainguy.jmainguy:ALL state=present
59
+  mysql_user:
60
+    name: '{{ user_name_2 }}'
61
+    password: '{{ user_password_2 }}'
62
+    priv: 'jmainguy.jmainguy:ALL'
63
+    state: present
64
+    login_unix_socket: '{{ mysql_socket }}'
60 65
   register: result
61 66
 
62 67
 - name: Assert that priv changed
63 68
   assert: { that: "result.changed == true" }
64 69
 
65 70
 - name: Add privs to a specific table (expect ok)
66
-  mysql_user: name={{ user_name_2 }} password={{ user_password_2 }} priv=jmainguy.jmainguy:ALL state=present
71
+  mysql_user:
72
+    name: '{{ user_name_2 }}'
73
+    password: '{{ user_password_2 }}'
74
+    priv: 'jmainguy.jmainguy:ALL'
75
+    state: present
76
+    login_unix_socket: '{{ mysql_socket }}'
67 77
   register: result
68 78
 
69 79
 - name: Assert that priv did not change
... ...
@@ -71,18 +96,35 @@
71 71
 
72 72
 # ============================================================
73 73
 - name: update user with all privileges 
74
-  mysql_user: name={{ user_name_2 }} password={{ user_password_2 }} priv=*.*:ALL state=present
74
+  mysql_user:
75
+    name: '{{ user_name_2 }}'
76
+    password: '{{ user_password_2 }}'
77
+    priv: '*.*:ALL'
78
+    state: present
79
+    login_unix_socket: '{{ mysql_socket }}'
75 80
 
76 81
 - include: assert_user.yml user_name={{user_name_2}} priv='ALL PRIVILEGES'
77 82
 
78 83
 - name: create database using user
79
-  mysql_db: name={{ db_name }} state=present login_user={{ user_name_2 }} login_password={{ user_password_2 }}
84
+  mysql_db:
85
+    name: '{{ db_name }}'
86
+    state: present
87
+    login_user: '{{ user_name_2 }}'
88
+    login_password: '{{ user_password_2 }}'
80 89
 
81 90
 - name: run command to test database was created using user new privileges
82 91
   command: mysql "-e SHOW CREATE DATABASE {{ db_name }};" 
83 92
 
84 93
 - name: drop database using user
85
-  mysql_db: name={{ db_name }} state=absent login_user={{ user_name_2 }} login_password={{ user_password_2 }}
94
+  mysql_db:
95
+    name: '{{ db_name }}'
96
+    state: absent
97
+    login_user: '{{ user_name_2 }}'
98
+    login_password: '{{ user_password_2 }}'
86 99
 
87 100
 - name: remove username
88
-  mysql_user: name={{ user_name_2 }} password={{ user_password_2 }} state=absent
101
+  mysql_user:
102
+    name: '{{ user_name_2 }}'
103
+    password: '{{ user_password_2 }}'
104
+    state: absent
105
+    login_unix_socket: '{{ mysql_socket }}'
... ...
@@ -21,10 +21,20 @@
21 21
 # Assert the user password is updated and old password can no longer be used.
22 22
 #
23 23
 - name: create user1 state=present with a password 
24
-  mysql_user: name={{ user_name_1 }} password={{ user_password_1 }} priv=*.*:ALL state=present
24
+  mysql_user:
25
+    name: '{{ user_name_1 }}'
26
+    password: '{{ user_password_1 }}'
27
+    priv: '*.*:ALL'
28
+    state: present
29
+    login_unix_socket: '{{ mysql_socket }}'
25 30
 
26 31
 - name: create user2 state=present with a password 
27
-  mysql_user: name={{ user_name_2 }} password={{ user_password_2 }} priv=*.*:ALL state=present
32
+  mysql_user:
33
+    name: '{{ user_name_2 }}'
34
+    password: '{{ user_password_2 }}'
35
+    priv: '*.*:ALL'
36
+    state: present
37
+    login_unix_socket: '{{ mysql_socket }}'
28 38
 
29 39
 - name: store user2 grants with old password (mysql 5.7.6 and newer)
30 40
   command: mysql "-e SHOW CREATE USER '{{ user_name_2 }}'@'localhost';"
... ...
@@ -38,16 +48,25 @@
38 38
 
39 39
 # FIXME: not sure why this is failing, but it looks like it should expect changed=true
40 40
 #- name: update user2 state=present with same password (expect changed=false)
41
-#  mysql_user: name={{ user_name_2 }} password={{ user_password_2 }} priv=*.*:ALL state=present
41
+#  mysql_user:
42
+#    name: '{{ user_name_2 }}'
43
+#    password: '{{ user_password_2 }}'
44
+#    priv: '*.*:ALL'
45
+#    state: present
46
+#    login_unix_socket: '{{ mysql_socket }}'
42 47
 #  register: result
43 48
 #
44 49
 #- name: assert output user2 was not updated 
45 50
 #  assert: { that: "result.changed == false" }
46 51
 
47 52
 - include: assert_user.yml user_name={{user_name_2}} priv='ALL PRIVILEGES'
48
- 
53
+
49 54
 - name: update user2 state=present with a new password (expect changed=true)
50
-  mysql_user: name={{ user_name_2 }} password={{ user_password_1 }} state=present
55
+  mysql_user:
56
+    name: '{{ user_name_2 }}'
57
+    password: '{{ user_password_1 }}'
58
+    state: present
59
+    login_unix_socket: '{{ mysql_socket }}'
51 60
   register: result
52 61
 
53 62
 - include: assert_user.yml user_name={{user_name_2}} priv='ALL PRIVILEGES'
... ...
@@ -71,7 +90,11 @@
71 71
   when: user_password_new_create is failed
72 72
 
73 73
 - name: create database using user2 and old password
74
-  mysql_db: name={{ db_name }} state=present login_user={{ user_name_2 }} login_password={{ user_password_2 }}
74
+  mysql_db:
75
+    name: '{{ db_name }}'
76
+    state: present
77
+    login_user: '{{ user_name_2 }}'
78
+    login_password: '{{ user_password_2 }}'
75 79
   ignore_errors: true 
76 80
   register: result
77 81
 
... ...
@@ -82,21 +105,32 @@
82 82
        - "result.failed == true"
83 83
 
84 84
 - name: create database using user2 and new password
85
-  mysql_db: name={{ db_name }} state=present login_user={{ user_name_2 }} login_password={{ user_password_1 }}
85
+  mysql_db:
86
+    name: '{{ db_name }}'
87
+    state: present
88
+    login_user: '{{ user_name_2 }}'
89
+    login_password: '{{ user_password_1 }}'
86 90
   register: result
87 91
 
88 92
 - name: assert output message that database is created with new password
89 93
   assert: { that: "result.changed == true" }
90 94
 
91 95
 - name: remove database
92
-  mysql_db: name={{ db_name }} state=absent
96
+  mysql_db:
97
+    name: '{{ db_name }}'
98
+    state: absent
99
+    login_unix_socket: '{{ mysql_socket }}'
93 100
 
94 101
 - include: remove_user.yml user_name={{user_name_1}} user_password={{ user_password_1 }}
95 102
 
96 103
 - include: remove_user.yml user_name={{user_name_2}} user_password={{ user_password_1 }}
97 104
 
98 105
 - name: Create user with Fdt8fd^34ds using hash. (expect changed=true)
99
-  mysql_user: name=jmainguy password='*0cb5b86f23fdc24db19a29b8854eb860cbc47793' encrypted=yes
106
+  mysql_user:
107
+    name: jmainguy
108
+    password: '*0cb5b86f23fdc24db19a29b8854eb860cbc47793'
109
+    encrypted: yes
110
+    login_unix_socket: '{{ mysql_socket }}'
100 111
   register: encrypt_result
101 112
 
102 113
 - name: Check that the module made a change
... ...
@@ -105,7 +139,10 @@
105 105
       - "encrypt_result.changed == True"
106 106
 
107 107
 - name: See if the password needs to be updated. (expect changed=false)
108
-  mysql_user: name=jmainguy password='Fdt8fd^34ds'
108
+  mysql_user:
109
+    name: jmainguy
110
+    password: 'Fdt8fd^34ds'
111
+    login_unix_socket: '{{ mysql_socket }}'
109 112
   register: plain_result
110 113
 
111 114
 - name: Check that the module did not change the password
... ...
@@ -114,4 +151,6 @@
114 114
       - "plain_result.changed == False"
115 115
 
116 116
 - name: Remove user (cleanup)
117
-  mysql_user: name=jmainguy state=absent
117
+  mysql_user:
118
+    name: jmainguy
119
+    state: absent
... ...
@@ -22,7 +22,9 @@
22 22
 - set_fact: set_name='version'
23 23
 
24 24
 - name: read mysql variables (expect changed=false)
25
-  mysql_variables: variable={{set_name}}
25
+  mysql_variables:
26
+    variable: '{{set_name}}'
27
+    login_unix_socket: '{{ mysql_socket }}'
26 28
   register: result
27 29
 
28 30
 - include: assert_var_output.yml changed=false output={{result}} var_name={{set_name}}
... ...
@@ -35,10 +37,16 @@
35 35
      set_value: 'ON'
36 36
 
37 37
 - name: set mysql variable
38
-  mysql_variables: variable={{set_name}} value={{set_value}}
38
+  mysql_variables:
39
+    variable: '{{set_name}}'
40
+    value: '{{set_value}}'
41
+    login_unix_socket: '{{ mysql_socket }}'
39 42
 
40 43
 - name: update mysql variable to same value (expect changed=false)
41
-  mysql_variables: variable={{set_name}} value={{set_value}}
44
+  mysql_variables:
45
+    variable: '{{set_name}}'
46
+    value: '{{set_value}}'
47
+    login_unix_socket: '{{ mysql_socket }}'
42 48
   register: result
43 49
 
44 50
 - include: assert_var.yml changed=false output={{result}} var_name={{set_name}} var_value={{set_value}}
... ...
@@ -51,10 +59,16 @@
51 51
      set_value: '300'
52 52
 
53 53
 - name: set mysql variable to a temp value
54
-  mysql_variables: variable={{set_name}} value='200'
54
+  mysql_variables:
55
+    variable: '{{set_name}}'
56
+    value: '200'
57
+    login_unix_socket: '{{ mysql_socket }}'
55 58
 
56 59
 - name: update mysql variable value (expect changed=true)
57
-  mysql_variables: variable={{set_name}} value={{set_value}}
60
+  mysql_variables:
61
+    variable: '{{set_name}}'
62
+    value: '{{set_value}}'
63
+    login_unix_socket: '{{ mysql_socket }}'
58 64
   register: result
59 65
 
60 66
 - include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
... ...
@@ -67,10 +81,16 @@
67 67
      set_value: "400"
68 68
 
69 69
 - name: set mysql variable to a temp value
70
-  mysql_variables: variable={{set_name}} value="200"
70
+  mysql_variables:
71
+    variable: '{{set_name}}'
72
+    value: "200"
73
+    login_unix_socket: '{{ mysql_socket }}'
71 74
 
72 75
 - name: update mysql variable value (expect changed=true)
73
-  mysql_variables: variable={{set_name}} value={{set_value}}
76
+  mysql_variables:
77
+    variable: '{{set_name}}'
78
+    value: '{{set_value}}'
79
+    login_unix_socket: '{{ mysql_socket }}'
74 80
   register: result
75 81
 
76 82
 - include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
... ...
@@ -83,10 +103,16 @@
83 83
      set_value: 500
84 84
 
85 85
 - name: set mysql variable to a temp value
86
-  mysql_variables: variable={{set_name}} value=200
86
+  mysql_variables:
87
+    variable: '{{set_name}}'
88
+    value: 200
89
+    login_unix_socket: '{{ mysql_socket }}'
87 90
 
88 91
 - name: update mysql variable value (expect changed=true)
89
-  mysql_variables: variable={{set_name}} value={{set_value}}
92
+  mysql_variables:
93
+    variable: '{{set_name}}'
94
+    value: '{{set_value}}'
95
+    login_unix_socket: '{{ mysql_socket }}'
90 96
   register: result
91 97
 
92 98
 - include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
... ...
@@ -95,7 +121,10 @@
95 95
 # Verify mysql_variable successfully updates a variable using an expression (e.g. 1024*4)
96 96
 #
97 97
 - name: set mysql variable value to an expression
98
-  mysql_variables: variable=max_tmp_tables value="1024*4"
98
+  mysql_variables:
99
+    variable: max_tmp_tables
100
+    value: "1024*4"
101
+    login_unix_socket: '{{ mysql_socket }}'
99 102
   register: result
100 103
   ignore_errors: true
101 104
 
... ...
@@ -105,7 +134,10 @@
105 105
 # Verify mysql_variable fails when setting an incorrect value (out of range)
106 106
 #
107 107
 - name: set mysql variable value to a number out of range
108
-  mysql_variables: variable=max_tmp_tables value=-1
108
+  mysql_variables:
109
+    variable: max_tmp_tables
110
+    value: -1
111
+    login_unix_socket: '{{ mysql_socket }}'
109 112
   register: result
110 113
   ignore_errors: true
111 114
 
... ...
@@ -115,7 +147,10 @@
115 115
 # Verify mysql_variable fails when setting an incorrect value (incorrect type)
116 116
 #
117 117
 - name: set mysql variable value to a non-valid value number
118
-  mysql_variables: variable=max_tmp_tables value=TEST
118
+  mysql_variables:
119
+    variable: max_tmp_tables
120
+    value: TEST
121
+    login_unix_socket: '{{ mysql_socket }}'
119 122
   register: result
120 123
   ignore_errors: true
121 124
 
... ...
@@ -125,7 +160,10 @@
125 125
 # Verify mysql_variable fails when setting an unknown variable
126 126
 #
127 127
 - name: set a non mysql variable
128
-  mysql_variables: variable=my_sql_variable value=ON
128
+  mysql_variables:
129
+    variable: my_sql_variable
130
+    value: ON
131
+    login_unix_socket: '{{ mysql_socket }}'
129 132
   register: result
130 133
   ignore_errors: true
131 134
 
... ...
@@ -135,7 +173,10 @@
135 135
 # Verify mysql_variable fails when setting a read-only variable
136 136
 #
137 137
 - name: set value of a read only mysql variable
138
-  mysql_variables: variable=character_set_system value=utf16
138
+  mysql_variables:
139
+    variable: character_set_system
140
+    value: utf16
141
+    login_unix_socket: '{{ mysql_socket }}'
139 142
   register: result
140 143
   ignore_errors: true
141 144
 
... ...
@@ -145,24 +186,40 @@
145 145
 # Verify mysql_variable works with the login_user and login_password parameters
146 146
 #
147 147
 - name: create mysql user
148
-  mysql_user: name={{user}} password={{password}} state=present priv=*.*:ALL
148
+  mysql_user:
149
+    name: '{{user}}'
150
+    password: '{{password}}'
151
+    state: present
152
+    priv: '*.*:ALL'
153
+    login_unix_socket: '{{ mysql_socket }}'
149 154
 
150 155
 - set_fact:
151 156
      set_name: wait_timeout
152 157
      set_value: 77
153 158
 
154 159
 - name: query mysql_variable using login_user and password_password
155
-  mysql_variables: variable={{set_name}} login_user={{user}} login_password={{password}}
160
+  mysql_variables:
161
+    variable: '{{set_name}}'
162
+    login_user: '{{user}}'
163
+    login_password: '{{password}}'
156 164
   register: result
157 165
 
158 166
 - include: assert_var_output.yml changed=false output={{result}} var_name={{set_name}}
159 167
 
160 168
 - name: set mysql variable to temp value using user login and password (expect changed=true)
161
-  mysql_variables: variable={{set_name}} value=20 login_user={{user}} login_password={{password}}
169
+  mysql_variables:
170
+    variable: '{{set_name}}'
171
+    value: 20
172
+    login_user: '{{user}}'
173
+    login_password: '{{password}}'
162 174
   register: result
163 175
 
164 176
 - name: update mysql variable value using user login and password (expect changed=true)
165
-  mysql_variables: variable={{set_name}} value={{set_value}} login_user={{user}} login_password={{password}}
177
+  mysql_variables:
178
+    variable: '{{set_name}}'
179
+    value: '{{set_value}}'
180
+    login_user: '{{user}}'
181
+    login_password: '{{password}}'
166 182
   register: result
167 183
 
168 184
 - include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
... ...
@@ -175,28 +232,43 @@
175 175
      set_value: 10
176 176
 
177 177
 - name: query mysql_variable using incorrect login_password
178
-  mysql_variables: variable={{set_name}} login_user={{user}} login_password=wrongpassword
178
+  mysql_variables:
179
+    variable: '{{set_name}}'
180
+    login_user: '{{user}}'
181
+    login_password: 'wrongpassword'
179 182
   register: result
180 183
   ignore_errors: true
181 184
 
182 185
 - include: assert_fail_msg.yml output={{result}}  msg='unable to connect to database'
183 186
 
184 187
 - name: update mysql variable value using incorrect login_password (expect failed=true)
185
-  mysql_variables: variable={{set_name}} value={{set_value}} login_user={{user}} login_password='this is an incorrect password'
188
+  mysql_variables:
189
+    variable: '{{set_name}}'
190
+    value: '{{set_value}}'
191
+    login_user: '{{user}}'
192
+    login_password: 'this is an incorrect password'
186 193
   register: result
187 194
   ignore_errors: true
188 195
 
189 196
 - include: assert_fail_msg.yml output={{result}}  msg='unable to connect to database'
190 197
 
191
-- name: remove mysql_user {{user}}
192
-  mysql_user: name={{user}} state=absent
193
-
194 198
 #============================================================
195 199
 # Verify mysql_variable fails with an incorrect login_host parameter
196 200
 #
197 201
 - name: query mysql_variable using incorrect login_host
198
-  mysql_variables: variable=wait_timeout login_host=12.0.0.9 connect_timeout=5
202
+  mysql_variables:
203
+    variable: wait_timeout
204
+    login_host: '12.0.0.9'
205
+    login_user: '{{user}}'
206
+    login_password: '{{password}}'
207
+    connect_timeout: 5
199 208
   register: result
200 209
   ignore_errors: true
201 210
 
202 211
 - include: assert_fail_msg.yml output={{result}}  msg='unable to connect to database'
212
+
213
+- name: remove mysql_user {{user}}
214
+  mysql_user:
215
+    name: '{{user}}'
216
+    state: absent
217
+    login_unix_socket: '{{ mysql_socket }}'
... ...
@@ -37,6 +37,15 @@
37 37
         - 'default{{ python_suffix }}.yml'
38 38
       paths: '../vars'
39 39
 
40
+- name: Detect socket path
41
+  shell: >
42
+          echo "show variables like 'socket'\G" | mysql | grep 'Value: ' | sed 's/[ ]\+Value: //'
43
+  register: _socket_path
44
+
45
+- name: Set socket path
46
+  set_fact:
47
+    mysql_socket: '{{ _socket_path["stdout"] }}'
48
+
40 49
 - name: install mysqldb_test rpm dependencies
41 50
   yum: name={{ item }} state=latest
42 51
   with_items: "{{mysql_packages}}"