【问题标题】:MySql grant permissions on all databases beginning with <string>MySql 授予以 <string> 开头的所有数据库的权限
【发布时间】:2018-08-10 14:51:50
【问题描述】:

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

示例:

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

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

【问题讨论】:

  • 似乎没有办法只使用 SQL 来做到这一点。不过,用任何编程语言都很容易做到。只需遍历mysql.db的查询即可。

标签: mysql database


【解决方案1】:

您可以尝试以下方法:

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 社区服务器 (GPL)
....
...
..
输入“帮助”;或 '\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> 创建表测试 ( id int not null,name varchar(10) not null );
查询正常,0 行受影响(0.50 秒)

mysql> 插入测试值 (1,'Hey'),(2,'there!'),(3,'It Works!!');
查询正常,3 行受影响(0.18 秒)
记录:3 重复:0 警告:0

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

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

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

【讨论】:

    猜你喜欢
    • 2011-06-28
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多