現象:遠程客戶端連接 MySQL 正常,同機器 Python 腳本用 MySQLdb.connect(host='localhost') 报 OperationalError: (1045, \"Access denied for user 'root'@'host-name.local'\")。原因:Python 解析 localhost 為機器完整主機名(FQDN),權限表中無 root@host-name.local。
_mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'myserver-vuldb.local' (using password: YES)")

User + Host 匹配。root@% 或 root@192.168.x.%。localhost → 系統主機名 myserver-vuldb.local → 嘗試匹配 root@myserver-vuldb.local → 無此授權 → 1045。mysql -u root -p GRANT ALL PRIVILEGES ON testDB.* TO 'root'@'myserver-vuldb.local' IDENTIFIED BY '1234'; FLUSH PRIVILEGES;
通用模板:GRANT 權限 ON db.* TO 'user'@'具體主機名' IDENTIFIED BY 'pwd';
SELECT Host, User FROM mysql.user WHERE User='root';
確認新增行 root | myserver-vuldb.local 存在。
127.0.0.1(走 TCP)或 localhost 配合 skip-name-resolve 禁用主機名解析。root@%。mysql.user 表,清理無用授權。