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

MySQL 基礎操作完整指南:連線、密碼管理、配置檔與 NULL 處理

     編輯:MySQL 資料庫相關知識

一、連線 MySQL 伺服器

mysql -h host_name -u user_name -p[password] [database_name]
  • -h:指定主機,本機可省略。
  • -u:指定用戶,Linux 若系統登入名與資料庫用戶名一致可省略;Windows 可設 USER 環境變數。
  • -p:提示輸入密碼(輸入過程不顯示);不建議直接在參數後寫密碼(-ppassword),會殘留於歷史紀錄。
  • 連線成功後,執行 USE db_name; 切換資料庫,或在連線參數直接帶入資料庫名稱。

二、修改使用者密碼

標準作法(MySQL 5.7+)

ALTER USER 'user'@'host' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;

舊版相容語法

UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='user' AND Host='host';
FLUSH PRIVILEGES;

注意:PASSWORD() 在 MySQL 8.0 已移除,請改用 ALTER USER。

三、配置檔讀取順序與優先級

MySQL 啟動時依序讀取下列檔案,後讀取者覆蓋先前設定:

  1. /etc/my.cnf 或 /etc/mysql/my.cnf(全域)
  2. DATADIR/my.cnf(實例專屬)
  3. --defaults-extra-file 指定檔案
  4. ~/.my.cnf(使用者專屬)

可用 mysql --help --verbose 2>/dev/null | grep -A1 'Default options' 查看實際讀取路徑。

四、Root 密碼遺失:離線重置流程

Linux/Unix

  1. kill -TERM `cat /var/run/mysqld/mysqld.pid` 平滑停止(避免 -9 導致資料遺失)。
  2. 啟動跳過權限模式:mysqld_safe --skip-grant-tables --skip-networking &
  3. 免密登入:mysql -u root
  4. 執行:USE mysql; ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass!'; FLUSH PRIVILEGES;
  5. 正常重啟服務。

Windows

  1. 服務管理員停止 MySQL 服務。
  2. 命令列啟動:mysqld --skip-grant-tables --skip-networking
  3. 另開視窗免密登入並執行相同 ALTER USER 指令。
  4. 關閉跳過權限實例,正常啟動服務。

五、NULL 值處理的兩大陷阱

陷阱 1:TIMESTAMP 與 AUTO_INCREMENT 欄位插入 NULL 的特殊行為

  • TIMESTAMP 欄位插入 NULL → 自動寫入當前時間戳。
  • AUTO_INCREMENT 欄位插入 NULL → 自動產生下一個序號。
  • 其他型別(CHAR、INT 等)插入 NULL → 真正儲存 NULL。

陷阱 2:NULL ≠ 空字串('')

  • NULL 代表「值不存在/未知」;'' 代表「已知為空字串」。
  • 比較運算:NULL = NULL 結果為 NULL(非 TRUE),必須用 IS NULL / IS NOT NULL 或 <=>(NULL 安全相等)。
  • 統計函數:COUNT(col) 會忽略 NULL,但會計算空字串;SUM/AVG 同理。
  • 排序:MySQL 4.0.2+ 預設 NULL FIRST(即使 DESC),可用 ORDER BY col IS NULL, col 控制。

六、使用者變數基本用法

SET @var_name := value;          -- 賦值
SELECT @var_name;                -- 讀取
SELECT @rownum := @rownum + 1 AS row_number, t.* FROM tbl t, (SELECT @rownum := 0) r; -- 模擬 ROW_NUMBER

變數生命週期限於目前連線 Session,適合暫存中間運算結果、分頁游標等場景。

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