标题:mysql 中报的一个错误
只看楼主
佳L
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:19
帖 子:1404
专家分:3485
注 册:2011-12-11
结帖率:93.88%
已结贴  问题点数:100 回复次数:11 
mysql 中报的一个错误



之前我是将“leiyun”此设置数据库访问权限,后来我将此用户删除了,但是此用户还是可以登录,而且我删除此权限,保存时就报这个错误,请问这个问题怎么解决??我是第一次接触mysql数据库,很多东西都不懂。谢谢各位了。
搜索更多相关主题的帖子: 数据库访问 mysql 而且 用户 
2014-04-18 18:31
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:34 
不懂
摆渡的
1141:当前用户无权访问数据库
2014-04-18 18:54
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:34 
这种东西真的搞不清。。。
曾经被有关数据库的一个小问题折腾了三天

三十年河东,三十年河西,莫欺少年穷!
2014-04-18 22:25
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:34 
你是用哪个软件管理MySQL的?

思考赐予新生,时间在于定义
2014-04-19 11:01
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:0 
需求:某个用户指定ip机器能访问数据库
root@(none) 09:57:51>GRANT SELECT, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'jingwei'@'ip1,ip2' IDENTIFIED BY '*****';
Query OK, 0 rows affected, 1 warning (0.00 sec)
直接授权用逗号隔开发现warning:
root@(none) 09:57:52>show warnings\G
*************************** 1. row ***************************
Level: Warning
Code: 1285
Message: MySQL is started in --skip-name-resolve mode; you must restart it without this switch for this grant to work
1 row in set (0.00 sec)
删掉用户重新授权遇到报错:
root@(none) 09:57:58>drop user jingwei;
ERROR 1396 (HY000): Operation DROP USER failed for 'jingwei'@'%'
root@(none) 10:07:21>show grants for jingwei;
ERROR 1141 (42000): There is no such grant defined for user 'jingwei' on host '%'
用户存在,但不是@'%' 直接drop用户会默认@'%'所以执行不成功,将mysql.user表中的user信息查询出来即可知道上面的授权语句是执行成功了写入了ip1,ip2两个ip填充了host,根据host可将该用户删除:
root@(none) 10:10:19>delete from mysql.userwhere host='ip1,ip2';
Query OK, 1 row affected (0.00 sec)
或者删除的时候用“用户@'ip1,ip2':
root@(none) 11:25:45>drop user jingwei@'ip1,ip2';
Query OK, 0 rows affected (0.00 sec)
同样的查看授权也可以用“用户@'ip1,ip2':
root@(none) 11:28:30>show grants for jingwei@'ip1,ip2';
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for jingwei@ip1,ip2 |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'jingwei'@'ip1,ip2' IDENTIFIED BY PASSWORD '****' |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
正确的授权:
GRANT SELECT, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'jingwei'@'ip1' IDENTIFIED BY '*****';
GRANT SELECT, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'jingwei'@'ip2' IDENTIFIED BY '*****';
每个ip逐一授权的好处在于要回收某台机器的权限时可方便的执行
另外一种授权方式可以在ip之间用'/'进行分割,但是在revoke权限时必须全部一起回收:
GRANT SELECT, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'jingwei'@'ip1/ip2' IDENTIFIED BY '*****';
revoke SELECT, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT ON *.* from 'jingwei'@'ip1/ip2';
建议白名单控制还是逐条执行授权!

思考赐予新生,时间在于定义
2014-04-19 11:18
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:0 
特别说明一点,先自行了解一下默认用户root@%,还有root@localhost

思考赐予新生,时间在于定义
2014-04-19 11:20
佳L
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:19
帖 子:1404
专家分:3485
注 册:2011-12-11
得分:0 
以下是引用love云彩在2014-4-19 11:01:15的发言:

你是用哪个软件管理MySQL的?


       用Navicat Premium来管理的。。。。。root@% 这个是让所有用户都有权限连接数据库,root@localhost是只有本地才可以连接,这个我说的对吗?

Dreams  will   come  true  ,if   you    hold   on  !
2014-04-19 11:30
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:0 
嗯,可以这么理解!!


另外,我想你说一下你是怎么创建用户和添加权限才导致那个问题的产生,我想知道这个过程你是如何操作的。最好能截图

思考赐予新生,时间在于定义
2014-04-19 12:26
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:0 
我好有耐心的在线等待你一个多小时,看来你是太忙了,没时间回复。
只因为我实在是弄不出你那个错误,我也是用navicat premium,操作了很多遍都没有遇到那个错误。
我的步骤大概是:
1、在当前已连接到数据库的用户下新建一个用户;比如lcg;主机是localhost,然后保存
2、点击用户按钮,再点击权限管理员,为新用户lcg添加权限,此时我的设置的是允许所有的权限。
3、新建一个连接名test,用户名是lcg,主机是localhost,连接成功。
4、在test里面删除用户lcg,对应的lcg@localhost这个权限也随之被删掉,关闭test的连接,再次连接则失败。
我还试过了另外一种:
1,2,步骤同上;
3、在当前已连接到数据库的用户下删除新建的用户,随之对应的权限也会被删掉。

无论我怎么操作,也弄不出你那个错误,如果你的问题还没有解决,请描述一下你整个操作过程。
不然我不知道怎么帮你

思考赐予新生,时间在于定义
2014-04-19 14:01
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:0 
另外说明一下root@%和root@localhost,和你理解的不一样,看链接吧,我不太会总结答案。
http://bbs.

思考赐予新生,时间在于定义
2014-04-19 14:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-430277-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.094496 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved