Mysql
對除一個 mysql 之外的所有數據庫授予選擇權限
我在 MS Windows 2008R2 下
test_user
創建了一個名為的使用者MySQL 5.5.17
,我想授予該使用者對除 MySQL 數據庫之外的所有數據庫的選擇權限,注意我在這個實例中有大約 200 個數據庫。編輯:
編輯2:
執行以下查詢的輸出:
SELECT CONCAT("GRANT SELECT ON ",SCHEMA_NAME,".* TO 'test_user'@'localhost';") FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT LIKE 'mysql';
由於您有 200 個數據庫並且您不想一一授予。最快的方法是
GRANT SELECT ON *.* TO 'test_user'@'localhost'; FLUSH PRIVILEGES;
然後只需撤銷 mysql db 中的權限
REVOKE SELECT ON mysql.* FROM 'test_user'@'localhost' ; FLUSH PRIVILEGES;
但是當我在 mysql.* 上選擇性地 GRANT 然後 REVOKE 時。然後它正在工作
user@ubuntu:~$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 150 Server version: 5.5.41-0ubuntu0.12.04.1 (Ubuntu) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE USER 'mysqlrockstar'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> SHOW GRANTS FOR 'mysqlrockstar'@'localhost'; +---------------------------------------------------+ | Grants for mysqlrockstar@localhost | +---------------------------------------------------+ | GRANT USAGE ON *.* TO 'mysqlrockstar'@'localhost' | +---------------------------------------------------+ 1 row in set (0.00 sec) mysql> GRANT SELECT ON mysql.* TO 'mysqlrockstar'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> exit; Bye user@ubuntu:~$ mysql -u mysqlrockstar Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 151 Server version: 5.5.41-0ubuntu0.12.04.1 (Ubuntu) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.06 sec) mysql> exit; Bye user@ubuntu:~$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 152 Server version: 5.5.41-0ubuntu0.12.04.1 (Ubuntu) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> REVOKE SELECT ON mysql.* FROM 'mysqlrockstar'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> exit; Bye user@ubuntu:~$ mysql -u mysqlrockstar Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 153 Server version: 5.5.41-0ubuntu0.12.04.1 (Ubuntu) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | +--------------------+ 1 row in set (0.00 sec) mysql> use mysql; ERROR 1044 (42000): Access denied for user 'mysqlrockstar'@'localhost' to database 'mysql'