mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
b9eb7a02b8
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
53 lines
2.2 KiB
SQL
53 lines
2.2 KiB
SQL
|
|
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';
|
|
|