Mysql安全性建立过程中遇见的问题

今天晚上我们班有同学问我一个关于mysql安全性的问题,其实就是想让我帮他创建一个用户然后授权,等等的操作,但是在这个过程中我居然发现了一个之前从来没遇到过的问题:就是当我在创建新用户之后,系统都显示成功创建,但是在我退出当前账号的时候系统突然提示有错误:
具体错误是:Access denied for user ‘jianqi’@‘localhost’ (using password: YES)
因为我之前创建新用户都是quit之后都是可以登录进去的,但是这次就十分奇怪,居然报了错
然后问百度 当然各种方法也没有很好的处理然后我就准备返回我原始账号把这个新的用户名和账号给删掉,这个时候居然 又又又报错了
这次的错误是:ERROR 1396 (HY000): Operation DROP USER failed for ‘jianqi’@’%'
然后根据百度上的大家伙的处理意见,我不断的执行
net stop mysql
net start mysql
flush priviledges

等等的一系列的操作,它还是删除不了,(建议大家先别像我一样瞎鼓捣)
然后调用sql语句查看所有的用户:
== SELECT DISTINCT CONCAT(‘User: ‘’’,user,’’’@’’’,host,’’’;’) AS query FROM mysql.user;==
我发现这个调皮的"jianqi"还是在,
正当我以为mysql这个像我亲爱的的狗哥一样皮的东东要被我整的嗷嗷叫的时候,
突然(此时自行脑补各种天雷炸惊天的画面)哈哈哈哈哈哈哈哈嗝,其实没有那么复杂
这个时候我发现了一个问题:(小北截图给你们看)

mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+------------------------------------+
| query                              |
+------------------------------------+
| User: 'user1'@'%';                 |
| User: 'jianqi'@'host';             |
| User: 'mysql.session'@'localhost'; |
| User: 'mysql.sys'@'localhost';     |
| User: 'root'@'localhost';          |
+------------------------------------+
5 rows in set (0.00 sec)

此时我要提一句:最后“@”符号后面的“%”,“localhost”,"host"咦,咋还不一样
开始我创建一个新用户的时候的sql语句: create user ‘jianqi’@‘host’ identified by ‘jianqi’;
此时我又很好奇,既然后面的不同,那我能否再创建一个同用户名同密码,后面是“localhost” 的账号呢?
然后小北就试了一下:(user1是我之前自己做的时候创的,刚才就顺手删了,哈哈哈,不用在意这个)

mysql> create user 'jianqi'@'localhost' identified by 'jianqi';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+------------------------------------+
| query                              |
+------------------------------------+
| User: 'jianqi'@'host';             |
| User: 'jianqi'@'localhost';        |
| User: 'mysql.session'@'localhost'; |
| User: 'mysql.sys'@'localhost';     |
| User: 'root'@'localhost';          |
+------------------------------------+
5 rows in set (0.00 sec)

成功了!!!神奇不?????
(麻烦大家配合一下)
那我更好奇了,那这样的话我删除的话,究竟怎么区分???
接下来,看小北的执行过程:

mysql> drop user jianqi;
ERROR 1396 (HY000): Operation DROP USER failed for 'jianqi'@'%'
mysql> drop user jianqi@host;
Query OK, 0 rows affected (0.00 sec)

mysql> drop user jianqi@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+------------------------------------+
| query                              |
+------------------------------------+
| User: 'mysql.session'@'localhost'; |
| User: 'mysql.sys'@'localhost';     |
| User: 'root'@'localhost';          |
+------------------------------------+
3 rows in set (0.00 sec)

这下真想大白啦,真鸭嘛真开熏,hahhhhhhhhhhhhhhh
嗷嗷嗷
那==“%”,“localhost”,“host”==有啥区别??
我们来看看:备注一下:

host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost

如果想让该用户可以从任意远程主机登陆,可以使用通配符%

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值