免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1686 | 回复: 7
打印 上一主题 下一主题

【讨论中】mysql数据库的通用授权 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-02-02 23:35 |只看该作者 |倒序浏览
本帖最后由 cenalulu 于 2013-02-05 14:00 编辑

我有类似这样名字的多个数据库,db_1,db_2,db_3,我希望一条授权匹配这样的多个数据库,使用下面的语句
grant select,update,insert,delete on  db_%.* to user@'localhost' identified by 'password';
但是这个通配授权会报错,不知道哪位大侠知道怎么写这样的通配授权呢?

论坛徽章:
8
CU大牛徽章
日期:2013-09-18 15:20:48CU大牛徽章
日期:2013-09-18 15:20:58CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:17天秤座
日期:2013-10-30 14:01:03摩羯座
日期:2013-11-29 18:02:31luobin
日期:2016-06-17 17:46:36
2 [报告]
发表于 2013-02-04 09:26 |只看该作者
@uselsee
貌似不能这样授权哦。你可以使用select 和concat组合生成授权命令。

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
3 [报告]
发表于 2013-02-04 11:25 |只看该作者
印象里我都是傻傻的写多条,lz 聪明。

论坛徽章:
0
4 [报告]
发表于 2013-02-05 12:01 |只看该作者
回复 2# chinafenghao


    版主能否把我得需求写一个例子给我,多谢

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
5 [报告]
发表于 2013-02-05 14:00 |只看该作者
有个取巧办法。假设楼主数据库有100个db 分别是 mysql,db1-99
可以先:
grant select,update,insert,delete on  *.* to user@'localhost' identified by 'password';
然后:
revoke  select,update,insert,delete on  mysql.* from user@'localhost' ;

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
6 [报告]
发表于 2013-02-05 14:23 |只看该作者
回复 5# cenalulu


    我测试的时候好像 revoke 那条会提示不存在这个权限,因为 grant 的时候是 *.*,在字面上没有 mysql.* 这个权限。推测 revoke 只是字面上去处理 grant 的权限,并没有对 * 进行解释。

论坛徽章:
0
7 [报告]
发表于 2013-02-05 17:02 |只看该作者
cenalulu 发表于 2013-02-05 14:00
有个取巧办法。假设楼主数据库有100个db 分别是 mysql,db1-99
可以先:
grant select,update,insert,del ...


这位仁兄好想法,我测试一下看看

论坛徽章:
8
CU大牛徽章
日期:2013-09-18 15:20:48CU大牛徽章
日期:2013-09-18 15:20:58CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:17天秤座
日期:2013-10-30 14:01:03摩羯座
日期:2013-11-29 18:02:31luobin
日期:2016-06-17 17:46:36
8 [报告]
发表于 2013-02-06 11:54 |只看该作者
@uselsee
mysql存储的是你的权限sql,可没有做解析哦。
select * from mysql.user就能看见。

SELECT CONCAT('grant select,update,insert,delete on  ',a.`SCHEMA_NAME`,'.* to user@"localhost" identified by "password"') FROM information_schema.`SCHEMATA` a WHERE a.`SCHEMA_NAME` LIKE 'db_%';

上面sql是一个example,不一定可以运行成功,你自己调一下吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP