我在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
答案 0 :(得分:1)
在没有任何数据库访问权限的情况下调试它有点难,这个错误在MySQL中很常见,但通常是FLUSH PRIVILEGES
修复它。无论如何,如果确实丢弃了用户,你可以这样绕过它:
CREATE USER 'anyuser'@'localhost' IDENTIFIED BY 'test123';
UPDATE mysql.user SET USER='olduser' WHERE USER='anyuser';
请注意,要完全删除用户,您必须删除这些表中与其关联的所有数据:columns_priv
,db
,procs_priv
,tables_priv
。然后最终执行刷新权限。
来自doc:
DROP USER不会自动删除或使数据库无效 旧用户创建的对象。这包括存储 DEFINER属性为其删除的程序或视图 用户。尝试访问此类对象可能会产生错误 在definer安全上下文中执行。 (有关安全性的信息 上下文,请参见第18.5节“存储程序和访问控制” 视图”。)