~ubuntu-branches/ubuntu/natty/mysql-5.1/natty-proposed

1.4.1 by Marc Deslauriers
Import upstream version 5.1.61
1
-- Copyright (c) 2007, 2008 MySQL AB, 2009 Sun Microsystems, Inc.
2
-- Use is subject to license terms.
3
-- 
4
-- This program is free software; you can redistribute it and/or modify
5
-- it under the terms of the GNU General Public License as published by
6
-- the Free Software Foundation; version 2 of the License.
7
-- 
8
-- This program is distributed in the hope that it will be useful,
9
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
10
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
-- GNU General Public License for more details.
12
-- 
13
-- You should have received a copy of the GNU General Public License
14
-- along with this program; if not, write to the Free Software
15
-- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
16
1 by Norbert Tretkowski
Import upstream version 5.1.45
17
--
18
-- The system tables of MySQL Server
19
--
20
21
set sql_mode='';
22
set storage_engine=myisam;
23
24
CREATE TABLE IF NOT EXISTS db (   Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Event_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY Host (Host,Db,User), KEY User (User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Database privileges';
25
26
-- Remember for later if db table already existed
27
set @had_db_table= @@warning_count != 0;
28
29
CREATE TABLE IF NOT EXISTS host (  Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY Host (Host,Db) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Host privileges;  Merged with database privileges';
30
31
32
CREATE TABLE IF NOT EXISTS user (   Host char(60) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Password char(41) character set latin1 collate latin1_bin DEFAULT '' NOT NULL, Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Reload_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Shutdown_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Process_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, File_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_db_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Super_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Repl_slave_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Repl_client_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_user_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Event_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci DEFAULT '' NOT NULL, ssl_cipher BLOB NOT NULL, x509_issuer BLOB NOT NULL, x509_subject BLOB NOT NULL, max_questions int(11) unsigned DEFAULT 0  NOT NULL, max_updates int(11) unsigned DEFAULT 0  NOT NULL, max_connections int(11) unsigned DEFAULT 0  NOT NULL, max_user_connections int(11) unsigned DEFAULT 0  NOT NULL, PRIMARY KEY Host (Host,User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Users and global privileges';
33
34
-- Remember for later if user table already existed
35
set @had_user_table= @@warning_count != 0;
36
37
38
CREATE TABLE IF NOT EXISTS func (  name char(64) binary DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin   comment='User defined functions';
39
40
41
CREATE TABLE IF NOT EXISTS plugin ( name char(64) binary DEFAULT '' NOT NULL, dl char(128) DEFAULT '' NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='MySQL plugins';
42
43
44
CREATE TABLE IF NOT EXISTS servers ( Server_name char(64) NOT NULL DEFAULT '', Host char(64) NOT NULL DEFAULT '', Db char(64) NOT NULL DEFAULT '', Username char(64) NOT NULL DEFAULT '', Password char(64) NOT NULL DEFAULT '', Port INT(4) NOT NULL DEFAULT '0', Socket char(64) NOT NULL DEFAULT '', Wrapper char(64) NOT NULL DEFAULT '', Owner char(64) NOT NULL DEFAULT '', PRIMARY KEY (Server_name)) CHARACTER SET utf8 comment='MySQL Foreign Servers table';
45
46
47
CREATE TABLE IF NOT EXISTS tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp(14), Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin   comment='Table privileges';
48
49
CREATE TABLE IF NOT EXISTS columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp(14), Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin   comment='Column privileges';
50
51
52
CREATE TABLE IF NOT EXISTS help_topic ( help_topic_id int unsigned not null, name char(64) not null, help_category_id smallint unsigned not null, description text not null, example  text not null, url char(128) not null, primary key (help_topic_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8   comment='help topics';
53
54
55
CREATE TABLE IF NOT EXISTS help_category ( help_category_id smallint unsigned not null, name  char(64) not null, parent_category_id smallint unsigned null, url char(128) not null, primary key (help_category_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8   comment='help categories';
56
57
58
CREATE TABLE IF NOT EXISTS help_relation ( help_topic_id int unsigned not null references help_topic, help_keyword_id  int unsigned not null references help_keyword, primary key (help_keyword_id, help_topic_id) ) engine=MyISAM CHARACTER SET utf8 comment='keyword-topic relation';
59
60
61
CREATE TABLE IF NOT EXISTS help_keyword (   help_keyword_id  int unsigned not null, name char(64) not null, primary key (help_keyword_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help keywords';
62
63
64
CREATE TABLE IF NOT EXISTS time_zone_name (   Name char(64) NOT NULL, Time_zone_id int unsigned NOT NULL, PRIMARY KEY Name (Name) ) engine=MyISAM CHARACTER SET utf8   comment='Time zone names';
65
66
67
CREATE TABLE IF NOT EXISTS time_zone (   Time_zone_id int unsigned NOT NULL auto_increment, Use_leap_seconds enum('Y','N') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY TzId (Time_zone_id) ) engine=MyISAM CHARACTER SET utf8   comment='Time zones';
68
69
70
CREATE TABLE IF NOT EXISTS time_zone_transition (   Time_zone_id int unsigned NOT NULL, Transition_time bigint signed NOT NULL, Transition_type_id int unsigned NOT NULL, PRIMARY KEY TzIdTranTime (Time_zone_id, Transition_time) ) engine=MyISAM CHARACTER SET utf8   comment='Time zone transitions';
71
72
73
CREATE TABLE IF NOT EXISTS time_zone_transition_type (   Time_zone_id int unsigned NOT NULL, Transition_type_id int unsigned NOT NULL, Offset int signed DEFAULT 0 NOT NULL, Is_DST tinyint unsigned DEFAULT 0 NOT NULL, Abbreviation char(8) DEFAULT '' NOT NULL, PRIMARY KEY TzIdTrTId (Time_zone_id, Transition_type_id) ) engine=MyISAM CHARACTER SET utf8   comment='Time zone transition types';
74
75
76
CREATE TABLE IF NOT EXISTS time_zone_leap_second (   Transition_time bigint signed NOT NULL, Correction int signed NOT NULL, PRIMARY KEY TranTime (Transition_time) ) engine=MyISAM CHARACTER SET utf8   comment='Leap seconds information for time zones';
77
78
79
CREATE TABLE IF NOT EXISTS proc (db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum( 'CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA') DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob NOT NULL, returns longblob DEFAULT '' NOT NULL, body longblob NOT NULL, definer char(77) collate utf8_bin DEFAULT '' NOT NULL, created timestamp, modified timestamp, sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NOT_USED', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE', 'NO_ENGINE_SUBSTITUTION', 'PAD_CHAR_TO_FULL_LENGTH') DEFAULT '' NOT NULL, comment char(64) collate utf8_bin DEFAULT '' NOT NULL, character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db,name,type)) engine=MyISAM character set utf8 comment='Stored Procedures';
80
81
CREATE TABLE IF NOT EXISTS procs_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Routine_name char(64) COLLATE utf8_general_ci DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp(14), PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin   comment='Procedure privileges';
82
83
-- Create general_log if CSV is enabled.
84
85
SET @str = IF (@@have_csv = 'YES', 'CREATE TABLE IF NOT EXISTS general_log (event_time TIMESTAMP NOT NULL, user_host MEDIUMTEXT NOT NULL, thread_id INTEGER NOT NULL, server_id INTEGER UNSIGNED NOT NULL, command_type VARCHAR(64) NOT NULL, argument MEDIUMTEXT NOT NULL) engine=CSV CHARACTER SET utf8 comment="General log"', 'SET @dummy = 0');
86
87
PREPARE stmt FROM @str;
88
EXECUTE stmt;
89
DROP PREPARE stmt;
90
91
-- Create slow_log if CSV is enabled.
92
93
SET @str = IF (@@have_csv = 'YES', 'CREATE TABLE IF NOT EXISTS slow_log (start_time TIMESTAMP NOT NULL, user_host MEDIUMTEXT NOT NULL, query_time TIME NOT NULL, lock_time TIME NOT NULL, rows_sent INTEGER NOT NULL, rows_examined INTEGER NOT NULL, db VARCHAR(512) NOT NULL, last_insert_id INTEGER NOT NULL, insert_id INTEGER NOT NULL, server_id INTEGER UNSIGNED NOT NULL, sql_text MEDIUMTEXT NOT NULL) engine=CSV CHARACTER SET utf8 comment="Slow log"', 'SET @dummy = 0');
94
95
PREPARE stmt FROM @str;
96
EXECUTE stmt;
97
DROP PREPARE stmt;
98
99
CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', name char(64) CHARACTER SET utf8 NOT NULL default '', body longblob NOT NULL, definer char(77) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', execute_at DATETIME default NULL, interval_value int(11) default NULL, interval_field ENUM('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') default NULL, created TIMESTAMP NOT NULL, modified TIMESTAMP NOT NULL, last_executed DATETIME default NULL, starts DATETIME default NULL, ends DATETIME default NULL, status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED', on_completion ENUM('DROP','PRESERVE') NOT NULL default 'DROP', sql_mode  set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') DEFAULT '' NOT NULL, comment char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', originator INTEGER UNSIGNED NOT NULL, time_zone char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db, name) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT 'Events';
100
101
102
CREATE TABLE IF NOT EXISTS ndb_binlog_index (Position BIGINT UNSIGNED NOT NULL, File VARCHAR(255) NOT NULL, epoch BIGINT UNSIGNED NOT NULL, inserts BIGINT UNSIGNED NOT NULL, updates BIGINT UNSIGNED NOT NULL, deletes BIGINT UNSIGNED NOT NULL, schemaops BIGINT UNSIGNED NOT NULL, PRIMARY KEY(epoch)) ENGINE=MYISAM;
103
1.4.1 by Marc Deslauriers
Import upstream version 5.1.61
104
# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
105
# 
106
# This program is free software; you can redistribute it and/or modify
107
# it under the terms of the GNU General Public License as published by
108
# the Free Software Foundation; version 2 of the License.
109
# 
110
# This program is distributed in the hope that it will be useful,
111
# but WITHOUT ANY WARRANTY; without even the implied warranty of
112
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
113
# GNU General Public License for more details.
114
# 
115
# You should have received a copy of the GNU General Public License
116
# along with this program; if not, write to the Free Software
117
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
118
1 by Norbert Tretkowski
Import upstream version 5.1.45
119
# This part converts any old privilege tables to privilege tables suitable
120
# for current version of MySQL
121
122
# You can safely ignore all 'Duplicate column' and 'Unknown column' errors
123
# because these just mean that your tables are already up to date.
124
# This script is safe to run even if your tables are already up to date!
125
126
# On unix, you should use the mysql_fix_privilege_tables script to execute
127
# this sql script.
128
# On windows you should do 'mysql --force mysql < mysql_fix_privilege_tables.sql'
129
130
set sql_mode='';
131
set storage_engine=MyISAM;
132
133
ALTER TABLE user add File_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;
134
135
# Detect whether or not we had the Grant_priv column
136
SET @hadGrantPriv:=0;
137
SELECT @hadGrantPriv:=1 FROM user WHERE Grant_priv LIKE '%';
138
139
ALTER TABLE user add Grant_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add References_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Index_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Alter_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;
140
ALTER TABLE host add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Index_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Alter_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;
141
ALTER TABLE db add Grant_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add References_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Index_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Alter_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;
142
143
# Fix privileges for old tables
144
UPDATE user SET Grant_priv=File_priv,References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv WHERE @hadGrantPriv = 0;
145
UPDATE db SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv WHERE @hadGrantPriv = 0;
146
UPDATE host SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv WHERE @hadGrantPriv = 0;
147
148
#
149
# The second alter changes ssl_type to new 4.0.2 format
150
# Adding columns needed by GRANT .. REQUIRE (openssl)
151
152
ALTER TABLE user
153
ADD ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci NOT NULL,
154
ADD ssl_cipher BLOB NOT NULL,
155
ADD x509_issuer BLOB NOT NULL,
156
ADD x509_subject BLOB NOT NULL;
157
ALTER TABLE user MODIFY ssl_type enum('','ANY','X509', 'SPECIFIED') NOT NULL;
158
159
#
160
# tables_priv
161
#
162
ALTER TABLE tables_priv
163
  ADD KEY Grantor (Grantor);
164
165
ALTER TABLE tables_priv
166
  MODIFY Host char(60) NOT NULL default '',
167
  MODIFY Db char(64) NOT NULL default '',
168
  MODIFY User char(16) NOT NULL default '',
169
  MODIFY Table_name char(64) NOT NULL default '',
170
  MODIFY Grantor char(77) NOT NULL default '',
171
  ENGINE=MyISAM,
172
  CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
173
174
ALTER TABLE tables_priv
175
  MODIFY Column_priv set('Select','Insert','Update','References')
176
    COLLATE utf8_general_ci DEFAULT '' NOT NULL,
177
  MODIFY Table_priv set('Select','Insert','Update','Delete','Create',
178
                        'Drop','Grant','References','Index','Alter',
1.3.1 by Norbert Tretkowski
Import upstream version 5.1.50
179
                        'Create View','Show view','Trigger')
1 by Norbert Tretkowski
Import upstream version 5.1.45
180
    COLLATE utf8_general_ci DEFAULT '' NOT NULL,
181
  COMMENT='Table privileges';
182
183
#
184
# columns_priv
185
#
186
#
187
# Name change of Type -> Column_priv from MySQL 3.22.12
188
#
189
ALTER TABLE columns_priv
190
  CHANGE Type Column_priv set('Select','Insert','Update','References')
191
    COLLATE utf8_general_ci DEFAULT '' NOT NULL;
192
193
ALTER TABLE columns_priv
194
  MODIFY Host char(60) NOT NULL default '',
195
  MODIFY Db char(64) NOT NULL default '',
196
  MODIFY User char(16) NOT NULL default '',
197
  MODIFY Table_name char(64) NOT NULL default '',
198
  MODIFY Column_name char(64) NOT NULL default '',
199
  ENGINE=MyISAM,
200
  CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin,
201
  COMMENT='Column privileges';
202
203
ALTER TABLE columns_priv
204
  MODIFY Column_priv set('Select','Insert','Update','References')
205
    COLLATE utf8_general_ci DEFAULT '' NOT NULL;
206
207
#
208
#  Add the new 'type' column to the func table.
209
#
210
211
ALTER TABLE func add type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL;
212
213
#
214
#  Change the user,db and host tables to current format
215
#
216
217
# Detect whether we had Show_db_priv
218
SET @hadShowDbPriv:=0;
219
SELECT @hadShowDbPriv:=1 FROM user WHERE Show_db_priv LIKE '%';
220
221
ALTER TABLE user
222
ADD Show_db_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_priv,
223
ADD Super_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_db_priv,
224
ADD Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Super_priv,
225
ADD Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_tmp_table_priv,
226
ADD Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Lock_tables_priv,
227
ADD Repl_slave_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Execute_priv,
228
ADD Repl_client_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Repl_slave_priv;
229
230
# Convert privileges so that users have similar privileges as before
231
232
UPDATE user SET Show_db_priv= Select_priv, Super_priv=Process_priv, Execute_priv=Process_priv, Create_tmp_table_priv='Y', Lock_tables_priv='Y', Repl_slave_priv=file_priv, Repl_client_priv=File_priv where user<>"" AND @hadShowDbPriv = 0;
233
234
235
#  Add fields that can be used to limit number of questions and connections
236
#  for some users.
237
238
ALTER TABLE user
239
ADD max_questions int(11) NOT NULL DEFAULT 0 AFTER x509_subject,
240
ADD max_updates   int(11) unsigned NOT NULL DEFAULT 0 AFTER max_questions,
241
ADD max_connections int(11) unsigned NOT NULL DEFAULT 0 AFTER max_updates;
242
243
244
#
245
#  Add Create_tmp_table_priv and Lock_tables_priv to db and host
246
#
247
248
ALTER TABLE db
249
ADD Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
250
ADD Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
251
ALTER TABLE host
252
ADD Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,
253
ADD Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL;
254
255
alter table user change max_questions max_questions int(11) unsigned DEFAULT 0  NOT NULL;
256
257
258
alter table db comment='Database privileges';
259
alter table host comment='Host privileges;  Merged with database privileges';
260
alter table user comment='Users and global privileges';
261
alter table func comment='User defined functions';
262
263
# Convert all tables to UTF-8 with binary collation
264
# and reset all char columns to correct width
265
ALTER TABLE user
266
  MODIFY Host char(60) NOT NULL default '',
267
  MODIFY User char(16) NOT NULL default '',
268
  ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
269
ALTER TABLE user
270
  MODIFY Password char(41) character set latin1 collate latin1_bin NOT NULL default '',
271
  MODIFY Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
272
  MODIFY Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
273
  MODIFY Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
274
  MODIFY Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
275
  MODIFY Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
276
  MODIFY Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
277
  MODIFY Reload_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
278
  MODIFY Shutdown_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
279
  MODIFY Process_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
280
  MODIFY File_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
281
  MODIFY Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
282
  MODIFY References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
283
  MODIFY Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
284
  MODIFY Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
285
  MODIFY Show_db_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
286
  MODIFY Super_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
287
  MODIFY Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
288
  MODIFY Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
289
  MODIFY Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
290
  MODIFY Repl_slave_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
291
  MODIFY Repl_client_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
292
  MODIFY ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci DEFAULT '' NOT NULL;
293
294
ALTER TABLE db
295
  MODIFY Host char(60) NOT NULL default '',
296
  MODIFY Db char(64) NOT NULL default '',
297
  MODIFY User char(16) NOT NULL default '',
298
  ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
299
ALTER TABLE db
300
  MODIFY  Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
301
  MODIFY  Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
302
  MODIFY  Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
303
  MODIFY  Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
304
  MODIFY  Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
305
  MODIFY  Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
306
  MODIFY  Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
307
  MODIFY  References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
308
  MODIFY  Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
309
  MODIFY  Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
310
  MODIFY  Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
311
  MODIFY  Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
312
313
ALTER TABLE host
314
  MODIFY Host char(60) NOT NULL default '',
315
  MODIFY Db char(64) NOT NULL default '',
316
  ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
317
ALTER TABLE host
318
  MODIFY Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
319
  MODIFY Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
320
  MODIFY Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
321
  MODIFY Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
322
  MODIFY Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
323
  MODIFY Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
324
  MODIFY Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
325
  MODIFY References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
326
  MODIFY Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
327
  MODIFY Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
328
  MODIFY Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
329
  MODIFY Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
330
331
ALTER TABLE func
332
  ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
333
ALTER TABLE func
334
  MODIFY type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL;
335
336
#
337
# Modify log tables.
338
#
339
340
SET @old_log_state = @@global.general_log;
341
SET GLOBAL general_log = 'OFF';
1.1.1 by Norbert Tretkowski
Import upstream version 5.1.46
342
ALTER TABLE general_log
343
  MODIFY event_time TIMESTAMP NOT NULL,
344
  MODIFY user_host MEDIUMTEXT NOT NULL,
345
  MODIFY thread_id INTEGER NOT NULL,
346
  MODIFY server_id INTEGER UNSIGNED NOT NULL,
347
  MODIFY command_type VARCHAR(64) NOT NULL,
348
  MODIFY argument MEDIUMTEXT NOT NULL;
1 by Norbert Tretkowski
Import upstream version 5.1.45
349
SET GLOBAL general_log = @old_log_state;
350
351
SET @old_log_state = @@global.slow_query_log;
352
SET GLOBAL slow_query_log = 'OFF';
1.1.1 by Norbert Tretkowski
Import upstream version 5.1.46
353
ALTER TABLE slow_log
354
  MODIFY start_time TIMESTAMP NOT NULL,
355
  MODIFY user_host MEDIUMTEXT NOT NULL,
356
  MODIFY query_time TIME NOT NULL,
357
  MODIFY lock_time TIME NOT NULL,
358
  MODIFY rows_sent INTEGER NOT NULL,
359
  MODIFY rows_examined INTEGER NOT NULL,
360
  MODIFY db VARCHAR(512) NOT NULL,
361
  MODIFY last_insert_id INTEGER NOT NULL,
362
  MODIFY insert_id INTEGER NOT NULL,
363
  MODIFY server_id INTEGER UNSIGNED NOT NULL,
364
  MODIFY sql_text MEDIUMTEXT NOT NULL;
1 by Norbert Tretkowski
Import upstream version 5.1.45
365
SET GLOBAL slow_query_log = @old_log_state;
366
367
#
368
# Detect whether we had Create_view_priv
369
#
370
SET @hadCreateViewPriv:=0;
371
SELECT @hadCreateViewPriv:=1 FROM user WHERE Create_view_priv LIKE '%';
372
373
#
374
# Create VIEWs privileges (v5.0)
375
#
376
ALTER TABLE db ADD Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Lock_tables_priv;
377
ALTER TABLE db MODIFY Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Lock_tables_priv;
378
379
ALTER TABLE host ADD Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Lock_tables_priv;
380
ALTER TABLE host MODIFY Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Lock_tables_priv;
381
382
ALTER TABLE user ADD Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Repl_client_priv;
383
ALTER TABLE user MODIFY Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Repl_client_priv;
384
385
#
386
# Show VIEWs privileges (v5.0)
387
#
388
ALTER TABLE db ADD Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;
389
ALTER TABLE db MODIFY Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;
390
391
ALTER TABLE host ADD Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;
392
ALTER TABLE host MODIFY Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;
393
394
ALTER TABLE user ADD Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;
395
ALTER TABLE user MODIFY Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;
396
397
#
398
# Assign create/show view privileges to people who have create provileges
399
#
400
UPDATE user SET Create_view_priv=Create_priv, Show_view_priv=Create_priv where user<>"" AND @hadCreateViewPriv = 0;
401
402
#
403
#
404
#
405
SET @hadCreateRoutinePriv:=0;
406
SELECT @hadCreateRoutinePriv:=1 FROM user WHERE Create_routine_priv LIKE '%';
407
408
#
409
# Create PROCEDUREs privileges (v5.0)
410
#
411
ALTER TABLE db ADD Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_view_priv;
412
ALTER TABLE db MODIFY Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_view_priv;
413
414
ALTER TABLE host ADD Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_view_priv;
415
ALTER TABLE host MODIFY Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_view_priv;
416
417
ALTER TABLE user ADD Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_view_priv;
418
ALTER TABLE user MODIFY Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_view_priv;
419
420
#
421
# Alter PROCEDUREs privileges (v5.0)
422
#
423
ALTER TABLE db ADD Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_routine_priv;
424
ALTER TABLE db MODIFY Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_routine_priv;
425
426
ALTER TABLE host ADD Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_routine_priv;
427
ALTER TABLE host MODIFY Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_routine_priv;
428
429
ALTER TABLE user ADD Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_routine_priv;
430
ALTER TABLE user MODIFY Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_routine_priv;
431
432
ALTER TABLE db ADD Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_routine_priv;
433
ALTER TABLE db MODIFY Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_routine_priv;
434
435
ALTER TABLE host ADD Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_routine_priv;
436
ALTER TABLE host MODIFY Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_routine_priv;
437
438
#
439
# Assign create/alter routine privileges to people who have create privileges
440
#
441
UPDATE user SET Create_routine_priv=Create_priv, Alter_routine_priv=Alter_priv where user<>"" AND @hadCreateRoutinePriv = 0;
442
UPDATE db SET Create_routine_priv=Create_priv, Alter_routine_priv=Alter_priv, Execute_priv=Select_priv where user<>"" AND @hadCreateRoutinePriv = 0;
443
UPDATE host SET Create_routine_priv=Create_priv, Alter_routine_priv=Alter_priv, Execute_priv=Select_priv where @hadCreateRoutinePriv = 0;
444
445
#
446
# Add max_user_connections resource limit
447
#
448
ALTER TABLE user ADD max_user_connections int(11) unsigned DEFAULT '0' NOT NULL AFTER max_connections;
449
450
#
451
# user.Create_user_priv
452
#
453
454
SET @hadCreateUserPriv:=0;
455
SELECT @hadCreateUserPriv:=1 FROM user WHERE Create_user_priv LIKE '%';
456
457
ALTER TABLE user ADD Create_user_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_routine_priv;
458
ALTER TABLE user MODIFY Create_user_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_routine_priv;
459
UPDATE user LEFT JOIN db USING (Host,User) SET Create_user_priv='Y'
460
  WHERE @hadCreateUserPriv = 0 AND
461
        (user.Grant_priv = 'Y' OR db.Grant_priv = 'Y');
462
463
#
464
# procs_priv
465
#
466
467
ALTER TABLE procs_priv
468
  ENGINE=MyISAM,
469
  CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
470
471
ALTER TABLE procs_priv
472
  MODIFY Proc_priv set('Execute','Alter Routine','Grant')
473
    COLLATE utf8_general_ci DEFAULT '' NOT NULL;
474
475
ALTER IGNORE TABLE procs_priv
476
  MODIFY Routine_name char(64)
477
    COLLATE utf8_general_ci DEFAULT '' NOT NULL;
478
479
ALTER TABLE procs_priv
480
  ADD Routine_type enum('FUNCTION','PROCEDURE')
481
    COLLATE utf8_general_ci NOT NULL AFTER Routine_name;
482
483
ALTER TABLE procs_priv
484
  MODIFY Timestamp timestamp(14) AFTER Proc_priv;
485
486
#
487
# proc
488
#
489
490
# Correct the name fields to not binary, and expand sql_data_access
491
ALTER TABLE proc MODIFY name char(64) DEFAULT '' NOT NULL,
492
                 MODIFY specific_name char(64) DEFAULT '' NOT NULL,
493
                 MODIFY sql_data_access
494
                        enum('CONTAINS_SQL',
495
                             'NO_SQL',
496
                             'READS_SQL_DATA',
497
                             'MODIFIES_SQL_DATA'
498
                            ) DEFAULT 'CONTAINS_SQL' NOT NULL,
499
                 MODIFY body longblob NOT NULL,
500
                 MODIFY returns longblob NOT NULL,
501
                 MODIFY sql_mode
502
                        set('REAL_AS_FLOAT',
503
                            'PIPES_AS_CONCAT',
504
                            'ANSI_QUOTES',
505
                            'IGNORE_SPACE',
506
                            'NOT_USED',
507
                            'ONLY_FULL_GROUP_BY',
508
                            'NO_UNSIGNED_SUBTRACTION',
509
                            'NO_DIR_IN_CREATE',
510
                            'POSTGRESQL',
511
                            'ORACLE',
512
                            'MSSQL',
513
                            'DB2',
514
                            'MAXDB',
515
                            'NO_KEY_OPTIONS',
516
                            'NO_TABLE_OPTIONS',
517
                            'NO_FIELD_OPTIONS',
518
                            'MYSQL323',
519
                            'MYSQL40',
520
                            'ANSI',
521
                            'NO_AUTO_VALUE_ON_ZERO',
522
                            'NO_BACKSLASH_ESCAPES',
523
                            'STRICT_TRANS_TABLES',
524
                            'STRICT_ALL_TABLES',
525
                            'NO_ZERO_IN_DATE',
526
                            'NO_ZERO_DATE',
527
                            'INVALID_DATES',
528
                            'ERROR_FOR_DIVISION_BY_ZERO',
529
                            'TRADITIONAL',
530
                            'NO_AUTO_CREATE_USER',
531
                            'HIGH_NOT_PRECEDENCE',
532
                            'NO_ENGINE_SUBSTITUTION',
533
                            'PAD_CHAR_TO_FULL_LENGTH'
534
                            ) DEFAULT '' NOT NULL,
535
                 DEFAULT CHARACTER SET utf8;
536
537
# Correct the character set and collation
538
ALTER TABLE proc CONVERT TO CHARACTER SET utf8;
539
# Reset some fields after the conversion
540
ALTER TABLE proc  MODIFY db
541
                         char(64) collate utf8_bin DEFAULT '' NOT NULL,
542
                  MODIFY definer
543
                         char(77) collate utf8_bin DEFAULT '' NOT NULL,
544
                  MODIFY comment
545
                         char(64) collate utf8_bin DEFAULT '' NOT NULL;
546
547
ALTER TABLE proc ADD character_set_client
548
                     char(32) collate utf8_bin DEFAULT NULL
549
                     AFTER comment;
550
ALTER TABLE proc MODIFY character_set_client
551
                        char(32) collate utf8_bin DEFAULT NULL;
552
553
SELECT CASE WHEN COUNT(*) > 0 THEN 
554
CONCAT ("WARNING: NULL values of the 'character_set_client' column ('mysql.proc' table) have been updated with a default value (", @@character_set_client, "). Please verify if necessary.")
555
ELSE NULL 
556
END 
557
AS value FROM proc WHERE character_set_client IS NULL;
558
559
UPDATE proc SET character_set_client = @@character_set_client 
560
                     WHERE character_set_client IS NULL;
561
562
ALTER TABLE proc ADD collation_connection
563
                     char(32) collate utf8_bin DEFAULT NULL
564
                     AFTER character_set_client;
565
ALTER TABLE proc MODIFY collation_connection
566
                        char(32) collate utf8_bin DEFAULT NULL;
567
568
SELECT CASE WHEN COUNT(*) > 0 THEN 
569
CONCAT ("WARNING: NULL values of the 'collation_connection' column ('mysql.proc' table) have been updated with a default value (", @@collation_connection, "). Please verify if necessary.")
570
ELSE NULL 
571
END 
572
AS value FROM proc WHERE collation_connection IS NULL;
573
574
UPDATE proc SET collation_connection = @@collation_connection
575
                     WHERE collation_connection IS NULL;
576
577
ALTER TABLE proc ADD db_collation
578
                     char(32) collate utf8_bin DEFAULT NULL
579
                     AFTER collation_connection;
580
ALTER TABLE proc MODIFY db_collation
581
                        char(32) collate utf8_bin DEFAULT NULL;
582
583
SELECT CASE WHEN COUNT(*) > 0 THEN 
584
CONCAT ("WARNING: NULL values of the 'db_collation' column ('mysql.proc' table) have been updated with default values. Please verify if necessary.")
585
ELSE NULL
586
END
587
AS value FROM proc WHERE db_collation IS NULL;
588
589
UPDATE proc AS p SET db_collation  = 
590
                     ( SELECT DEFAULT_COLLATION_NAME 
591
                       FROM INFORMATION_SCHEMA.SCHEMATA 
592
                       WHERE SCHEMA_NAME = p.db)
593
                     WHERE db_collation IS NULL;
594
595
ALTER TABLE proc ADD body_utf8 longblob DEFAULT NULL
596
                     AFTER db_collation;
597
ALTER TABLE proc MODIFY body_utf8 longblob DEFAULT NULL;
598
599
600
#
601
# EVENT privilege
602
#
603
SET @hadEventPriv := 0;
604
SELECT @hadEventPriv :=1 FROM user WHERE Event_priv LIKE '%';
605
606
ALTER TABLE user add Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL AFTER Create_user_priv;
607
ALTER TABLE user MODIFY Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL AFTER Create_user_priv;
608
609
UPDATE user SET Event_priv=Super_priv WHERE @hadEventPriv = 0;
610
611
ALTER TABLE db add Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL;
612
ALTER TABLE db MODIFY Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL;
613
614
#
615
# EVENT table
616
#
617
ALTER TABLE event DROP PRIMARY KEY;
618
ALTER TABLE event ADD PRIMARY KEY(db, name);
619
# Add sql_mode column just in case.
620
ALTER TABLE event ADD sql_mode set ('NOT_USED') AFTER on_completion;
621
# Update list of sql_mode values.
622
ALTER TABLE event MODIFY sql_mode
623
                        set('REAL_AS_FLOAT',
624
                            'PIPES_AS_CONCAT',
625
                            'ANSI_QUOTES',
626
                            'IGNORE_SPACE',
627
                            'NOT_USED',
628
                            'ONLY_FULL_GROUP_BY',
629
                            'NO_UNSIGNED_SUBTRACTION',
630
                            'NO_DIR_IN_CREATE',
631
                            'POSTGRESQL',
632
                            'ORACLE',
633
                            'MSSQL',
634
                            'DB2',
635
                            'MAXDB',
636
                            'NO_KEY_OPTIONS',
637
                            'NO_TABLE_OPTIONS',
638
                            'NO_FIELD_OPTIONS',
639
                            'MYSQL323',
640
                            'MYSQL40',
641
                            'ANSI',
642
                            'NO_AUTO_VALUE_ON_ZERO',
643
                            'NO_BACKSLASH_ESCAPES',
644
                            'STRICT_TRANS_TABLES',
645
                            'STRICT_ALL_TABLES',
646
                            'NO_ZERO_IN_DATE',
647
                            'NO_ZERO_DATE',
648
                            'INVALID_DATES',
649
                            'ERROR_FOR_DIVISION_BY_ZERO',
650
                            'TRADITIONAL',
651
                            'NO_AUTO_CREATE_USER',
652
                            'HIGH_NOT_PRECEDENCE',
653
                            'NO_ENGINE_SUBSTITUTION',
654
                            'PAD_CHAR_TO_FULL_LENGTH'
655
                            ) DEFAULT '' NOT NULL AFTER on_completion;
656
ALTER TABLE event MODIFY name char(64) CHARACTER SET utf8 NOT NULL default '';
657
658
ALTER TABLE event MODIFY COLUMN originator INT UNSIGNED NOT NULL;
659
ALTER TABLE event ADD COLUMN originator INT UNSIGNED NOT NULL AFTER comment;
660
661
ALTER TABLE event MODIFY COLUMN status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED';
662
663
ALTER TABLE event ADD COLUMN time_zone char(64) CHARACTER SET latin1
664
        NOT NULL DEFAULT 'SYSTEM' AFTER originator;
665
666
ALTER TABLE event ADD character_set_client
667
                      char(32) collate utf8_bin DEFAULT NULL
668
                      AFTER time_zone;
669
ALTER TABLE event MODIFY character_set_client
670
                         char(32) collate utf8_bin DEFAULT NULL;
671
672
ALTER TABLE event ADD collation_connection
673
                      char(32) collate utf8_bin DEFAULT NULL
674
                      AFTER character_set_client;
675
ALTER TABLE event MODIFY collation_connection
676
                         char(32) collate utf8_bin DEFAULT NULL;
677
678
ALTER TABLE event ADD db_collation
679
                      char(32) collate utf8_bin DEFAULT NULL
680
                      AFTER collation_connection;
681
ALTER TABLE event MODIFY db_collation
682
                         char(32) collate utf8_bin DEFAULT NULL;
683
684
ALTER TABLE event ADD body_utf8 longblob DEFAULT NULL
685
                      AFTER db_collation;
686
ALTER TABLE event MODIFY body_utf8 longblob DEFAULT NULL;
687
688
689
#
690
# TRIGGER privilege
691
#
692
693
SET @hadTriggerPriv := 0;
694
SELECT @hadTriggerPriv :=1 FROM user WHERE Trigger_priv LIKE '%';
695
696
ALTER TABLE user ADD Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Event_priv;
697
ALTER TABLE user MODIFY Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Event_priv;
698
699
ALTER TABLE host ADD Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
700
ALTER TABLE host MODIFY Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
701
702
ALTER TABLE db ADD Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
703
ALTER TABLE db MODIFY Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
704
705
UPDATE user SET Trigger_priv=Super_priv WHERE @hadTriggerPriv = 0;
706
707
# Activate the new, possible modified privilege tables
708
# This should not be needed, but gives us some extra testing that the above
709
# changes was correct
710
711
flush privileges;