任何一个用户都能访问information_schema,但是我不想某些用户看到它。

APOLLO_TS 2009-12-24 04:12:29
建立一个只有登陆能力的用户。
CREATE USER 'edwin'@'%' IDENTIFIED BY '***';

GRANT USAGE ON * . * TO 'edwin'@'%' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;


但是即是这样的用户也一样能看information_schema,虽然这里是视图,或是有只读功能限制。
我还是不想让别人看到,但是怎么做呢?要在服务端杜绝,而不是客户端。

还有一个帖子没结,有类似开发经验的说说:http://topic.csdn.net/u/20091124/10/266660ad-23da-46bb-acdc-680b9cee6470.html

...全文
2177 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
平凡的思想者 2009-12-25
  • 打赏
  • 举报
回复
正确授权才是关键,另外防止窃听sql语句可以使用ssl连接mysql。
jinsenhome 2009-12-24
  • 打赏
  • 举报
回复
ACMAIN_CHM 说的应该是对的。
如果合理对用户赋权,用户只能看到自己有权限的东西的子集。而不是完整的信息构架信息!
ACMAIN_CHM 2009-12-24
  • 打赏
  • 举报
回复
这个比较难了。
我经常用的是直接用sniffer网上监听,看看看发送的都是些什么SQL语句。 有些东西防也防不住的。
APOLLO_TS 2009-12-24
  • 打赏
  • 举报
回复
表的INFO是部分加密的,为了减少WEB系统性能消耗,查询时候就解密了。我在想想别的办法,明天来的时候结贴。
ACMAIN_CHM 2009-12-24
  • 打赏
  • 举报
回复
都能访问你的数据库了,直接把所有数据都可以复制下来了。 再去限制这个select * from information_schema.PROCESSLIST limit 0, 50; 也没什么大的意义了。
wwwwb 2009-12-24
  • 打赏
  • 举报
回复
系统表用户都是可以访问的,测试了一下ASA(ASE)、SQLSERVER,哪怕只有最低的权限,也可以访问系统表,
实际上,只要有用户和密码,用其它方式,ADO、ADOX一样可得到系统表中的表、字段之类的
APOLLO_TS 2009-12-24
  • 打赏
  • 举报
回复
其实某些人太聪明了,

使用踩点手段很快就能获得数据库的IP地址。加上一些高超的破解办法,很快用户和密码尽收眼底。这些信息也许都不是想要的,只是想透析一些商业机密。

然后select * from information_schema.PROCESSLIST limit 0, 50;

很快就得知了经常执行的查询。之后就OVER AND OVER了。
ACMAIN_CHM 2009-12-24
  • 打赏
  • 举报
回复
另外也没有什么安全上的问题。用户在这个information_schema中也只能看到他被授权看到的那些东西,是看不到其它数据库的东西的
wwwwb 2009-12-24
  • 打赏
  • 举报
回复
测试
REVOKE ALL ON information_schema.* FROM qq;
提示有误,没有办法,无法做到
ACMAIN_CHM 2009-12-24
  • 打赏
  • 举报
回复
没办法。这个是公共视图,其实是不存在这个数据库的。
阿_布 2009-12-24
  • 打赏
  • 举报
回复
ON * . * 改成 数据库名.*

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧