MySQL:检查用户是否存在并删除

90

目前没有标准方法可以检查MySQL用户是否存在并删除它。有没有任何解决方法?

编辑:我需要一种直接的方式来运行这个操作,而不会出现错误
例如:

DROP USER test@localhost; :    

1
你是指MySQL用户吗?还是指你在MySQL表中存储的用户记录? - Jason Cohen
看起来MariaDB有这个功能:https://mariadb.com/kb/en/mariadb/drop-user/ - lmat - Reinstate Monica
1
对于未来的读者:MySQL 5.7具有“DROP USER IF EXISTS”功能,请参见https://dev59.com/L3RB5IYBdhLWcg3wiHll - Andrei Epure is hiring
1
@AndreiEpure 如果您可以将此作为答案放置,我会将其标记为正确答案。 - Cherian
14个回答

0
结合phyzome的答案(对我来说一开始并没有起作用)和andreb的评论(解释了为什么它没有起作用),我最终得到了这个看似可行的代码,如果NO_AUTO_CREATE_USER模式处于活动状态,则暂时禁用它:
set @mode = @@SESSION.sql_mode;
set session sql_mode = replace(replace(@mode, 'NO_AUTO_CREATE_USER', ''), ',,', ',');
grant usage on *.* to 'myuser'@'%';
set session sql_mode = @mode;
drop user 'myuser'@'%';

0

在终端运行:

sudo mysql -u root -p

输入密码。

select user from mysql.user;

现在删除用户'the_username'

DROP USER the_unername;

将“the_username”替换为您想要删除的用户。


-2
如果你有一个学校服务器,学生们在上面工作了很多。你可以通过以下方式轻松清理这个混乱:
delete from user where User != 'root' and User != 'admin';
delete from db where User != 'root' and User != 'admin';

delete from tables_priv;
delete from columns_priv;

flush privileges;

-6
如果您想在表中删除某个存在的drop,您可以使用DELETE命令,例如:
 DELETE FROM users WHERE user_login = 'foobar'

如果没有匹配的行,这不是一个错误。

2
我认为OP指的是一个真实的数据库用户。 - Tomalak
6
我认为这是最简单的解决方案。只需要正确的SQL语句:DELETE FROM mysql.user WHERE user = 'foobar'。 - John Rix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接