summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorunknown <serg@serg.mylan>2003-11-25 16:08:55 +0100
committerunknown <serg@serg.mylan>2003-11-25 16:08:55 +0100
commitb9eb7a02b8fd0831414138cc0200425595dfab92 (patch)
treed17a253d80ea7403883953fefda408660c136223 /scripts
parent271502ffbf59fb47c6df173015debd5224c574e2 (diff)
downloadmariadb-git-b9eb7a02b8fd0831414138cc0200425595dfab92.tar.gz
a script that fixes anti-GRANT'ness of privilege tables.
It can appear as a result of manual modifications with INSERT/UPDATE/DELETE This script converts privilege table to the state that could be created with GRANT commands only (with the exception of the short password) This is necessary for 5.0
Diffstat (limited to 'scripts')
-rw-r--r--scripts/mysql_prepare_privilege_tables_for_5.sql53
1 files changed, 53 insertions, 0 deletions
diff --git a/scripts/mysql_prepare_privilege_tables_for_5.sql b/scripts/mysql_prepare_privilege_tables_for_5.sql
new file mode 100644
index 00000000000..a9b6d43aee0
--- /dev/null
+++ b/scripts/mysql_prepare_privilege_tables_for_5.sql
@@ -0,0 +1,53 @@
+
+use mysql;
+
+--
+-- merging `host` table and `db`
+--
+
+UPDATE IGNORE host SET Host='%' WHERE Host='';
+DELETE FROM host WHERE Host='';
+
+INSERT IGNORE INTO db (User, Host, Select_priv, Insert_priv, Update_priv,
+ Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv,
+ Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv)
+ SELECT d.User, h.Host,
+ (d.Select_priv = 'Y' || h.Select_priv = 'Y') + 1,
+ (d.Insert_priv = 'Y' || h.Select_priv = 'Y') + 1,
+ (d.Update_priv = 'Y' || h.Update_priv = 'Y') + 1,
+ (d.Delete_priv = 'Y' || h.Delete_priv = 'Y') + 1,
+ (d.Create_priv = 'Y' || h.Create_priv = 'Y') + 1,
+ (d.Drop_priv = 'Y' || h.Drop_priv = 'Y') + 1,
+ (d.Grant_priv = 'Y' || h.Grant_priv = 'Y') + 1,
+ (d.References_priv = 'Y' || h.References_priv = 'Y') + 1,
+ (d.Index_priv = 'Y' || h.Index_priv = 'Y') + 1,
+ (d.Alter_priv = 'Y' || h.Alter_priv = 'Y') + 1,
+ (d.Create_tmp_table_priv = 'Y' || h.Create_tmp_table_priv = 'Y') + 1,
+ (d.Lock_tables_priv = 'Y' || h.Lock_tables_priv = 'Y') + 1
+ FROM db d, host h WHERE d.Host = '';
+
+UPDATE IGNORE db SET Host='%' WHERE Host = '';
+DELETE FROM db WHERE Host='';
+
+TRUNCATE TABLE host;
+
+--
+-- Adding missing users to `user` table
+--
+-- note that invalid password causes the user to be skipped during the
+-- load of grand tables (at mysqld startup) thus three following inserts
+-- do not affect anything
+
+INSERT IGNORE user (User, Host, Password) SELECT User, Host, "*" FROM db;
+INSERT IGNORE user (User, Host, Password) SELECT User, Host, "*" FROM tables_priv;
+INSERT IGNORE user (User, Host, Password) SELECT User, Host, "*" FROM columns_priv;
+
+SELECT DISTINCT
+"There are user accounts with the username 'PUBLIC'. In the SQL-1999
+(or later) standard this name is reserved for PUBLIC role and can
+not be used as a valid user name. Consider renaming these accounts before
+upgrading to MySQL-5.0.
+These accounts are:" x
+FROM user WHERE user='PUBLIC';
+SELECT CONCAT(user,'@',host) FROM user WHERE user='PUBLIC';
+