小编典典

何时真正需要MySQL中的Flush Privileges?

mysql

当创建新表并与一个用户一起使用时,我通常只调用以下命令:

CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY "mypassword";

FLUSH PRIVILEGES发出前两个命令后,我再也不需要使用该命令。用户可以登录并使用他们的数据库,并运行可以很好地连接到数据库的PHP脚本。但是,我看到几乎所有我看过的教程都使用了此命令。

什么时候FLUSH PRIVILEGES真正需要该命令,什么时候不必要?


阅读 978

收藏
2020-05-17

共1个答案

小编典典

通过GRANT选项分配的特权不需要FLUSH PRIVILEGES才能生效-MySQL服务器将注意到这些更改并立即重新加载授权表。

从MySQL文档

如果直接使用诸如INSERT,UPDATE或DELETE之类的语句修改授权表,则在重新启动服务器或告诉服务器重新加载表之前,所做的更改不会影响特权检查。如果直接更改授权表但忘记重新加载它们,则更改将在重新启动服务器之前无效。这可能会让您想知道为什么更改似乎没有效果!

要告诉服务器重新加载授权表,请执行flush-privileges操作。这可以通过发出FLUSH PRIVILEGES语句或执行mysqladmin
flush-privileges或mysqladmin reload命令来完成。

如果使用诸如GRANT,REVOKE,SET PASSWORD或RENAME
USER之类的帐户管理语句间接修改授权表,则服务器会注意到这些更改并立即将授权表再次加载到内存中。

2020-05-17