MySql 授予对所有以 <string> 开头的数据库的权限

Ale*_*der 5 mysql database

如果一个项目需要多个以相同开头的 mySql 数据库,<string>并且希望授予用户对所有这些数据库的相同权限,那么最优雅的方法是什么?

例子:

<string>_db_1
<string>_db_2
<string>_db_3
...
<string>_db_n

GRANT <privileges> ON <database> . * TO 'user'@'localhost';
Run Code Online (Sandbox Code Playgroud)

Jay*_*aya 2

您可以尝试以下方法:

mysql> 创建由 'xxxxxxxxxxxx' 标识的用户 'alex'@'localhost';
查询正常,0 行受影响(0.00 秒)

mysql> 将 `somestring_db_%`.* 上的创建、选择、插入、更新、删除授予 'alex'@'localhost';
查询正常,0 行受影响(0.00 秒)

mysql> 刷新权限;
查询正常,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> 显示补助金;
+------------------------------------------------ ------------------------------------------------------+
| 为 alex@localhost 提供资助 |
+------------------------------------------------ ------------------------------------------------------+
| 授予使用权发送至 'alex'@'localhost' |
| 将 .* 上的选择、插入、更新、删除、创建授予somestring_db_%'alex'@'localhost' |
+------------------------------------------------ ------------------------------------------------------+
2 行一组(0.00 秒)

mysql> 创建数据库 somestring_db_1;
查询正常,1 行受影响(0.00 秒)

mysql> 创建数据库 somestring_db_2;
查询正常,1 行受影响(0.00 秒)

mysql> 创建数据库 somestring_db_3;
查询正常,1 行受影响(0.00 秒)

mysql> 使用 somestring_db_1;
数据库更改
mysql> 创建表 test ( id int not null,name varchar(10) not null );
查询正常,0 行受影响(0.50 秒)

mysql> 插入测试值 (1,'嘿'),(2,'那里!'),(3,'它有效!!');
查询正常,3 行受影响(0.18 秒)
记录:3 重复:0 警告:0

mysql> 从测试中选择*;
+----+------------+
| 编号 | 名称 |
+----+------------+
| 1 | 嘿|
| 2 | 那里!|
| 3 | 有用!!|
+----+------------+
3 行一组(0.01 秒)

mysql> 从测试中删除;
查询正常,3 行受影响(0.25 秒)

mysql> 从测试中选择*;
空集(0.00 秒)