我需要从某些主机中删除数据库访问权限。有两个选择:
这个选项似乎是最好的,因为我不需要删除单独的用户。
use mysql;
delete from user where host='myhost';
在下面的第二个选项中,我需要删除单个用户。
drop user 'user1'@'myhost';
drop user 'user2'@'myhost';
drop user 'user3'@'myhost';
你知道这些选项之间有什么区别吗?有什么优缺点吗?
谢谢。
我需要从某些主机中删除数据库访问权限。有两个选择:
这个选项似乎是最好的,因为我不需要删除单独的用户。
use mysql;
delete from user where host='myhost';
drop user 'user1'@'myhost';
drop user 'user2'@'myhost';
drop user 'user3'@'myhost';
你知道这些选项之间有什么区别吗?有什么优缺点吗?
谢谢。
当你使用 DROP USER
语句时,它会删除一个或多个账户以及它们的账户权限。
而当你使用 DELETE User
时,它只是一条针对表的SQL命令。
DROP
总是比delete
更加强大。
或者您可以使用REVOKE
来移除所有授予的权限。
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'myhost';
权限
INSERT - 允许用户向特定的MySQL表格中插入行数据
SELECT - 允许用户读取数据库
了解更多关于DROP USER 语句的信息。
flush privileges
来刷新缓存数据。此外,您必须确保手动删除所有用户和权限(例如,对于表、列)。
授予/撤销用户立即生效。
参见https://dev.mysql.com/doc/refman/8.0/en/privilege-changes.html
DROP USER
不会自动关闭任何打开的用户会话”的说明... 当您需要确保它们已经离开时,请使用SHOW [FULL] PROCESSLIST
并可能从该用户中使用KILL
命令关闭正在休眠的连接,以从服务器上“踢出”(关闭)那些连接。 - Raymond Nijland