1
1
# This script converts any old privilege tables to privilege tables suitable
2
2
# for this version of MySQL
3
-
4
3
# You can safely ignore all 'Duplicate column' and 'Unknown column' errors"
5
4
# because these just mean that your tables are already up to date.
6
5
# This script is safe to run even if your tables are already up to date!
@@ -52,32 +51,47 @@ ADD x509_subject BLOB NOT NULL;
52
51
ALTER TABLE user MODIFY ssl_type enum(' ' ,' ANY' ,' X509' , ' SPECIFIED' ) NOT NULL ;
53
52
54
53
#
55
- # Create tables_priv and columns_priv if they don't exists
54
+ # tables_priv
56
55
#
57
-
58
56
CREATE TABLE IF NOT EXISTS tables_priv (
59
57
Host char (60 ) binary DEFAULT ' ' NOT NULL ,
60
58
Db char (64 ) binary DEFAULT ' ' NOT NULL ,
61
59
User char (16 ) binary DEFAULT ' ' NOT NULL ,
62
60
Table_name char (64 ) binary DEFAULT ' ' NOT NULL ,
63
61
Grantor char (77 ) DEFAULT ' ' NOT NULL ,
64
62
Timestamp timestamp (14 ),
65
- Table_priv set (' Select' ,' Insert' ,' Update' ,' Delete' ,' Create' ,' Drop' ,' Grant' ,' References' ,' Index' ,' Alter' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ,
66
- Column_priv set (' Select' ,' Insert' ,' Update' ,' References' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ,
63
+ Table_priv set (' Select' ,' Insert' ,' Update' ,' Delete' ,' Create' ,
64
+ ' Drop' ,' Grant' ,' References' ,' Index' ,' Alter' )
65
+ COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ,
66
+ Column_priv set (' Select' ,' Insert' ,' Update' ,' References' )
67
+ COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ,
67
68
PRIMARY KEY (Host,Db,User,Table_name)
68
69
) CHARACTER SET utf8 COLLATE utf8_bin;
69
70
# Fix collation of set fields
70
71
ALTER TABLE tables_priv
71
- modify Table_priv set (' Select' ,' Insert' ,' Update' ,' Delete' ,' Create' ,' Drop' ,' Grant' ,' References' ,' Index' ,' Alter' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ,
72
- modify Column_priv set (' Select' ,' Insert' ,' Update' ,' References' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ;
73
- ALTER TABLE procs_priv ENGINE= MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
74
- ALTER TABLE procs_priv
75
- modify Proc_priv set (' Execute' ,' Alter Routine' ,' Grant' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ;
76
- ALTER TABLE procs_priv
77
- add Routine_type enum(' FUNCTION' ,' PROCEDURE' ) COLLATE utf8_general_ci NOT NULL AFTER Routine_name;
78
- ALTER TABLE procs_priv
79
- modify Timestamp timestamp (14 ) AFTER Proc_priv;
72
+ ADD KEY Grantor (Grantor);
80
73
74
+ ALTER TABLE tables_priv
75
+ MODIFY Host char (60 ) NOT NULL default ' ' ,
76
+ MODIFY Db char (64 ) NOT NULL default ' ' ,
77
+ MODIFY User char (16 ) NOT NULL default ' ' ,
78
+ MODIFY Table_name char (64 ) NOT NULL default ' ' ,
79
+ MODIFY Grantor char (77 ) NOT NULL default ' ' ,
80
+ ENGINE= MyISAM,
81
+ CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
82
+
83
+ ALTER TABLE tables_priv
84
+ MODIFY Column_priv set (' Select' ,' Insert' ,' Update' ,' References' )
85
+ COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ,
86
+ MODIFY Table_priv set (' Select' ,' Insert' ,' Update' ,' Delete' ,' Create' ,
87
+ ' Drop' ,' Grant' ,' References' ,' Index' ,' Alter' ,
88
+ ' Create View' ,' Show view' )
89
+ COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ,
90
+ COMMENT= ' Table privileges' ;
91
+
92
+ #
93
+ # columns_priv
94
+ #
81
95
CREATE TABLE IF NOT EXISTS columns_priv (
82
96
Host char (60 ) DEFAULT ' ' NOT NULL ,
83
97
Db char (64 ) DEFAULT ' ' NOT NULL ,
@@ -88,16 +102,26 @@ CREATE TABLE IF NOT EXISTS columns_priv (
88
102
Column_priv set (' Select' ,' Insert' ,' Update' ,' References' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ,
89
103
PRIMARY KEY (Host,Db,User,Table_name,Column_name)
90
104
) CHARACTER SET utf8 COLLATE utf8_bin;
91
- # Fix collation of set fields
92
- ALTER TABLE columns_priv
93
- MODIFY Column_priv set (' Select' ,' Insert' ,' Update' ,' References' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ;
94
-
95
-
96
105
#
97
106
# Name change of Type -> Column_priv from MySQL 3.22.12
98
107
#
108
+ ALTER TABLE columns_priv
109
+ CHANGE Type Column_priv set (' Select' ,' Insert' ,' Update' ,' References' )
110
+ COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ;
111
+
112
+ ALTER TABLE columns_priv
113
+ MODIFY Host char (60 ) NOT NULL default ' ' ,
114
+ MODIFY Db char (64 ) NOT NULL default ' ' ,
115
+ MODIFY User char (16 ) NOT NULL default ' ' ,
116
+ MODIFY Table_name char (64 ) NOT NULL default ' ' ,
117
+ MODIFY Column_name char (64 ) NOT NULL default ' ' ,
118
+ ENGINE= MyISAM,
119
+ CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin,
120
+ COMMENT= ' Column privileges' ;
99
121
100
- ALTER TABLE columns_priv change Type Column_priv set (' Select' ,' Insert' ,' Update' ,' References' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ;
122
+ ALTER TABLE columns_priv
123
+ MODIFY Column_priv set (' Select' ,' Insert' ,' Update' ,' References' )
124
+ COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ;
101
125
102
126
#
103
127
# Add the new 'type' column to the func table.
@@ -147,14 +171,12 @@ ADD Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,
147
171
ADD Lock_tables_priv enum(' N' ,' Y' ) DEFAULT ' N' NOT NULL ;
148
172
149
173
alter table user change max_questions max_questions int (11 ) unsigned DEFAULT 0 NOT NULL ;
150
- alter table tables_priv add KEY Grantor (Grantor);
174
+
151
175
152
176
alter table db comment= ' Database privileges' ;
153
177
alter table host comment= ' Host privileges; Merged with database privileges' ;
154
178
alter table user comment= ' Users and global privileges' ;
155
179
alter table func comment= ' User defined functions' ;
156
- alter table tables_priv comment= ' Table privileges' ;
157
- alter table columns_priv comment= ' Column privileges' ;
158
180
159
181
# Convert all tables to UTF-8 with binary collation
160
182
# and reset all char columns to correct width
@@ -228,25 +250,6 @@ ALTER TABLE func
228
250
ENGINE= MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
229
251
ALTER TABLE func
230
252
MODIFY type enum (' function' ,' aggregate' ) COLLATE utf8_general_ci NOT NULL ;
231
- ALTER TABLE columns_priv
232
- MODIFY Host char (60 ) NOT NULL default ' ' ,
233
- MODIFY Db char (64 ) NOT NULL default ' ' ,
234
- MODIFY User char (16 ) NOT NULL default ' ' ,
235
- MODIFY Table_name char (64 ) NOT NULL default ' ' ,
236
- MODIFY Column_name char (64 ) NOT NULL default ' ' ,
237
- ENGINE= MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
238
- ALTER TABLE columns_priv
239
- MODIFY Column_priv set (' Select' ,' Insert' ,' Update' ,' References' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ;
240
- ALTER TABLE tables_priv
241
- MODIFY Host char (60 ) NOT NULL default ' ' ,
242
- MODIFY Db char (64 ) NOT NULL default ' ' ,
243
- MODIFY User char (16 ) NOT NULL default ' ' ,
244
- MODIFY Table_name char (64 ) NOT NULL default ' ' ,
245
- MODIFY Grantor char (77 ) NOT NULL default ' ' ,
246
- ENGINE= MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
247
- ALTER TABLE tables_priv
248
- MODIFY Table_priv set (' Select' ,' Insert' ,' Update' ,' Delete' ,' Create' ,' Drop' ,' Grant' ,' References' ,' Index' ,' Alter' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ,
249
- MODIFY Column_priv set (' Select' ,' Insert' ,' Update' ,' References' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ;
250
253
251
254
#
252
255
# Detect whether we had Create_view_priv
@@ -278,11 +281,6 @@ ALTER TABLE host MODIFY Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEF
278
281
ALTER TABLE user ADD Show_view_priv enum(' N' ,' Y' ) COLLATE utf8_general_ci DEFAULT ' N' NOT NULL AFTER Create_view_priv;
279
282
ALTER TABLE user MODIFY Show_view_priv enum(' N' ,' Y' ) COLLATE utf8_general_ci DEFAULT ' N' NOT NULL AFTER Create_view_priv;
280
283
281
- #
282
- # Show/Create views table privileges (v5.0)
283
- #
284
- ALTER TABLE tables_priv MODIFY Table_priv set (' Select' ,' Insert' ,' Update' ,' Delete' ,' Create' ,' Drop' ,' Grant' ,' References' ,' Index' ,' Alter' ,' Create View' ,' Show view' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ;
285
-
286
284
#
287
285
# Assign create/show view privileges to people who have create provileges
288
286
#
@@ -349,22 +347,41 @@ UPDATE user LEFT JOIN db USING (Host,User) SET Create_user_priv='Y'
349
347
WHERE @hadCreateUserPriv = 0 AND
350
348
(user .Grant_priv = ' Y' OR db .Grant_priv = ' Y' );
351
349
352
- #
353
- # Create some possible missing tables
354
- #
350
+ --
351
+ -- procs_priv
352
+ --
355
353
CREATE TABLE IF NOT EXISTS procs_priv (
356
- Host char (60 ) binary DEFAULT ' ' NOT NULL ,
357
- Db char (64 ) binary DEFAULT ' ' NOT NULL ,
358
- User char (16 ) binary DEFAULT ' ' NOT NULL ,
359
- Routine_name char (64 ) binary DEFAULT ' ' NOT NULL ,
360
- Routine_type enum(' FUNCTION' ,' PROCEDURE' ) NOT NULL ,
361
- Grantor char (77 ) DEFAULT ' ' NOT NULL ,
362
- Proc_priv set (' Execute' ,' Alter Routine' ,' Grant' ) COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ,
363
- Timestamp timestamp (14 ),
364
- PRIMARY KEY (Host,Db,User,Routine_name,Routine_type),
365
- KEY Grantor (Grantor)
354
+ Host char (60 ) binary DEFAULT ' ' NOT NULL ,
355
+ Db char (64 ) binary DEFAULT ' ' NOT NULL ,
356
+ User char (16 ) binary DEFAULT ' ' NOT NULL ,
357
+ Routine_name char (64 ) binary DEFAULT ' ' NOT NULL ,
358
+ Routine_type enum(' FUNCTION' ,' PROCEDURE' ) NOT NULL ,
359
+ Grantor char (77 ) DEFAULT ' ' NOT NULL ,
360
+ Proc_priv set (' Execute' ,' Alter Routine' ,' Grant' )
361
+ COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ,
362
+ Timestamp timestamp (14 ),
363
+ PRIMARY KEY (Host, Db, User, Routine_name, Routine_type),
364
+ KEY Grantor (Grantor)
366
365
) CHARACTER SET utf8 COLLATE utf8_bin comment= ' Procedure privileges' ;
367
366
367
+ ALTER TABLE procs_priv
368
+ ENGINE= MyISAM,
369
+ CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
370
+
371
+ ALTER TABLE procs_priv
372
+ MODIFY Proc_priv set (' Execute' ,' Alter Routine' ,' Grant' )
373
+ COLLATE utf8_general_ci DEFAULT ' ' NOT NULL ;
374
+
375
+ ALTER TABLE procs_priv
376
+ ADD Routine_type enum(' FUNCTION' ,' PROCEDURE' )
377
+ COLLATE utf8_general_ci NOT NULL AFTER Routine_name;
378
+
379
+ ALTER TABLE procs_priv
380
+ MODIFY Timestamp timestamp (14 ) AFTER Proc_priv;
381
+
382
+ --
383
+ -- help_topic
384
+ --
368
385
CREATE TABLE IF NOT EXISTS help_topic (
369
386
help_topic_id int unsigned not null ,
370
387
name varchar (64 ) not null ,
0 commit comments