Skip to content

Commit 132ef2e

Browse files
author
Alexander Nozdrin
committed
A backporting patch for WL#4300 (Define privileges for tablespaces).
Original revision in 6.0: ------------------------------------------------------------ revno: 2630.13.11 committer: Alexander Nozdrin <[email protected]> branch nick: 6.0-rt-wl4300 timestamp: Thu 2008-07-24 11:44:21 +0400 message: A patch for WL#4300: Define privileges for tablespaces. ------------------------------------------------------------ per-file messages: mysql-test/r/grant.result Update result file: new columm 'Create_tablespace_priv' has been added to mysql.user. mysql-test/r/ps.result Update result file: new columm 'Create_tablespace_priv' has been added to mysql.user. mysql-test/r/system_mysql_db.result Update result file: new columm 'Create_tablespace_priv' has been added to mysql.user. mysql-test/suite/falcon/r/falcon_tablespace_priv.result Test case for WL#4300. mysql-test/suite/falcon/t/falcon_tablespace_priv.test Test case for WL#4300. mysql-test/suite/ndb/r/ndb_dd_ddl.result Test case for WL#4300. mysql-test/suite/ndb/t/ndb_dd_ddl.test Test case for WL#4300. scripts/mysql_system_tables.sql New columm 'Create_tablespace_priv' has been added to mysql.user. scripts/mysql_system_tables_data.sql 'CREATE TABLESPACE' is granted by default to the root user. scripts/mysql_system_tables_fix.sql Grant 'CREATE TABLESPACE' privilege during system table upgrade if a user had SUPER privilege. sql/sql_acl.cc Added CREATE TABLESPACE privilege. sql/sql_acl.h Added CREATE TABLESPACE privilege. sql/sql_parse.cc Check global 'CREATE TABLESPACE' privilege for the following SQL statements: - CREATE | ALTER | DROP TABLESPACE - CREATE | ALTER | DROP LOGFILE GROUP sql/sql_show.cc Added CREATE TABLESPACE privilege. sql/sql_yacc.yy Added CREATE TABLESPACE privilege.
1 parent ae6d9a1 commit 132ef2e

13 files changed

Lines changed: 211 additions & 18 deletions

mysql-test/r/grant.result

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE CIPHER 'EDH-RSA-DES-CBC3
1313
GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
1414
grant delete on mysqltest.* to mysqltest_1@localhost;
1515
select * from mysql.user where user="mysqltest_1";
16-
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
17-
localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED EDH-RSA-DES-CBC3-SHA 0 0 0 0
16+
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
17+
localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED EDH-RSA-DES-CBC3-SHA 0 0 0 0
1818
show grants for mysqltest_1@localhost;
1919
Grants for mysqltest_1@localhost
2020
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA'
@@ -44,15 +44,15 @@ delete from mysql.user where user='mysqltest_1';
4444
flush privileges;
4545
grant usage on *.* to mysqltest_1@localhost with max_queries_per_hour 10;
4646
select * from mysql.user where user="mysqltest_1";
47-
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
48-
localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 10 0 0 0
47+
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
48+
localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 10 0 0 0
4949
show grants for mysqltest_1@localhost;
5050
Grants for mysqltest_1@localhost
5151
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10
5252
grant usage on *.* to mysqltest_1@localhost with max_updates_per_hour 20 max_connections_per_hour 30;
5353
select * from mysql.user where user="mysqltest_1";
54-
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
55-
localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 10 20 30 0
54+
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
55+
localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N N 10 20 30 0
5656
show grants for mysqltest_1@localhost;
5757
Grants for mysqltest_1@localhost
5858
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10 MAX_UPDATES_PER_HOUR 20 MAX_CONNECTIONS_PER_HOUR 30
@@ -483,6 +483,7 @@ Show view Tables To see views with SHOW CREATE VIEW
483483
Shutdown Server Admin To shut down the server
484484
Super Server Admin To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.
485485
Trigger Tables To use triggers
486+
Create tablespace Server Admin To create/alter/drop tablespaces
486487
Update Tables To update existing rows
487488
Usage Server Admin No privileges - allow connect only
488489
create database mysqltest;

mysql-test/r/ps.result

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1194,13 +1194,13 @@ SET @aux= "SELECT COUNT(*)
11941194
prepare my_stmt from @aux;
11951195
execute my_stmt;
11961196
COUNT(*)
1197-
39
1197+
40
11981198
execute my_stmt;
11991199
COUNT(*)
1200-
39
1200+
40
12011201
execute my_stmt;
12021202
COUNT(*)
1203-
39
1203+
40
12041204
deallocate prepare my_stmt;
12051205
drop procedure if exists p1|
12061206
drop table if exists t1|

mysql-test/r/system_mysql_db.result

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ user CREATE TABLE `user` (
110110
`Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
111111
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
112112
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
113+
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
113114
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
114115
`ssl_cipher` blob NOT NULL,
115116
`x509_issuer` blob NOT NULL,

mysql-test/suite/ndb/r/ndb_dd_ddl.result

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,3 +236,79 @@ engine ndb;
236236
ERROR HY000: Failed to drop TABLESPACE
237237
drop logfile group lg1
238238
engine ndb;
239+
240+
# -----------------------------------------------------------------
241+
# End 5.1 test
242+
# -----------------------------------------------------------------
243+
244+
# --
245+
# -- WL#4300
246+
# --
247+
GRANT CREATE TABLESPACE ON *.* TO mysqltest_u1@localhost;
248+
249+
DROP DATABASE IF EXISTS mysqltest2;
250+
CREATE DATABASE mysqltest2;
251+
GRANT ALL PRIVILEGES ON mysqltest2.* TO mysqltest_u2@localhost;
252+
253+
# -- Connection: mysqltest_u1@localhost
254+
255+
# -- Grants for mysqltest_u1@localhost:
256+
SHOW GRANTS;
257+
Grants for mysqltest_u1@localhost
258+
GRANT CREATE TABLESPACE ON *.* TO 'mysqltest_u1'@'localhost'
259+
260+
# -- Check CREATE LOGFILE GROUP...
261+
CREATE LOGFILE GROUP lg1
262+
ADD UNDOFILE 'undofile.dat'
263+
INITIAL_SIZE 1M
264+
UNDO_BUFFER_SIZE = 1M
265+
ENGINE = NDB;
266+
267+
# -- Check ALTER LOGFILE GROUP...
268+
ALTER LOGFILE GROUP lg1
269+
ADD UNDOFILE 'undofile02.dat'
270+
INITIAL_SIZE 1M
271+
ENGINE = NDB;
272+
273+
# -- Check CREATE TABLESPACE...
274+
CREATE TABLESPACE ts1
275+
ADD DATAFILE 'datafile.dat'
276+
USE LOGFILE GROUP lg1
277+
INITIAL_SIZE 1M
278+
ENGINE = NDB;
279+
280+
# -- Check ALTER TABLESPACE...
281+
ALTER TABLESPACE ts1
282+
DROP DATAFILE 'datafile.dat'
283+
INITIAL_SIZE 1M
284+
ENGINE = NDB;
285+
286+
# -- Connection: mysqltest_u2@localhost
287+
288+
# -- Grants for mysqltest_u2@localhost:
289+
SHOW GRANTS;
290+
Grants for mysqltest_u2@localhost
291+
GRANT USAGE ON *.* TO 'mysqltest_u2'@'localhost'
292+
GRANT ALL PRIVILEGES ON `mysqltest2`.* TO 'mysqltest_u2'@'localhost'
293+
CREATE TABLE t1(c INT) TABLESPACE ts1;
294+
DROP TABLE t1;
295+
296+
# -- Connection: mysqltest_u1@localhost
297+
298+
299+
# -- Check DROP TABLESPACE...
300+
DROP TABLESPACE ts1
301+
ENGINE = NDB;
302+
303+
# -- Check DROP LOGFILE GROUP...
304+
DROP LOGFILE GROUP lg1
305+
ENGINE = NDB;
306+
307+
# -- Connection: root@localhost
308+
309+
DROP USER mysqltest_u1@localhost;
310+
DROP USER mysqltest_u2@localhost;
311+
312+
# -----------------------------------------------------------------
313+
# End 6.0 test
314+
# -----------------------------------------------------------------

mysql-test/suite/ndb/t/ndb_dd_ddl.test

Lines changed: 100 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,4 +367,103 @@ engine ndb;
367367
--exec rm $MYSQLTEST_VARDIR/tmp/t1.frm
368368

369369

370-
# End 5.1 test
370+
--echo
371+
--echo # -----------------------------------------------------------------
372+
--echo # End 5.1 test
373+
--echo # -----------------------------------------------------------------
374+
375+
--echo
376+
--echo # --
377+
--echo # -- WL#4300: Define privileges for tablespaces.
378+
--echo # --
379+
380+
GRANT CREATE TABLESPACE ON *.* TO mysqltest_u1@localhost;
381+
382+
--echo
383+
384+
--disable_warnings
385+
DROP DATABASE IF EXISTS mysqltest2;
386+
--enable_warnings
387+
388+
CREATE DATABASE mysqltest2;
389+
390+
GRANT ALL PRIVILEGES ON mysqltest2.* TO mysqltest_u2@localhost;
391+
392+
--echo
393+
--echo # -- Connection: mysqltest_u1@localhost
394+
--echo
395+
--connect(con1, localhost, mysqltest_u1,,)
396+
397+
--echo # -- Grants for mysqltest_u1@localhost:
398+
SHOW GRANTS;
399+
400+
--echo
401+
--echo # -- Check CREATE LOGFILE GROUP...
402+
CREATE LOGFILE GROUP lg1
403+
ADD UNDOFILE 'undofile.dat'
404+
INITIAL_SIZE 1M
405+
UNDO_BUFFER_SIZE = 1M
406+
ENGINE = NDB;
407+
408+
--echo
409+
--echo # -- Check ALTER LOGFILE GROUP...
410+
ALTER LOGFILE GROUP lg1
411+
ADD UNDOFILE 'undofile02.dat'
412+
INITIAL_SIZE 1M
413+
ENGINE = NDB;
414+
415+
--echo
416+
--echo # -- Check CREATE TABLESPACE...
417+
CREATE TABLESPACE ts1
418+
ADD DATAFILE 'datafile.dat'
419+
USE LOGFILE GROUP lg1
420+
INITIAL_SIZE 1M
421+
ENGINE = NDB;
422+
423+
--echo
424+
--echo # -- Check ALTER TABLESPACE...
425+
ALTER TABLESPACE ts1
426+
DROP DATAFILE 'datafile.dat'
427+
INITIAL_SIZE 1M
428+
ENGINE = NDB;
429+
430+
--echo
431+
--echo # -- Connection: mysqltest_u2@localhost
432+
--echo
433+
--connect(con2, localhost, mysqltest_u2,,mysqltest2)
434+
435+
--echo # -- Grants for mysqltest_u2@localhost:
436+
SHOW GRANTS;
437+
438+
CREATE TABLE t1(c INT) TABLESPACE ts1;
439+
440+
DROP TABLE t1;
441+
442+
--echo
443+
--echo # -- Connection: mysqltest_u1@localhost
444+
--echo
445+
--connection con1
446+
447+
--echo
448+
--echo # -- Check DROP TABLESPACE...
449+
DROP TABLESPACE ts1
450+
ENGINE = NDB;
451+
452+
--echo
453+
--echo # -- Check DROP LOGFILE GROUP...
454+
DROP LOGFILE GROUP lg1
455+
ENGINE = NDB;
456+
457+
--echo
458+
--echo # -- Connection: root@localhost
459+
--echo
460+
--connection default
461+
--disconnect con1
462+
463+
DROP USER mysqltest_u1@localhost;
464+
DROP USER mysqltest_u2@localhost;
465+
466+
--echo
467+
--echo # -----------------------------------------------------------------
468+
--echo # End 6.0 test
469+
--echo # -----------------------------------------------------------------

scripts/mysql_system_tables.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ set @had_db_table= @@warning_count != 0;
1313
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';
1414

1515

16-
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';
16+
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, Create_tablespace_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';
1717

1818
-- Remember for later if user table already existed
1919
set @had_user_table= @@warning_count != 0;

scripts/mysql_system_tables_data.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ DROP TABLE tmp_db;
2121
-- from local machine if "users" table didn't exist before
2222
CREATE TEMPORARY TABLE tmp_user LIKE user;
2323
set @current_hostname= @@hostname;
24-
INSERT INTO tmp_user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
25-
REPLACE INTO tmp_user SELECT @current_hostname,'root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0 FROM dual WHERE LOWER( @current_hostname) != 'localhost';
26-
REPLACE INTO tmp_user VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
24+
INSERT INTO tmp_user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
25+
REPLACE INTO tmp_user SELECT @current_hostname,'root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0 FROM dual WHERE LOWER( @current_hostname) != 'localhost';
26+
REPLACE INTO tmp_user VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
2727
INSERT INTO tmp_user (host,user) VALUES ('localhost','');
2828
INSERT INTO tmp_user (host,user) SELECT @current_hostname,'' FROM dual WHERE LOWER(@current_hostname ) != 'localhost';
2929
INSERT INTO user SELECT * FROM tmp_user WHERE @had_user_table=0;

scripts/mysql_system_tables_fix.sql

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,18 @@ ALTER TABLE tables_priv MODIFY Table_priv set('Select','Insert','Update','Delete
540540

541541
UPDATE user SET Trigger_priv=Super_priv WHERE @hadTriggerPriv = 0;
542542

543+
#
544+
# user.Create_tablespace_priv
545+
#
546+
547+
SET @hadCreateTablespacePriv := 0;
548+
SELECT @hadCreateTablespacePriv :=1 FROM user WHERE Create_tablespace_priv LIKE '%';
549+
550+
ALTER TABLE user ADD Create_tablespace_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Trigger_priv;
551+
ALTER TABLE user MODIFY Create_tablespace_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Trigger_priv;
552+
553+
UPDATE user SET Create_tablespace_priv = Super_priv WHERE @hadCreateTablespacePriv = 0;
554+
543555
# Activate the new, possible modified privilege tables
544556
# This should not be needed, but gives us some extra testing that the above
545557
# changes was correct

0 commit comments

Comments
 (0)