首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 用戶密碼設置全解析:SQL 與命令行雙軌操作

     編輯:MySQL 資料庫相關知識

密碼存儲原理

MySQL user 表中 password 列存儲的是 PASSWORD() 函數加密後的哈希值,**絕不可直接存明文**。直接 INSERT ... VALUES('plain') 會導致認證失敗。

方法一:SQL 語句設置(需刷新權限)

-- 創建用戶並設置密碼
INSERT INTO mysql.user (Host, User, Password)
VALUES ('%', 'app_user', PASSWORD('securePass'));
FLUSH PRIVILEGES;

-- 修改現有用戶密碼
SET PASSWORD FOR 'app_user'@'%' = PASSWORD('newPass');
FLUSH PRIVILEGES;

方法二:GRANT 一步到位(自動加密)

GRANT ALL ON *.* TO 'app_user'@'%' IDENTIFIED BY 'securePass';
-- 等同於創建用戶 + 授權 + 設置密碼,無需 FLUSH PRIVILEGES

方法三:mysqladmin 命令行工具

# 修改 root 密碼
mysqladmin -u root password 'newRootPass'

# 修改其他用戶密碼 (需 root 權限)
mysqladmin -u root -p'rootPass' password 'newUserPass' -u app_user

關鍵注意事項

  • MySQL 5.7+:password 列重命名為 authentication_string,PASSWORD() 函數已棄用,改用 ALTER USER ... IDENTIFIED BY
  • 通配符主機:'%' 允許遠程連接,'localhost' 僅本地,生產環境建議限制具體 IP
  • 權限最小化:避免 GRANT ALL ON *.*,按庫/表/列授予必要權限
  • 密碼複雜度:啟用 validate_password 插件強制策略

驗證密碼設置

mysql -u app_user -p'securePass' -e "SELECT CURRENT_USER();"
# 成功返回當前用戶信息

遺忘 root 密碼應急方案

參考文章 Windows 下 MySQL root 密碼重置失敗?完整排查指南 或 Linux 下 mysqld_safe --skip-grant-tables 流程。

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