免费注册 查看新帖 |

Chinaunix

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

请问如何指定mysql账号不能访问mysql这个数据库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-25 22:11 |只看该作者 |倒序浏览
各位大侠:

出于安全考虑我想设定一个mysql账号,这个账号能访问除了包含有user表的mysql这个数据库之外的所有其它数据库,该如何创建这个账号?
网上教程和mysql帮助手册中GRANT的例子,要么使用*.*,要么是对一个数据库中的表进行权限设定dbname.*

例如:
服务器上有DB1,DB2,DB3,……,mysql,test等多个数据库,创建一个账号,使这个账号只能访问DB1,DB2,DB3,……多个数据库,而不能访问mysql这个库?

谢谢

论坛徽章:
8
戌狗
日期:2014-09-26 16:39:44水瓶座
日期:2014-10-10 02:06:57金牛座
日期:2014-10-11 23:04:042015亚冠之首尔
日期:2015-06-23 15:37:0015-16赛季CBA联赛之天津
日期:2016-01-22 18:58:2915-16赛季CBA联赛之佛山
日期:2016-05-31 19:18:0815-16赛季CBA联赛之同曦
日期:2016-08-10 16:26:3315-16赛季CBA联赛之辽宁
日期:2018-01-10 11:47:40
2 [报告]
发表于 2010-03-25 22:14 |只看该作者
那就一个一个数据库给他授权

论坛徽章:
0
3 [报告]
发表于 2010-03-25 22:26 |只看该作者
谢谢,由于这台服务器是开发所使用的,今后会不断增加数据库,按照你的方法就是说每当新建一个数据库就要授权一次?这样好麻烦啊

论坛徽章:
0
4 [报告]
发表于 2010-03-26 00:20 |只看该作者
查了下grant 的手册说明 http://dev.mysql.com/doc/refman/5.0/en/grant.html ,应该没法达到你的要求了

因为grant只能对已有的数据库/表进行授权

如果你觉得麻烦,可以写成一个脚本 ,只要输入参数名(数据库的名称)
然后执行
mysql -h ip -u user -ppassword -e"grant all on 参数名 to user@% with grant option"

论坛徽章:
0
5 [报告]
发表于 2010-03-26 07:57 |只看该作者
期待高手

论坛徽章:
0
6 [报告]
发表于 2010-03-26 09:30 |只看该作者
可以使用匹配,但要求以后生成的数据库名称必须遵循这一匹配规则。

例如:

grant all on `dbname%`.* to xxx@xxx identified by xxxx;

那么以后生成的数据库名称必须以 dbname开头。

论坛徽章:
0
7 [报告]
发表于 2010-03-26 10:08 |只看该作者
哦,6楼是一个解决方法,不错,去试试,谢谢。

论坛徽章:
0
8 [报告]
发表于 2010-03-26 10:42 |只看该作者
不行啊,试了一下用通配符报错,说是数据库不存在。

GRANT SELECT,INSERT,UPDATE,DELETE ON `cpd\_%.*` TO 'abc'@'%' IDENTIFIED BY '1234567890';
ERROR 1146 (42S02): Table 'mysql.cpd\_%.*' doesn't exist

GRANT SELECT,INSERT,UPDATE,DELETE ON `cpd%.*` TO 'abc'@'%' IDENTIFIED BY '1234567890';
ERROR 1146 (42S02): Table 'mysql.cpd%.*' doesn't exist

我的数据库环境是:
rhel4u5+mysql 5.1.45

论坛徽章:
8
戌狗
日期:2014-09-26 16:39:44水瓶座
日期:2014-10-10 02:06:57金牛座
日期:2014-10-11 23:04:042015亚冠之首尔
日期:2015-06-23 15:37:0015-16赛季CBA联赛之天津
日期:2016-01-22 18:58:2915-16赛季CBA联赛之佛山
日期:2016-05-31 19:18:0815-16赛季CBA联赛之同曦
日期:2016-08-10 16:26:3315-16赛季CBA联赛之辽宁
日期:2018-01-10 11:47:40
9 [报告]
发表于 2010-03-26 15:47 |只看该作者
本帖最后由 wiliiwin 于 2010-03-26 15:54 编辑

写个shell脚本  建一个文件1.txt  这个文件输入需要增加的数据库名字  然后shell脚本2.sh去读取这个文件  shell脚本里面写上相应的mysql语句  应该可以实现你这个需求

eg:

#more 1.txt

   aa
   bb
   cc

#more 2.sh

#!/bin/bash
for i in `cat /root/1.txt`
do
dir=$(mysql -u root -p123456 -e "grant select,insert,update on $i.* to test@'%' identified by '123456';   )
done

这个是大体的思路 不知道能不能满足你的需求  脚本可以自己再添加  我只是大概写了下思路
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP