给定以<string>开头的所有数据库授予权限的MySql命令

6
如果一个项目需要多个以相同 <string> 开头的 mySql 数据库,并且希望在所有这些数据库上授予用户相同的权限,最优雅的方式是什么?
例如:
<string>_db_1
<string>_db_2
<string>_db_3
...
<string>_db_n

GRANT <privileges> ON <database> . * TO 'user'@'localhost';

似乎没有办法仅使用SQL完成此操作。不过使用任何编程语言都很容易。只需循环查询mysql.db即可。 - Ildar Akhmetov
在这里查看答案:https://dev59.com/L2025IYBdhLWcg3weF2S#5989300 - E. Körner
1个回答

2

以下是如何尝试:

mysql> create user 'alex'@'localhost' identified by 'xxxxxxxxxxxx';
查询 OK,0 行受到影响(0.00 秒)

mysql> grant create,select,insert,update,delete on `somestring_db_%`.* to 'alex'@'localhost';
查询 OK,0 行受到影响(0.00 秒)

mysql> flush privileges;
查询 OK,0 行受到影响(0.00 秒)

mysql> \q
再见

[root@test ~]# mysql -u alex -p
输入密码:
欢迎来到 MySQL 监视器。命令以 ; 或 \g 结尾。
您的 MySQL 连接 ID 为 7
服务器版本:5.7.28 MySQL Community Server (GPL)
....
...
..
键入 'help;' 或 '\h' 获取帮助。键入 '\c' 来清除当前输入语句。

您正在通过 Unix 套接字强制执行 SSL 连接。请考虑关闭 SSL,因为它不会使通过 Unix 套接字进行的连接更安全。

mysql> show grants;
+-------------------------------------------------------------------------------------------+
| alex@localhost 的授权 |
+-------------------------------------------------------------------------------------------+
| GRANT USAGE ON . TO 'alex'@'localhost' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON somestring_db_%.* TO 'alex'@'localhost' |
+-------------------------------------------------------------------------------------------+
共 2 行 (0.00 秒)

mysql> create database somestring_db_1;
查询 OK,1 行受影响 (0.00 秒)

mysql> create database somestring_db_2;
查询 OK,1 行受影响 (0.00 秒)

mysql> create database somestring_db_3;
查询 OK,1 行受影响 (0.00 秒)

mysql> use somestring_db_1;
数据库已更改
mysql> create table test ( id int not null,name varchar(10) not null );
查询 OK,0 行受影响 (0.50 秒)

mysql> insert into test values (1,'Hey'),(2,'there!'),(3,'It Works!!');
查询 OK,3 行受影响 (0.18 秒)
记录: 3 重复: 0 警告: 0

mysql> select * from test;
+----+------------+
| id | name |
+----+------------+
| 1 | Hey |
| 2 | there! |
| 3 | It Works!! |
+----+------------+
共 3 行 (0.01 秒)

mysql> delete from test;
查询 OK,3 行受影响 (0.25 秒)

mysql> select * from test;
空集 (0.00 秒)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接