Mysql

重置密碼所需的 MySQL 權限

  • June 5, 2012

在我的團隊中,有些使用者希望定期更新他們的 MySQL 密碼。

我們的 MySQL 伺服器在幾個項目之間共享(並且某些使用者被分配到某些項目)。如果我是正確的,更改密碼需要訪問 mysql.user 表(這反過來又允許使用者修改伺服器上任何其他使用者的密碼。)

如果這一切都正確,有沒有辦法以使用者可以更新其密碼但不能更新其他使用者的方式來保護數據庫?

使用者應該能夠嚴格使用SET PASSWORD更改他/她自己的密碼。

要讓連接的使用者將新密碼設置為mynewpass,只需執行以下命令:

mysql> SET PASSWORD = PASSWORD('mynewpass');

根據SET PASSWORD上的MySQL 文件,如果伺服器是啟用只讀的伺服器,則需要SUPER權限才能執行此操作。否則,您可以隨時執行此操作。其他使用者無需設置其他人的密碼。如果您需要超級使用者來設置它,您仍然可以使用 SET PASSWORD。

要將密碼設置'someuser'@'10.1.2.30'hisnewpass,請執行以下命令:

mysql> SET PASSWORD FOR 'someuser'@'10.1.2.30' = PASSWORD('hisnewpass');

根據SET PASSWORD上的MySQL 文件,這相當於:

UPDATE mysql.user SET Password=PASSWORD('hisnewpass')
WHERE User='someuser' AND Host='10.1.2.30';
FLUSH PRIVILEGES;

使用SET PASSWORD不保證操縱mysql.user.

引用自:https://dba.stackexchange.com/questions/18840