免费注册 查看新帖 |

Chinaunix

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

mysql 修改用户访问数据库权限的方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-14 15:07 |只看该作者 |倒序浏览
我在用grant创建用户的时候grant all on *.* to user@'%' identified by '密码',由于业务需要我现在想让用户只访问db这个数据库,请问应该怎么修改!

论坛徽章:
0
2 [报告]
发表于 2008-03-14 15:28 |只看该作者
grant all on db.* to user@'%' identified by '密码'

论坛徽章:
0
3 [报告]
发表于 2008-03-14 15:45 |只看该作者

回复 #2 yueliangdao0608 的帖子

可是我的用户已经存在了!这样的话不影响吗?我刚才尝试了,执行完语句没有错误,但还是对所有数据库有访问的权限

[ 本帖最后由 hackerwang 于 2008-3-14 16:00 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-03-14 16:32 |只看该作者
drop user user@'%';
grant all on db.* to user@'%' identified by '密码';
flush privileges;

[ 本帖最后由 yueliangdao0608 于 2008-3-14 16:35 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-03-14 16:57 |只看该作者
哎!只能是先删除了,在新建吗?

论坛徽章:
0
6 [报告]
发表于 2008-03-14 17:30 |只看该作者
grant usage on *.* to user@'%'
grant all on db.* to user@'%'

论坛徽章:
0
7 [报告]
发表于 2008-03-14 17:45 |只看该作者
也可以先REVOKE。然后重新GRANT权限·

论坛徽章:
0
8 [报告]
发表于 2008-03-14 18:09 |只看该作者
原帖由 hackerwang 于 2008-3-14 15:07 发表
我在用grant创建用户的时候grant all on *.* to user@'%' identified by '密码',由于业务需要我现在想让用户只访问db这个数据库,请问应该怎么修改!


UPDATE mysql.user

我用的是5.0.51a,可以这样用:

先撤消user的全局权限

  1. UPDATE mysql.user
  2.         SET Select_priv = 'N',
  3.         SET Insert_priv = 'N',
  4.         SET Update_priv = 'N',
  5.         SET Delete_priv = 'N',
  6.         SET Create_priv = 'N',
  7.         SET Drop_priv = 'N',
  8.         SET Reload_priv = 'N',
  9.         SET Shutdown_priv = 'N',
  10.         SET Process_priv = 'N',
  11.         SET File_priv = 'N',
  12.         SET Grant_priv = 'N',
  13.         SET References_priv = 'N',
  14.         SET Index_priv = 'N',
  15.         SET Alter_priv = 'N',
  16.         SET Show_db_priv = 'N',
  17.         SET Super_priv = 'N',
  18.         SET Create_tmp_table_priv = 'N',
  19.         SET Lock_tables_priv = 'N',
  20.         SET Execute_priv = 'N',
  21.         SET Repl_slave_priv = 'N',
  22.         SET Repl_client_priv = 'N',
  23.         SET Create_view_priv = 'N',
  24.         SET Show_view_priv = 'N',
  25.         SET Create_routine_priv = 'N',
  26.         SET Alter_routine_priv = 'N',
  27.         SET Create_user_priv = 'N'
  28.                 WHERE User = 'user';
复制代码

然后增加user对特定DB的操作权限

  1. INSERT INTO mysql.db VALUES ('%', 'db', 'user', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
复制代码


最后刷新权限表:
·

  1. FLUSH PRIVILEGES;
复制代码

楼主觉得麻烦不?我觉得挺麻烦,有些比较旧的版本估计这种方式还要出问题(它不一定支持上面的所有权限)。

我觉得最好的方法是用REVOKE删掉权限然后重新GRANT.

论坛徽章:
0
9 [报告]
发表于 2008-03-14 18:18 |只看该作者
原帖由 weichongli 于 2008-3-14 18:09 发表


UPDATE mysql.user

我用的是5.0.51a,可以这样用:

先撤消user的全局权限

UPDATE mysql.user
        SET Select_priv = 'N',
        SET Insert_priv = 'N',
        SET Update_priv = 'N', ...



不要用这种方法!!!!!!

论坛徽章:
0
10 [报告]
发表于 2008-03-17 00:47 |只看该作者
先drop掉或revoke了,再grant,很正常啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP