Merge lp:~vlad-lesin/percona-server/5.6-bug-1354988 into lp:percona-server/5.6
- 5.6-bug-1354988
- Merge into 5.6
Proposed by
Vlad Lesin
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Laurynas Biveinis | ||||
Approved revision: | no longer in the source branch. | ||||
Merged at revision: | 743 | ||||
Proposed branch: | lp:~vlad-lesin/percona-server/5.6-bug-1354988 | ||||
Merge into: | lp:percona-server/5.6 | ||||
Diff against target: |
275 lines (+127/-3) 6 files modified
mysql-test/r/grant.result (+13/-0) mysql-test/r/grant_cache.result (+2/-0) mysql-test/r/percona_bug1354988.result (+50/-0) mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result (+4/-0) mysql-test/t/percona_bug1354988.test (+53/-0) sql/sql_acl.cc (+5/-3) |
||||
To merge this branch: | bzr merge lp:~vlad-lesin/percona-server/5.6-bug-1354988 | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Laurynas Biveinis (community) | Approve | ||
Review via email: mp+246278@code.launchpad.net |
Commit message
Description of the change
Bug #1354988 fix.
Use compare_hostname() function instead of my_strcasecmp() in mysql_show_
To post a comment you must log in.
Revision history for this message
Vlad Lesin (vlad-lesin) wrote : | # |
Revision history for this message
Vlad Lesin (vlad-lesin) wrote : | # |
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'mysql-test/r/grant.result' | |||
2 | --- mysql-test/r/grant.result 2014-12-01 07:53:48 +0000 | |||
3 | +++ mysql-test/r/grant.result 2015-02-09 13:07:26 +0000 | |||
4 | @@ -781,6 +781,7 @@ | |||
5 | 781 | Grants for mysqltest1@192.% | 781 | Grants for mysqltest1@192.% |
6 | 782 | GRANT USAGE ON *.* TO 'mysqltest1'@'192.%' | 782 | GRANT USAGE ON *.* TO 'mysqltest1'@'192.%' |
7 | 783 | GRANT SELECT ON `mysqltest`.`t1` TO 'mysqltest1'@'192.%' | 783 | GRANT SELECT ON `mysqltest`.`t1` TO 'mysqltest1'@'192.%' |
8 | 784 | GRANT DELETE ON `mysqltest`.`t1` TO 'mysqltest1'@'%' | ||
9 | 784 | show grants for mysqltest1@'%'; | 785 | show grants for mysqltest1@'%'; |
10 | 785 | Grants for mysqltest1@% | 786 | Grants for mysqltest1@% |
11 | 786 | GRANT USAGE ON *.* TO 'mysqltest1'@'%' | 787 | GRANT USAGE ON *.* TO 'mysqltest1'@'%' |
12 | @@ -836,6 +837,7 @@ | |||
13 | 836 | Grants for mysqltest_8@% | 837 | Grants for mysqltest_8@% |
14 | 837 | GRANT USAGE ON *.* TO 'mysqltest_8'@'%' | 838 | GRANT USAGE ON *.* TO 'mysqltest_8'@'%' |
15 | 838 | GRANT SELECT ON `mysqltest`.* TO 'mysqltest_8'@'%' | 839 | GRANT SELECT ON `mysqltest`.* TO 'mysqltest_8'@'%' |
16 | 840 | GRANT SELECT ON `mysqltest`.* TO 'mysqltest_8'@'' | ||
17 | 839 | select * from information_schema.schema_privileges | 841 | select * from information_schema.schema_privileges |
18 | 840 | where grantee like "'mysqltest_8'%"; | 842 | where grantee like "'mysqltest_8'%"; |
19 | 841 | GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE | 843 | GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE |
20 | @@ -875,6 +877,7 @@ | |||
21 | 875 | show grants for mysqltest_8@''; | 877 | show grants for mysqltest_8@''; |
22 | 876 | Grants for mysqltest_8@ | 878 | Grants for mysqltest_8@ |
23 | 877 | GRANT USAGE ON *.* TO 'mysqltest_8'@'' | 879 | GRANT USAGE ON *.* TO 'mysqltest_8'@'' |
24 | 880 | GRANT UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'%' | ||
25 | 878 | GRANT UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'' | 881 | GRANT UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'' |
26 | 879 | show grants for mysqltest_8; | 882 | show grants for mysqltest_8; |
27 | 880 | Grants for mysqltest_8@% | 883 | Grants for mysqltest_8@% |
28 | @@ -884,11 +887,13 @@ | |||
29 | 884 | show grants for mysqltest_8@''; | 887 | show grants for mysqltest_8@''; |
30 | 885 | Grants for mysqltest_8@ | 888 | Grants for mysqltest_8@ |
31 | 886 | GRANT USAGE ON *.* TO 'mysqltest_8'@'' | 889 | GRANT USAGE ON *.* TO 'mysqltest_8'@'' |
32 | 890 | GRANT UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'%' | ||
33 | 887 | GRANT UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'' | 891 | GRANT UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'' |
34 | 888 | show grants for mysqltest_8; | 892 | show grants for mysqltest_8; |
35 | 889 | Grants for mysqltest_8@% | 893 | Grants for mysqltest_8@% |
36 | 890 | GRANT USAGE ON *.* TO 'mysqltest_8'@'%' | 894 | GRANT USAGE ON *.* TO 'mysqltest_8'@'%' |
37 | 891 | GRANT UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'%' | 895 | GRANT UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'%' |
38 | 896 | GRANT UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'' | ||
39 | 892 | select * from information_schema.column_privileges; | 897 | select * from information_schema.column_privileges; |
40 | 893 | GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE | 898 | GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME PRIVILEGE_TYPE IS_GRANTABLE |
41 | 894 | 'mysqltest_8'@'%' def test t1 a UPDATE NO | 899 | 'mysqltest_8'@'%' def test t1 a UPDATE NO |
42 | @@ -918,6 +923,7 @@ | |||
43 | 918 | show grants for mysqltest_8@''; | 923 | show grants for mysqltest_8@''; |
44 | 919 | Grants for mysqltest_8@ | 924 | Grants for mysqltest_8@ |
45 | 920 | GRANT USAGE ON *.* TO 'mysqltest_8'@'' | 925 | GRANT USAGE ON *.* TO 'mysqltest_8'@'' |
46 | 926 | GRANT UPDATE ON `test`.`t1` TO 'mysqltest_8'@'%' | ||
47 | 921 | GRANT UPDATE ON `test`.`t1` TO 'mysqltest_8'@'' | 927 | GRANT UPDATE ON `test`.`t1` TO 'mysqltest_8'@'' |
48 | 922 | show grants for mysqltest_8; | 928 | show grants for mysqltest_8; |
49 | 923 | Grants for mysqltest_8@% | 929 | Grants for mysqltest_8@% |
50 | @@ -927,11 +933,13 @@ | |||
51 | 927 | show grants for mysqltest_8@''; | 933 | show grants for mysqltest_8@''; |
52 | 928 | Grants for mysqltest_8@ | 934 | Grants for mysqltest_8@ |
53 | 929 | GRANT USAGE ON *.* TO 'mysqltest_8'@'' | 935 | GRANT USAGE ON *.* TO 'mysqltest_8'@'' |
54 | 936 | GRANT UPDATE ON `test`.`t1` TO 'mysqltest_8'@'%' | ||
55 | 930 | GRANT UPDATE ON `test`.`t1` TO 'mysqltest_8'@'' | 937 | GRANT UPDATE ON `test`.`t1` TO 'mysqltest_8'@'' |
56 | 931 | show grants for mysqltest_8; | 938 | show grants for mysqltest_8; |
57 | 932 | Grants for mysqltest_8@% | 939 | Grants for mysqltest_8@% |
58 | 933 | GRANT USAGE ON *.* TO 'mysqltest_8'@'%' | 940 | GRANT USAGE ON *.* TO 'mysqltest_8'@'%' |
59 | 934 | GRANT UPDATE ON `test`.`t1` TO 'mysqltest_8'@'%' | 941 | GRANT UPDATE ON `test`.`t1` TO 'mysqltest_8'@'%' |
60 | 942 | GRANT UPDATE ON `test`.`t1` TO 'mysqltest_8'@'' | ||
61 | 935 | select * from information_schema.table_privileges; | 943 | select * from information_schema.table_privileges; |
62 | 936 | GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE | 944 | GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE |
63 | 937 | 'mysqltest_8'@'%' def test t1 UPDATE NO | 945 | 'mysqltest_8'@'%' def test t1 UPDATE NO |
64 | @@ -964,12 +972,14 @@ | |||
65 | 964 | show grants for mysqltest_8@''; | 972 | show grants for mysqltest_8@''; |
66 | 965 | Grants for mysqltest_8@ | 973 | Grants for mysqltest_8@ |
67 | 966 | GRANT USAGE ON *.* TO 'mysqltest_8'@'' | 974 | GRANT USAGE ON *.* TO 'mysqltest_8'@'' |
68 | 975 | GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'%' | ||
69 | 967 | GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'' | 976 | GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'' |
70 | 968 | GRANT UPDATE, UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'' | 977 | GRANT UPDATE, UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'' |
71 | 969 | show grants for mysqltest_8; | 978 | show grants for mysqltest_8; |
72 | 970 | Grants for mysqltest_8@% | 979 | Grants for mysqltest_8@% |
73 | 971 | GRANT USAGE ON *.* TO 'mysqltest_8'@'%' | 980 | GRANT USAGE ON *.* TO 'mysqltest_8'@'%' |
74 | 972 | GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'%' | 981 | GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'%' |
75 | 982 | GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'' | ||
76 | 973 | select * from information_schema.user_privileges | 983 | select * from information_schema.user_privileges |
77 | 974 | where grantee like "'mysqltest_8'%"; | 984 | where grantee like "'mysqltest_8'%"; |
78 | 975 | GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE | 985 | GRANTEE TABLE_CATALOG PRIVILEGE_TYPE IS_GRANTABLE |
79 | @@ -982,12 +992,15 @@ | |||
80 | 982 | show grants for mysqltest_8@''; | 992 | show grants for mysqltest_8@''; |
81 | 983 | Grants for mysqltest_8@ | 993 | Grants for mysqltest_8@ |
82 | 984 | GRANT USAGE ON *.* TO 'mysqltest_8'@'' | 994 | GRANT USAGE ON *.* TO 'mysqltest_8'@'' |
83 | 995 | GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'%' | ||
84 | 985 | GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'' | 996 | GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'' |
85 | 986 | GRANT UPDATE, UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'' | 997 | GRANT UPDATE, UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'' |
86 | 987 | show grants for mysqltest_8; | 998 | show grants for mysqltest_8; |
87 | 988 | Grants for mysqltest_8@% | 999 | Grants for mysqltest_8@% |
88 | 989 | GRANT USAGE ON *.* TO 'mysqltest_8'@'%' | 1000 | GRANT USAGE ON *.* TO 'mysqltest_8'@'%' |
89 | 990 | GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'%' | 1001 | GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'%' |
90 | 1002 | GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_8'@'' | ||
91 | 1003 | GRANT UPDATE, UPDATE (a) ON `test`.`t1` TO 'mysqltest_8'@'' | ||
92 | 991 | drop user mysqltest_8@''; | 1004 | drop user mysqltest_8@''; |
93 | 992 | show grants for mysqltest_8@''; | 1005 | show grants for mysqltest_8@''; |
94 | 993 | ERROR 42000: There is no such grant defined for user 'mysqltest_8' on host '' | 1006 | ERROR 42000: There is no such grant defined for user 'mysqltest_8' on host '' |
95 | 994 | 1007 | ||
96 | === modified file 'mysql-test/r/grant_cache.result' | |||
97 | --- mysql-test/r/grant_cache.result 2014-12-01 07:53:48 +0000 | |||
98 | +++ mysql-test/r/grant_cache.result 2015-02-09 13:07:26 +0000 | |||
99 | @@ -121,6 +121,8 @@ | |||
100 | 121 | show grants for current_user(); | 121 | show grants for current_user(); |
101 | 122 | Grants for @localhost | 122 | Grants for @localhost |
102 | 123 | GRANT USAGE ON *.* TO ''@'localhost' | 123 | GRANT USAGE ON *.* TO ''@'localhost' |
103 | 124 | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, EVENT, TRIGGER ON `test`.* TO ''@'%' | ||
104 | 125 | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, EVENT, TRIGGER ON `test\_%`.* TO ''@'%' | ||
105 | 124 | ----- establish connection user2 (user=mysqltest_2) ----- | 126 | ----- establish connection user2 (user=mysqltest_2) ----- |
106 | 125 | select "user2"; | 127 | select "user2"; |
107 | 126 | user2 | 128 | user2 |
108 | 127 | 129 | ||
109 | === added file 'mysql-test/r/percona_bug1354988.result' | |||
110 | --- mysql-test/r/percona_bug1354988.result 1970-01-01 00:00:00 +0000 | |||
111 | +++ mysql-test/r/percona_bug1354988.result 2015-02-09 13:07:26 +0000 | |||
112 | @@ -0,0 +1,50 @@ | |||
113 | 1 | CREATE USER grantee@localhost IDENTIFIED BY 'grantee1'; | ||
114 | 2 | CREATE USER grantee IDENTIFIED BY 'grantee2'; | ||
115 | 3 | CREATE DATABASE db2; | ||
116 | 4 | CREATE DATABASE db3; | ||
117 | 5 | USE db3; | ||
118 | 6 | CREATE TABLE t1 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, b INT(10) UNSIGNED NOT NULL DEFAULT 0); | ||
119 | 7 | CREATE TABLE t2 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, b INT(10) UNSIGNED NOT NULL DEFAULT 0); | ||
120 | 8 | INSERT INTO t2 (b) VALUES (1), (2); | ||
121 | 9 | CREATE FUNCTION f1() RETURNS INT | ||
122 | 10 | BEGIN | ||
123 | 11 | RETURN 1; | ||
124 | 12 | END | | ||
125 | 13 | CREATE PROCEDURE p1() | ||
126 | 14 | BEGIN | ||
127 | 15 | SELECT 1; | ||
128 | 16 | END | | ||
129 | 17 | GRANT ALL PRIVILEGES ON db2.* TO grantee WITH GRANT OPTION; | ||
130 | 18 | GRANT SELECT(a) ON TABLE db3.t2 TO grantee WITH GRANT OPTION; | ||
131 | 19 | GRANT ALL PRIVILEGES ON TABLE db3.t1 TO grantee WITH GRANT OPTION; | ||
132 | 20 | GRANT ALL PRIVILEGES ON FUNCTION db3.f1 TO grantee WITH GRANT OPTION; | ||
133 | 21 | GRANT ALL PRIVILEGES ON PROCEDURE db3.p1 TO grantee WITH GRANT OPTION; | ||
134 | 22 | SELECT user(), current_user(); | ||
135 | 23 | user() current_user() | ||
136 | 24 | grantee@localhost grantee@localhost | ||
137 | 25 | SHOW GRANTS; | ||
138 | 26 | Grants for grantee@localhost | ||
139 | 27 | GRANT USAGE ON *.* TO 'grantee'@'localhost' IDENTIFIED BY PASSWORD '*9823FF338D44DAF02422CF24DD1F879FB4F6B232' | ||
140 | 28 | GRANT ALL PRIVILEGES ON `db2`.* TO 'grantee'@'%' WITH GRANT OPTION | ||
141 | 29 | GRANT SELECT (a) ON `db3`.`t2` TO 'grantee'@'%' WITH GRANT OPTION | ||
142 | 30 | GRANT ALL PRIVILEGES ON `db3`.`t1` TO 'grantee'@'%' WITH GRANT OPTION | ||
143 | 31 | GRANT EXECUTE, ALTER ROUTINE ON PROCEDURE `db3`.`p1` TO 'grantee'@'%' WITH GRANT OPTION | ||
144 | 32 | GRANT EXECUTE, ALTER ROUTINE ON FUNCTION `db3`.`f1` TO 'grantee'@'%' WITH GRANT OPTION | ||
145 | 33 | USE db2; | ||
146 | 34 | CREATE TABLE t1(f1 int); | ||
147 | 35 | USE db3; | ||
148 | 36 | SELECT a FROM t2; | ||
149 | 37 | a | ||
150 | 38 | 1 | ||
151 | 39 | 2 | ||
152 | 40 | INSERT INTO t1 (b) VALUES (1), (2); | ||
153 | 41 | SELECT f1(); | ||
154 | 42 | f1() | ||
155 | 43 | 1 | ||
156 | 44 | CALL p1(); | ||
157 | 45 | 1 | ||
158 | 46 | 1 | ||
159 | 47 | DROP DATABASE db2; | ||
160 | 48 | DROP DATABASE db3; | ||
161 | 49 | DROP USER grantee@localhost; | ||
162 | 50 | DROP USER grantee; | ||
163 | 0 | 51 | ||
164 | === modified file 'mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result' | |||
165 | --- mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result 2014-12-01 07:53:48 +0000 | |||
166 | +++ mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result 2015-02-09 13:07:26 +0000 | |||
167 | @@ -209,6 +209,8 @@ | |||
168 | 209 | SHOW GRANTS; | 209 | SHOW GRANTS; |
169 | 210 | Grants for @localhost | 210 | Grants for @localhost |
170 | 211 | GRANT PROCESS ON *.* TO ''@'localhost' | 211 | GRANT PROCESS ON *.* TO ''@'localhost' |
171 | 212 | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, EVENT, TRIGGER ON `test`.* TO ''@'%' | ||
172 | 213 | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, EVENT, TRIGGER ON `test\_%`.* TO ''@'%' | ||
173 | 212 | SHOW processlist; | 214 | SHOW processlist; |
174 | 213 | Id User Host db Command Time State Info Rows_sent Rows_examined | 215 | Id User Host db Command Time State Info Rows_sent Rows_examined |
175 | 214 | ID HOST_NAME information_schema Query TIME init SHOW processlist TIME_MS 0 | 216 | ID HOST_NAME information_schema Query TIME init SHOW processlist TIME_MS 0 |
176 | @@ -257,6 +259,8 @@ | |||
177 | 257 | SHOW GRANTS FOR ''@'localhost'; | 259 | SHOW GRANTS FOR ''@'localhost'; |
178 | 258 | Grants for @localhost | 260 | Grants for @localhost |
179 | 259 | GRANT USAGE ON *.* TO ''@'localhost' | 261 | GRANT USAGE ON *.* TO ''@'localhost' |
180 | 262 | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, EVENT, TRIGGER ON `test`.* TO ''@'%' | ||
181 | 263 | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, EVENT, TRIGGER ON `test\_%`.* TO ''@'%' | ||
182 | 260 | SELECT * FROM information_schema.processlist; | 264 | SELECT * FROM information_schema.processlist; |
183 | 261 | ID USER HOST DB COMMAND TIME STATE INFO TIME_MS ROWS_SENT ROWS_EXAMINED | 265 | ID USER HOST DB COMMAND TIME STATE INFO TIME_MS ROWS_SENT ROWS_EXAMINED |
184 | 262 | ID HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS 0 0 | 266 | ID HOST_NAME information_schema Query TIME executing SELECT * FROM information_schema.processlist TIME_MS 0 0 |
185 | 263 | 267 | ||
186 | === added file 'mysql-test/t/percona_bug1354988.test' | |||
187 | --- mysql-test/t/percona_bug1354988.test 1970-01-01 00:00:00 +0000 | |||
188 | +++ mysql-test/t/percona_bug1354988.test 2015-02-09 13:07:26 +0000 | |||
189 | @@ -0,0 +1,53 @@ | |||
190 | 1 | # The bug #1354988 test. | ||
191 | 2 | |||
192 | 3 | CREATE USER grantee@localhost IDENTIFIED BY 'grantee1'; | ||
193 | 4 | CREATE USER grantee IDENTIFIED BY 'grantee2'; | ||
194 | 5 | |||
195 | 6 | CREATE DATABASE db2; | ||
196 | 7 | |||
197 | 8 | |||
198 | 9 | CREATE DATABASE db3; | ||
199 | 10 | USE db3; | ||
200 | 11 | |||
201 | 12 | CREATE TABLE t1 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, b INT(10) UNSIGNED NOT NULL DEFAULT 0); | ||
202 | 13 | CREATE TABLE t2 (a INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, b INT(10) UNSIGNED NOT NULL DEFAULT 0); | ||
203 | 14 | INSERT INTO t2 (b) VALUES (1), (2); | ||
204 | 15 | |||
205 | 16 | -- delimiter | | ||
206 | 17 | |||
207 | 18 | CREATE FUNCTION f1() RETURNS INT | ||
208 | 19 | BEGIN | ||
209 | 20 | RETURN 1; | ||
210 | 21 | END | | ||
211 | 22 | |||
212 | 23 | CREATE PROCEDURE p1() | ||
213 | 24 | BEGIN | ||
214 | 25 | SELECT 1; | ||
215 | 26 | END | | ||
216 | 27 | |||
217 | 28 | -- delimiter ; | ||
218 | 29 | |||
219 | 30 | GRANT ALL PRIVILEGES ON db2.* TO grantee WITH GRANT OPTION; | ||
220 | 31 | GRANT SELECT(a) ON TABLE db3.t2 TO grantee WITH GRANT OPTION; | ||
221 | 32 | GRANT ALL PRIVILEGES ON TABLE db3.t1 TO grantee WITH GRANT OPTION; | ||
222 | 33 | GRANT ALL PRIVILEGES ON FUNCTION db3.f1 TO grantee WITH GRANT OPTION; | ||
223 | 34 | GRANT ALL PRIVILEGES ON PROCEDURE db3.p1 TO grantee WITH GRANT OPTION; | ||
224 | 35 | |||
225 | 36 | -- connect (con1, localhost, grantee,grantee1,) | ||
226 | 37 | -- connection con1 | ||
227 | 38 | SELECT user(), current_user(); | ||
228 | 39 | SHOW GRANTS; | ||
229 | 40 | USE db2; | ||
230 | 41 | CREATE TABLE t1(f1 int); | ||
231 | 42 | USE db3; | ||
232 | 43 | SELECT a FROM t2; | ||
233 | 44 | INSERT INTO t1 (b) VALUES (1), (2); | ||
234 | 45 | SELECT f1(); | ||
235 | 46 | CALL p1(); | ||
236 | 47 | -- disconnect con1 | ||
237 | 48 | |||
238 | 49 | -- connection default | ||
239 | 50 | DROP DATABASE db2; | ||
240 | 51 | DROP DATABASE db3; | ||
241 | 52 | DROP USER grantee@localhost; | ||
242 | 53 | DROP USER grantee; | ||
243 | 0 | 54 | ||
244 | === modified file 'sql/sql_acl.cc' | |||
245 | --- sql/sql_acl.cc 2014-12-01 07:53:48 +0000 | |||
246 | +++ sql/sql_acl.cc 2015-02-09 13:07:26 +0000 | |||
247 | @@ -6940,7 +6940,7 @@ | |||
248 | 6940 | */ | 6940 | */ |
249 | 6941 | 6941 | ||
250 | 6942 | if (!strcmp(lex_user->user.str,user) && | 6942 | if (!strcmp(lex_user->user.str,user) && |
252 | 6943 | !my_strcasecmp(system_charset_info, lex_user->host.str, host)) | 6943 | acl_db->host.compare_hostname(lex_user->host.str, lex_user->host.str)) |
253 | 6944 | { | 6944 | { |
254 | 6945 | want_access=acl_db->access; | 6945 | want_access=acl_db->access; |
255 | 6946 | if (want_access) | 6946 | if (want_access) |
256 | @@ -7010,7 +7010,8 @@ | |||
257 | 7010 | */ | 7010 | */ |
258 | 7011 | 7011 | ||
259 | 7012 | if (!strcmp(lex_user->user.str,user) && | 7012 | if (!strcmp(lex_user->user.str,user) && |
261 | 7013 | !my_strcasecmp(system_charset_info, lex_user->host.str, host)) | 7013 | grant_table->host.compare_hostname(lex_user->host.str, |
262 | 7014 | lex_user->host.str)) | ||
263 | 7014 | { | 7015 | { |
264 | 7015 | ulong table_access= grant_table->privs; | 7016 | ulong table_access= grant_table->privs; |
265 | 7016 | if ((table_access | grant_table->cols) != 0) | 7017 | if ((table_access | grant_table->cols) != 0) |
266 | @@ -7159,7 +7160,8 @@ | |||
267 | 7159 | */ | 7160 | */ |
268 | 7160 | 7161 | ||
269 | 7161 | if (!strcmp(lex_user->user.str,user) && | 7162 | if (!strcmp(lex_user->user.str,user) && |
271 | 7162 | !my_strcasecmp(system_charset_info, lex_user->host.str, host)) | 7163 | grant_proc->host.compare_hostname(lex_user->host.str, |
272 | 7164 | lex_user->host.str)) | ||
273 | 7163 | { | 7165 | { |
274 | 7164 | ulong proc_access= grant_proc->privs; | 7166 | ulong proc_access= grant_proc->privs; |
275 | 7165 | if (proc_access != 0) | 7167 | if (proc_access != 0) |
http:// jenkins. percona. com/view/ PS%205. 6/job/percona- server- 5.6-param/ 796/