首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

macOS 下 MySQL 5.7+ 修改 root 密碼正確姿勢:告別「Unknown column 'password'」報錯

     編輯:MySQL 綜合教學

macOS 下 MySQL 5.7+ 修改 root 密碼正確姿勢:告別「Unknown column 'password'」報錯

MySQL 5.7 版本起,mysql.user 表移除了 password 字段,改用 authentication_string 存儲加密密文。許多舊教程仍使用 UPDATE ... SET password=PASSWORD(...),導致報錯 Unknown column 'password' in 'field list'。本文給出 macOS 終端下的標準修改流程。

現象複現

mysql> UPDATE mysql.user SET password=PASSWORD('123456') WHERE user='root';
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

正確修改步驟(MySQL 5.7 / 8.0 通用)

  1. 打開終端,連接本地 MySQL(需具備 root 權限):
    mysql -u root -p
    # 輸入當前密碼回車
  2. 切換到 mysql 系統庫並更新認證字符串:
    USE mysql;
    UPDATE user SET authentication_string=PASSWORD('新密碼') WHERE user='root' AND host='localhost';
    FLUSH PRIVILEGES;
  3. 驗證新密碼生效:
    EXIT;
    mysql -u root -p'新密碼' -e "SELECT VERSION();"

補充:MySQL 8.0 的推薦寫法

MySQL 8.0 引入 ALTER USER 語法,更安全、更標準:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
-- 或指定加密插件(兼容老驅動)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';

常見誤區對照表

錯誤寫法適用版本正確寫法
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('xxx')5.6 及以前5.7+ 仍可用,但建議用 ALTER USER
UPDATE user SET password=PASSWORD('xxx')5.6 及以前UPDATE user SET authentication_string=PASSWORD('xxx')
mysqladmin -u root password 'xxx'所有版本仍可用,底層調用 ALTER USER

忘記 root 密碼的緊急重置(macOS)

  1. 停止服務:brew services stop mysql 或 sudo /usr/local/mysql/support-files/mysql.server stop
  2. 跳過授權表啟動:sudo mysqld_safe --skip-grant-tables &
  3. 無密碼登錄:mysql -u root
  4. 執行上述 UPDATE authentication_string ... FLUSH PRIVILEGES;
  5. 正常重啟:brew services restart mysql

記住:5.7+ 看 authentication_string,8.0+ 首選 ALTER USER,再也不會踩字段不存在的坑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved