在说这个问题之前我们先讨论下关于在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表:

mysql自动删除pid文件 mysql中drop删除用户的命令_mysql

mysql自动删除pid文件 mysql中drop删除用户的命令_Mysql中Drop删除用户的名字_02

然后我们使用delete命令删除dbmanager账号:

delete from user where user ='dbmanager' and host='127.0.0.1';

再查看user表和db表:

mysql自动删除pid文件 mysql中drop删除用户的命令_mysql_03

mysql自动删除pid文件 mysql中drop删除用户的命令_ide_04

这时user表里面没有了dbmanager账号,但是db表里面还是有这个账号的并且它的权限依然存在,这时我们创建一个只有select权限的dbmanager账号。

grant select on test.* to dbmanager@'127.0.0.1' identified by '123456';

mysql自动删除pid文件 mysql中drop删除用户的命令_Mysql中Drop删除用户的名字_05

dbmanager账号的权限和以前的权限是一样的,所以使用delete删除账号的时候会引起权限方面的问题,知道这个问题后我以后删除账号基本上都是使用drop命令

说完上面的问题后,来说下用drop命令删除账号时遇到的问题:

mysql5.5安装完毕后要删除里面默认的账号并设置密码,但在使用drop删除的过程中遇到报错

mysql自动删除pid文件 mysql中drop删除用户的命令_mysql_06

一直不知道是什么问题,直到看到了这个帖子: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