線上環境 Root 密碼遺失,標準方案需重啟加 skip-grant-tables,業務中斷風險大。本文提供兩種進階方案:標準重啟法與零停機「黑科技」法(利用 MyISAM user 表特性)。
kill (發 SIGTERM,而非 kill -9,避免數據損壞)my.cnf [mysqld] 區添加 skip-grant-tables-- 方式1
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
-- 方式2
UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE user='root' AND host='localhost'; FLUSH PRIVILEGES;
-- 方式3
mysqladmin -u root password 'newpass'
缺點:必須重啟兩次,業務中斷。
原理:mysql.user 仍為 MyISAM 引擎,表文件(.frm/.MYD/.MYI)可跨實例熱拷貝。
test 庫)
UPDATE test.user SET password=PASSWORD('hello') WHERE user='root' AND host='localhost';

kill -HUP `pidof mysqld`
skip-grant-tables 為臨時啟動參數而非持久化配置--init-file 方案重置密碼