在说这个问题之前我们先讨论下关于在mysql中删除用户的方法和问题:
其实在以前我删除mysql中的账号的时候用delete,一直没注意其实用这个命令删除账号会有一个问题
就是使用delete删除账号后,只会清除user表的,在其它表中的信息还是存在,比如:db表,这个表是规定哪个用户可以访问哪个数据库
这样使用delete删除后,在创建一个同名的最小权限的用户的时候,那么他会重用以前的权限,造成权限方面的问题。
这里我们拿test库来做下实验:
grant all on test.* to dbmanager@'127.0.0.1' identified by '123456';
建立dbmanager用户让它对test库有所有权限。
查看user表和db表:
然后我们使用delete命令删除dbmanager账号:
delete from user where user ='dbmanager' and host='127.0.0.1';
再查看user表和db表:
这时user表里面没有了dbmanager账号,但是db表里面还是有这个账号的并且它的权限依然存在,这时我们创建一个只有select权限的dbmanager账号。
grant select on test.* to dbmanager@'127.0.0.1' identified by '123456';
dbmanager账号的权限和以前的权限是一样的,所以使用delete删除账号的时候会引起权限方面的问题,知道这个问题后我以后删除账号基本上都是使用drop命令
说完上面的问题后,来说下用drop命令删除账号时遇到的问题:
mysql5.5安装完毕后要删除里面默认的账号并设置密码,但在使用drop删除的过程中遇到报错
一直不知道是什么问题,直到看到了这个帖子:http://zhuatlantis.blog.51cto.com/6106101/1343168
我们先用delete来删除。
这里说的意思是主机名里面如果有大写字母的时候,就会有这个问题。好像是mysql5.5的一个bug
在安装完mysql后会出现:
| VM000000809 | root | 和 | VM000000809 | | 这两个账户
这样的问题在mysql5.0的时候并没有出现,mysql5.0中主机名可以保存为大写形式,但是在mysql5.5中却不能保存为大写的形式,即使你在grant中写的是大写,mysql5.5也会存储为小写的
bug地址:https://bugs.mysql.com/bug.php?id=62255