无法重新创建mysql用户

时间:2015-02-17 02:12:29

标签: mysql database

我在Debian 3.2.54-2上使用mysql-server 5.5.41-0 + wheezy1 x86_64

我在使用mysql表的web应用程序上的一些问题(与mysql无关)所以我正在重新安装应用程序

我从aptitude remove packagename开始删除我的应用程序和mysql-server,但似乎它没有删除/删除当前使用的mysql数据库

当我重新安装mysql-server时,仍然使用以前的数据库。我使用命令drop user olduser删除上一个用户创建一个新用户,同时删除旧数据库drop database olddb

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

现在,当我使用新名称重新创建数据库时,它是成功的,但如果我重新创建相同的旧用户create user 'olduser'@'localhost' identified by 'somesecret';,它将始终说ERROR 1396 (HY000): Operation CREATE USER failed for 'olduser'@'localhost'创建不同的用户是成功的,但这重新创建同一个旧用户的问题困扰着我。有什么不对或错过的东西吗?

我试过了flush privileges

1 个答案:

答案 0 :(得分:1)

在没有任何数据库访问权限的情况下调试它有点难,这个错误在MySQL中很常见,但通常是FLUSH PRIVILEGES修复它。无论如何,如果确实丢弃了用户,你可以这样绕过它:

CREATE USER 'anyuser'@'localhost' IDENTIFIED BY 'test123';
UPDATE mysql.user SET USER='olduser' WHERE USER='anyuser';

请注意,要完全删除用户,您必须删除这些表中与其关联的所有数据:columns_privdbprocs_privtables_priv。然后最终执行刷新权限。

来自doc:

  

DROP USER不会自动删除或使数据库无效   旧用户创建的对象。这包括存储   DEFINER属性为其删除的程序或视图   用户。尝试访问此类对象可能会产生错误   在definer安全上下文中执行。 (有关安全性的信息   上下文,请参见第18.5节“存储程序和访问控制”   视图”。)