Chinaunix

标题: mysql 修改用户访问数据库权限的方法 [打印本页]

作者: hackerwang    时间: 2008-03-14 15:07
标题: mysql 修改用户访问数据库权限的方法
我在用grant创建用户的时候grant all on *.* to user@'%' identified by '密码',由于业务需要我现在想让用户只访问db这个数据库,请问应该怎么修改!
作者: yueliangdao0608    时间: 2008-03-14 15:28
grant all on db.* to user@'%' identified by '密码'
作者: hackerwang    时间: 2008-03-14 15:45
标题: 回复 #2 yueliangdao0608 的帖子
可是我的用户已经存在了!这样的话不影响吗?我刚才尝试了,执行完语句没有错误,但还是对所有数据库有访问的权限

[ 本帖最后由 hackerwang 于 2008-3-14 16:00 编辑 ]
作者: yueliangdao0608    时间: 2008-03-14 16:32
drop user user@'%';
grant all on db.* to user@'%' identified by '密码';
flush privileges;

[ 本帖最后由 yueliangdao0608 于 2008-3-14 16:35 编辑 ]
作者: hackerwang    时间: 2008-03-14 16:57
哎!只能是先删除了,在新建吗?
作者: angeljyt    时间: 2008-03-14 17:30
grant usage on *.* to user@'%'
grant all on db.* to user@'%'
作者: yueliangdao0608    时间: 2008-03-14 17:45
也可以先REVOKE。然后重新GRANT权限·
作者: weichongli    时间: 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.
作者: yueliangdao0608    时间: 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', ...



不要用这种方法!!!!!!
作者: fan12    时间: 2008-03-17 00:47
先drop掉或revoke了,再grant,很正常啊
作者: weichongli    时间: 2008-03-25 14:46
原帖由 yueliangdao0608 于 2008-3-14 18:18 发表



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


那么多叹号烦不烦啊你,看见我贴上最后一句话了没?
作者: yueliangdao0608    时间: 2008-03-25 14:47
原帖由 weichongli 于 2008-3-25 14:46 发表


那么多叹号烦不烦啊你,看见我贴上最后一句话了没?






欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2