-- 超級用戶 monty,需密碼,可從任意主機連線
GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO monty@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;
-- 管理用戶 admin,本機免密,僅有 RELOAD、PROCESS 權限
GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
-- 虛擬用戶 dummy,本機免密,無任何權限(USAGE),後續再授權
GRANT USAGE ON *.* TO dummy@localhost;
關鍵點:必須同時建立 `user@localhost` 與 `user@%`,否則匿名用戶優先匹配導致無法登錄。
INSERT INTO user (Host,User,Password) VALUES('localhost','custom',PASSWORD('stupid'));
INSERT INTO user (Host,User,Password) VALUES('server.domain','custom',PASSWORD('stupid'));
INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv)
VALUES ('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y');
FLUSH PRIVILEGES;
UPDATE user SET Password=PASSWORD('1234') WHERE User='root';將正常實例 `mysql` 資料庫下的 `user.MYD`、`user.MYI`、`user.frm` 複製覆蓋至目標實例,即可用源實例密碼登錄。
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'pwd' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'pwd' WITH GRANT OPTION;
UPDATE user SET Host='%' WHERE User='root'; FLUSH PRIVILEGES; -- 允許遠程
UPDATE user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES; -- 僅本機
若 3306 被舊版佔用,新實例改用 3307/3309 等端口,連線時指定 `--port=3307` 或連線字串加 `port=3307` 即可。