home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / xampp-win32-1.6.7-installer.exe / mysql / scripts / mysql_fix_privilege_tables_sql.c < prev    next >
Text File  |  2008-04-17  |  34KB  |  474 lines

  1. const char* mysql_fix_privilege_tables={
  2. "--\n "
  3. "-- The system tables of MySQL Server\n "
  4. "--\n "
  5. "\n "
  6. "set storage_engine=myisam;\n "
  7. "\n "
  8. "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"
  9. " 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 "
  10. "'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, PRIMARY KEY Host (Host,Db,User), KEY User (User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Dat"
  11. "abase privileges';\n "
  12. "\n "
  13. "-- Remember for later if db table already existed\n "
  14. "set @had_db_table= @@warning_count != 0;\n "
  15. "\n "
  16. "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 ut"
  17. "f8_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','"
  18. "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, PRIMARY KEY Host (Host,Db) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Host privileges;  Merged with database privileges';\n "
  19. "\n "
  20. "\n "
  21. "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'"
  22. ") 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') COL"
  23. "LATE 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','"
  24. "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 NUL"
  25. "L, Create_user_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 C"
  26. "HARACTER SET utf8 COLLATE utf8_bin comment='Users and global privileges';\n "
  27. "\n "
  28. "-- Remember for later if user table already existed\n "
  29. "set @had_user_table= @@warning_count != 0;\n "
  30. "\n "
  31. "\n "
  32. "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';\n "
  33. "\n "
  34. "\n "
  35. "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') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') CO"
  36. "LLATE 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';\n "
  37. "\n "
  38. "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 p"
  39. "rivileges';\n "
  40. "\n "
  41. "\n "
  42. "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';\n "
  43. "\n "
  44. "\n "
  45. "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';\n "
  46. "\n "
  47. "\n "
  48. "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';\n "
  49. "\n "
  50. "\n "
  51. "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';\n "
  52. "\n "
  53. "\n "
  54. "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';\n "
  55. "\n "
  56. "\n "
  57. "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';\n "
  58. "\n "
  59. "\n "
  60. "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';\n "
  61. "\n "
  62. "\n "
  63. "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';\n "
  64. "\n "
  65. "\n "
  66. "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';\n "
  67. "\n "
  68. "\n "
  69. "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"
  70. "  blob NOT NULL, returns char(64) 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_BACKSLAS"
  71. "H_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' ) DEFAULT '' NOT NULL, comment char(64) collate utf8_bin DEFAULT '' NOT NULL, PRIMARY KEY (db,name,type) ) engine=MyISAM character set utf8 comment='Stored Procedures';\n "
  72. "\n "
  73. "\n "
  74. "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) binary 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=MyI"
  75. "SAM CHARACTER SET utf8 COLLATE utf8_bin   comment='Procedure privileges';\n "
  76. "\n "
  77. "# This part converts any old privilege tables to privilege tables suitable\n "
  78. "# for current version of MySQL\n "
  79. "\n "
  80. "# You can safely ignore all 'Duplicate column' and 'Unknown column' errors\n "
  81. "# because these just mean that your tables are already up to date.\n "
  82. "# This script is safe to run even if your tables are already up to date!\n "
  83. "\n "
  84. "# On unix, you should use the mysql_fix_privilege_tables script to execute\n "
  85. "# this sql script.\n "
  86. "# On windows you should do 'mysql --force mysql < mysql_fix_privilege_tables.sql'\n "
  87. "\n "
  88. "set sql_mode='';\n "
  89. "set storage_engine=MyISAM;\n "
  90. "\n "
  91. "ALTER TABLE user add File_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;\n "
  92. "\n "
  93. "# Detect whether or not we had the Grant_priv column\n "
  94. "SET @hadGrantPriv:=0;\n "
  95. "SELECT @hadGrantPriv:=1 FROM user WHERE Grant_priv LIKE '%';\n "
  96. "\n "
  97. "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;\n "
  98. "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;\n "
  99. "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;\n "
  100. "\n "
  101. "# Fix privileges for old tables\n "
  102. "UPDATE user SET Grant_priv=File_priv,References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv WHERE @hadGrantPriv = 0;\n "
  103. "UPDATE db SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv WHERE @hadGrantPriv = 0;\n "
  104. "UPDATE host SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv WHERE @hadGrantPriv = 0;\n "
  105. "\n "
  106. "#\n "
  107. "# The second alter changes ssl_type to new 4.0.2 format\n "
  108. "# Adding columns needed by GRANT .. REQUIRE (openssl)\n "
  109. "\n "
  110. "ALTER TABLE user\n "
  111. "ADD ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci NOT NULL,\n "
  112. "ADD ssl_cipher BLOB NOT NULL,\n "
  113. "ADD x509_issuer BLOB NOT NULL,\n "
  114. "ADD x509_subject BLOB NOT NULL;\n "
  115. "ALTER TABLE user MODIFY ssl_type enum('','ANY','X509', 'SPECIFIED') NOT NULL;\n "
  116. "\n "
  117. "#\n "
  118. "# tables_priv\n "
  119. "#\n "
  120. "\n "
  121. "ALTER TABLE tables_priv\n "
  122. "  ADD KEY Grantor (Grantor);\n "
  123. "\n "
  124. "ALTER TABLE tables_priv\n "
  125. "  MODIFY Host char(60) NOT NULL default '',\n "
  126. "  MODIFY Db char(64) NOT NULL default '',\n "
  127. "  MODIFY User char(16) NOT NULL default '',\n "
  128. "  MODIFY Table_name char(64) NOT NULL default '',\n "
  129. "  MODIFY Grantor char(77) NOT NULL default '',\n "
  130. "  ENGINE=MyISAM,\n "
  131. "  CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;\n "
  132. "\n "
  133. "ALTER TABLE tables_priv\n "
  134. "  MODIFY Column_priv set('Select','Insert','Update','References')\n "
  135. "    COLLATE utf8_general_ci DEFAULT '' NOT NULL,\n "
  136. "  MODIFY Table_priv set('Select','Insert','Update','Delete','Create',\n "
  137. "                        'Drop','Grant','References','Index','Alter',\n "
  138. "                        'Create View','Show view')\n "
  139. "    COLLATE utf8_general_ci DEFAULT '' NOT NULL,\n "
  140. "  COMMENT='Table privileges';\n "
  141. "\n "
  142. "#\n "
  143. "# columns_priv\n "
  144. "#\n "
  145. "\n "
  146. "# Name change of Type -> Column_priv from MySQL 3.22.12\n "
  147. "ALTER TABLE columns_priv\n "
  148. "  CHANGE Type Column_priv set('Select','Insert','Update','References')\n "
  149. "    COLLATE utf8_general_ci DEFAULT '' NOT NULL;\n "
  150. "\n "
  151. "ALTER TABLE columns_priv\n "
  152. "  MODIFY Host char(60) NOT NULL default '',\n "
  153. "  MODIFY Db char(64) NOT NULL default '',\n "
  154. "  MODIFY User char(16) NOT NULL default '',\n "
  155. "  MODIFY Table_name char(64) NOT NULL default '',\n "
  156. "  MODIFY Column_name char(64) NOT NULL default '',\n "
  157. "  ENGINE=MyISAM,\n "
  158. "  CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin,\n "
  159. "  COMMENT='Column privileges';\n "
  160. "\n "
  161. "ALTER TABLE columns_priv\n "
  162. "  MODIFY Column_priv set('Select','Insert','Update','References')\n "
  163. "    COLLATE utf8_general_ci DEFAULT '' NOT NULL;\n "
  164. "\n "
  165. "#\n "
  166. "#  Add the new 'type' column to the func table.\n "
  167. "#\n "
  168. "\n "
  169. "ALTER TABLE func add type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL;\n "
  170. "\n "
  171. "#\n "
  172. "#  Change the user,db and host tables to current format\n "
  173. "#\n "
  174. "\n "
  175. "# Detect whether we had Show_db_priv\n "
  176. "SET @hadShowDbPriv:=0;\n "
  177. "SELECT @hadShowDbPriv:=1 FROM user WHERE Show_db_priv LIKE '%';\n "
  178. "\n "
  179. "ALTER TABLE user\n "
  180. "ADD Show_db_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_priv,\n "
  181. "ADD Super_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_db_priv,\n "
  182. "ADD Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Super_priv,\n "
  183. "ADD Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_tmp_table_priv,\n "
  184. "ADD Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Lock_tables_priv,\n "
  185. "ADD Repl_slave_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Execute_priv,\n "
  186. "ADD Repl_client_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Repl_slave_priv;\n "
  187. "\n "
  188. "# Convert privileges so that users have similar privileges as before\n "
  189. "\n "
  190. "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;\n "
  191. "\n "
  192. "\n "
  193. "#  Add fields that can be used to limit number of questions and connections\n "
  194. "#  for some users.\n "
  195. "\n "
  196. "ALTER TABLE user\n "
  197. "ADD max_questions int(11) NOT NULL DEFAULT 0 AFTER x509_subject,\n "
  198. "ADD max_updates   int(11) unsigned NOT NULL DEFAULT 0 AFTER max_questions,\n "
  199. "ADD max_connections int(11) unsigned NOT NULL DEFAULT 0 AFTER max_updates;\n "
  200. "\n "
  201. "\n "
  202. "#\n "
  203. "#  Add Create_tmp_table_priv and Lock_tables_priv to db and host\n "
  204. "#\n "
  205. "\n "
  206. "ALTER TABLE db\n "
  207. "ADD Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  208. "ADD Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;\n "
  209. "ALTER TABLE host\n "
  210. "ADD Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  211. "ADD Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;\n "
  212. "\n "
  213. "alter table user change max_questions max_questions int(11) unsigned DEFAULT 0  NOT NULL;\n "
  214. "\n "
  215. "\n "
  216. "alter table db comment='Database privileges';\n "
  217. "alter table host comment='Host privileges;  Merged with database privileges';\n "
  218. "alter table user comment='Users and global privileges';\n "
  219. "alter table func comment='User defined functions';\n "
  220. "\n "
  221. "# Convert all tables to UTF-8 with binary collation\n "
  222. "# and reset all char columns to correct width\n "
  223. "ALTER TABLE user\n "
  224. "  MODIFY Host char(60) NOT NULL default '',\n "
  225. "  MODIFY User char(16) NOT NULL default '',\n "
  226. "  ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;\n "
  227. "ALTER TABLE user\n "
  228. "  MODIFY Password char(41) character set latin1 collate latin1_bin NOT NULL default '',\n "
  229. "  MODIFY Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  230. "  MODIFY Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  231. "  MODIFY Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  232. "  MODIFY Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  233. "  MODIFY Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  234. "  MODIFY Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  235. "  MODIFY Reload_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  236. "  MODIFY Shutdown_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  237. "  MODIFY Process_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  238. "  MODIFY File_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  239. "  MODIFY Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  240. "  MODIFY References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  241. "  MODIFY Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  242. "  MODIFY Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  243. "  MODIFY Show_db_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  244. "  MODIFY Super_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  245. "  MODIFY Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  246. "  MODIFY Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  247. "  MODIFY Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  248. "  MODIFY Repl_slave_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  249. "  MODIFY Repl_client_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  250. "  MODIFY ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci DEFAULT '' NOT NULL;\n "
  251. "\n "
  252. "ALTER TABLE db\n "
  253. "  MODIFY Host char(60) NOT NULL default '',\n "
  254. "  MODIFY Db char(64) NOT NULL default '',\n "
  255. "  MODIFY User char(16) NOT NULL default '',\n "
  256. "  ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;\n "
  257. "ALTER TABLE db\n "
  258. "  MODIFY  Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  259. "  MODIFY  Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  260. "  MODIFY  Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  261. "  MODIFY  Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  262. "  MODIFY  Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  263. "  MODIFY  Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  264. "  MODIFY  Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  265. "  MODIFY  References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  266. "  MODIFY  Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  267. "  MODIFY  Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  268. "  MODIFY  Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  269. "  MODIFY  Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;\n "
  270. "\n "
  271. "ALTER TABLE host\n "
  272. "  MODIFY Host char(60) NOT NULL default '',\n "
  273. "  MODIFY Db char(64) NOT NULL default '',\n "
  274. "  ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;\n "
  275. "ALTER TABLE host\n "
  276. "  MODIFY Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  277. "  MODIFY Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  278. "  MODIFY Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  279. "  MODIFY Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  280. "  MODIFY Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  281. "  MODIFY Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  282. "  MODIFY Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  283. "  MODIFY References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  284. "  MODIFY Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  285. "  MODIFY Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  286. "  MODIFY Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,\n "
  287. "  MODIFY Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;\n "
  288. "\n "
  289. "ALTER TABLE func\n "
  290. "  ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;\n "
  291. "ALTER TABLE func\n "
  292. "  MODIFY type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL;\n "
  293. "\n "
  294. "#\n "
  295. "# Detect whether we had Create_view_priv\n "
  296. "#\n "
  297. "SET @hadCreateViewPriv:=0;\n "
  298. "SELECT @hadCreateViewPriv:=1 FROM user WHERE Create_view_priv LIKE '%';\n "
  299. "\n "
  300. "#\n "
  301. "# Create VIEWs privileges (v5.0)\n "
  302. "#\n "
  303. "ALTER TABLE db ADD Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Lock_tables_priv;\n "
  304. "ALTER TABLE db MODIFY Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Lock_tables_priv;\n "
  305. "\n "
  306. "ALTER TABLE host ADD Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Lock_tables_priv;\n "
  307. "ALTER TABLE host MODIFY Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Lock_tables_priv;\n "
  308. "\n "
  309. "ALTER TABLE user ADD Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Repl_client_priv;\n "
  310. "ALTER TABLE user MODIFY Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Repl_client_priv;\n "
  311. "\n "
  312. "#\n "
  313. "# Show VIEWs privileges (v5.0)\n "
  314. "#\n "
  315. "ALTER TABLE db ADD Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;\n "
  316. "ALTER TABLE db MODIFY Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;\n "
  317. "\n "
  318. "ALTER TABLE host ADD Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;\n "
  319. "ALTER TABLE host MODIFY Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;\n "
  320. "\n "
  321. "ALTER TABLE user ADD Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;\n "
  322. "ALTER TABLE user MODIFY Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;\n "
  323. "\n "
  324. "#\n "
  325. "# Assign create/show view privileges to people who have create provileges\n "
  326. "#\n "
  327. "UPDATE user SET Create_view_priv=Create_priv, Show_view_priv=Create_priv where user<>\"\" AND @hadCreateViewPriv = 0;\n "
  328. "\n "
  329. "#\n "
  330. "#\n "
  331. "#\n "
  332. "SET @hadCreateRoutinePriv:=0;\n "
  333. "SELECT @hadCreateRoutinePriv:=1 FROM user WHERE Create_routine_priv LIKE '%';\n "
  334. "\n "
  335. "#\n "
  336. "# Create PROCEDUREs privileges (v5.0)\n "
  337. "#\n "
  338. "ALTER TABLE db ADD Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_view_priv;\n "
  339. "ALTER TABLE db MODIFY Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_view_priv;\n "
  340. "\n "
  341. "ALTER TABLE host ADD Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_view_priv;\n "
  342. "ALTER TABLE host MODIFY Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_view_priv;\n "
  343. "\n "
  344. "ALTER TABLE user ADD Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_view_priv;\n "
  345. "ALTER TABLE user MODIFY Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Show_view_priv;\n "
  346. "\n "
  347. "#\n "
  348. "# Alter PROCEDUREs privileges (v5.0)\n "
  349. "#\n "
  350. "ALTER TABLE db ADD Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_routine_priv;\n "
  351. "ALTER TABLE db MODIFY Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_routine_priv;\n "
  352. "\n "
  353. "ALTER TABLE host ADD Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_routine_priv;\n "
  354. "ALTER TABLE host MODIFY Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_routine_priv;\n "
  355. "\n "
  356. "ALTER TABLE user ADD Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_routine_priv;\n "
  357. "ALTER TABLE user MODIFY Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_routine_priv;\n "
  358. "\n "
  359. "ALTER TABLE db ADD Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_routine_priv;\n "
  360. "ALTER TABLE db MODIFY Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_routine_priv;\n "
  361. "\n "
  362. "ALTER TABLE host ADD Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_routine_priv;\n "
  363. "ALTER TABLE host MODIFY Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_routine_priv;\n "
  364. "\n "
  365. "#\n "
  366. "# Assign create/alter routine privileges to people who have create privileges\n "
  367. "#\n "
  368. "UPDATE user SET Create_routine_priv=Create_priv, Alter_routine_priv=Alter_priv where user<>\"\" AND @hadCreateRoutinePriv = 0;\n "
  369. "UPDATE db SET Create_routine_priv=Create_priv, Alter_routine_priv=Alter_priv, Execute_priv=Select_priv where user<>\"\" AND @hadCreateRoutinePriv = 0;\n "
  370. "UPDATE host SET Create_routine_priv=Create_priv, Alter_routine_priv=Alter_priv, Execute_priv=Select_priv where @hadCreateRoutinePriv = 0;\n "
  371. "\n "
  372. "#\n "
  373. "# Add max_user_connections resource limit\n "
  374. "#\n "
  375. "ALTER TABLE user ADD max_user_connections int(11) unsigned DEFAULT '0' NOT NULL AFTER max_connections;\n "
  376. "\n "
  377. "#\n "
  378. "# user.Create_user_priv\n "
  379. "#\n "
  380. "\n "
  381. "SET @hadCreateUserPriv:=0;\n "
  382. "SELECT @hadCreateUserPriv:=1 FROM user WHERE Create_user_priv LIKE '%';\n "
  383. "\n "
  384. "ALTER TABLE user ADD Create_user_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_routine_priv;\n "
  385. "ALTER TABLE user MODIFY Create_user_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Alter_routine_priv;\n "
  386. "UPDATE user LEFT JOIN db USING (Host,User) SET Create_user_priv='Y'\n "
  387. "  WHERE @hadCreateUserPriv = 0 AND\n "
  388. "        (user.Grant_priv = 'Y' OR db.Grant_priv = 'Y');\n "
  389. "\n "
  390. "#\n "
  391. "# procs_priv\n "
  392. "#\n "
  393. "\n "
  394. "ALTER TABLE procs_priv\n "
  395. "  ENGINE=MyISAM,\n "
  396. "  CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;\n "
  397. "\n "
  398. "ALTER TABLE procs_priv\n "
  399. "  MODIFY Proc_priv set('Execute','Alter Routine','Grant')\n "
  400. "    COLLATE utf8_general_ci DEFAULT '' NOT NULL;\n "
  401. "\n "
  402. "ALTER TABLE procs_priv\n "
  403. "  ADD Routine_type enum('FUNCTION','PROCEDURE')\n "
  404. "    COLLATE utf8_general_ci NOT NULL AFTER Routine_name;\n "
  405. "\n "
  406. "ALTER TABLE procs_priv\n "
  407. "  MODIFY Timestamp timestamp(14) AFTER Proc_priv;\n "
  408. "\n "
  409. "#\n "
  410. "# proc\n "
  411. "#\n "
  412. "\n "
  413. "# Correct the name fields to not binary, and expand sql_data_access\n "
  414. "ALTER TABLE proc MODIFY name char(64) DEFAULT '' NOT NULL,\n "
  415. "                 MODIFY specific_name char(64) DEFAULT '' NOT NULL,\n "
  416. "                 MODIFY sql_data_access\n "
  417. "                        enum('CONTAINS_SQL',\n "
  418. "                             'NO_SQL',\n "
  419. "                             'READS_SQL_DATA',\n "
  420. "                             'MODIFIES_SQL_DATA'\n "
  421. "                            ) DEFAULT 'CONTAINS_SQL' NOT NULL,\n "
  422. "                 MODIFY body longblob DEFAULT '' NOT NULL,\n "
  423. "                 MODIFY sql_mode\n "
  424. "                        set('REAL_AS_FLOAT',\n "
  425. "                            'PIPES_AS_CONCAT',\n "
  426. "                            'ANSI_QUOTES',\n "
  427. "                            'IGNORE_SPACE',\n "
  428. "                            'NOT_USED',\n "
  429. "                            'ONLY_FULL_GROUP_BY',\n "
  430. "                            'NO_UNSIGNED_SUBTRACTION',\n "
  431. "                            'NO_DIR_IN_CREATE',\n "
  432. "                            'POSTGRESQL',\n "
  433. "                            'ORACLE',\n "
  434. "                            'MSSQL',\n "
  435. "                            'DB2',\n "
  436. "                            'MAXDB',\n "
  437. "                            'NO_KEY_OPTIONS',\n "
  438. "                            'NO_TABLE_OPTIONS',\n "
  439. "                            'NO_FIELD_OPTIONS',\n "
  440. "                            'MYSQL323',\n "
  441. "                            'MYSQL40',\n "
  442. "                            'ANSI',\n "
  443. "                            'NO_AUTO_VALUE_ON_ZERO',\n "
  444. "                            'NO_BACKSLASH_ESCAPES',\n "
  445. "                            'STRICT_TRANS_TABLES',\n "
  446. "                            'STRICT_ALL_TABLES',\n "
  447. "                            'NO_ZERO_IN_DATE',\n "
  448. "                            'NO_ZERO_DATE',\n "
  449. "                            'INVALID_DATES',\n "
  450. "                            'ERROR_FOR_DIVISION_BY_ZERO',\n "
  451. "                            'TRADITIONAL',\n "
  452. "                            'NO_AUTO_CREATE_USER',\n "
  453. "                            'HIGH_NOT_PRECEDENCE'\n "
  454. "                            ) DEFAULT '' NOT NULL,\n "
  455. "                 DEFAULT CHARACTER SET utf8;\n "
  456. "\n "
  457. "# Correct the character set and collation\n "
  458. "ALTER TABLE proc CONVERT TO CHARACTER SET utf8;\n "
  459. "# Reset some fields after the conversion\n "
  460. "ALTER TABLE proc  MODIFY db\n "
  461. "                         char(64) collate utf8_bin DEFAULT '' NOT NULL,\n "
  462. "                  MODIFY definer\n "
  463. "                         char(77) collate utf8_bin DEFAULT '' NOT NULL,\n "
  464. "                  MODIFY comment\n "
  465. "                         char(64) collate utf8_bin DEFAULT '' NOT NULL;\n "
  466. "\n "
  467. "# Activate the new, possible modified privilege tables\n "
  468. "# This should not be needed, but gives us some extra testing that the above\n "
  469. "# changes was correct\n "
  470. "\n "
  471. "flush privileges;\n "
  472. "\
  473. "};
  474.