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

MySQL核心運維指令大全:連接、密碼、事務與日常管理實戰

     編輯:MySQL 資料庫相關知識

一、 客戶端連接參數詳解

mysql -h host_name -u user_name -p[password] [database_name]
  • -h/--host:目標主機,本地可省略
  • -u/--user:用戶名,Unix系統同系統用戶名可省略
  • -p/--password:密碼提示模式(推薦),直接寫密碼有洩露風險
  • 連接後執行USE db_name切換數據庫,或啟動時直接指定

二、 密碼管理與權限刷新

UPDATE mysql.user SET Password=PASSWORD('new_pwd') WHERE User='root' AND Host='%';
FLUSH PRIVILEGES;

注意:MySQL 5.7+中Password列已改為authentication_string,建議使用ALTER USER 'root'@'%' IDENTIFIED BY 'new_pwd';

三、 配置文件讀取優先級(由高到低)

  1. /etc/my.cnf — 全局選項
  2. DATADIR/my.cnf — 實例級選項
  3. --defaults-extra-file — 指定額外配置
  4. ~/.my.cnf — 用戶級選項

後讀取的配置會覆蓋先讀取的同名參數,利用此機制可實現多實例差異化配置。

四、 緊急重置Root密碼(跳過權限表)

Linux/Unix平台

  1. 優雅停止:kill -TERM $(cat mysql.pid)(避免用-9導致數據損失)
  2. 啟動跳過權限模式:mysqld_safe --skip-grant-tables &
  3. 無密碼登錄修改:mysql -u root → UPDATE mysql.user SET authentication_string=PASSWORD('new_pwd') WHERE User='root'; FLUSH PRIVILEGES;
  4. 正常重啟服務

Windows平台

  1. 服務管理器停止MySQL服務
  2. 命令行啟動:mysqld --skip-grant-tables
  3. 新開窗口無密碼登錄修改密碼,同Linux步驟

五、 NULL值處理規範

  • NULL不可參與算術/比較運算,NULL=NULL結果為NULL(非true)
  • 判斷空值:IS NULL / IS NOT NULL
  • MySQL 3.23.6+ 支持<=>安全比較:col <=> NULL等同col IS NULL
  • 排序行為:MySQL 4.0.2+ NULL值永遠排在最前(無論ASC/DESC)

六、 用戶變量與會話狀態

SELECT @max_id := MAX(id) FROM orders;
SELECT * FROM order_items WHERE order_id = @max_id;
  • 變量前綴@,賦值用:=(避免與比較運算符混淆)
  • 作用域:當前會話,斷開連接自動銷毀

七、 自定義提示符提升操作體驗

mysql> PROMPT \u@\h:\d>_
root@localhost:test>_

常用轉義符:\u用戶、\h主機、\d當前庫、\_空格。

八、 高性能清空表策略

DELETE FROM table_name WHERE 1;

優於TRUNCATE的場景:需保留AUTO_INCREMENT計數器、需獲取影響行數、表有外鍵引用(TRUNCATE會失敗)。

九、 事務處理標準範本(InnoDB)

CREATE TABLE account (id BIGINT PRIMARY KEY, balance DOUBLE) ENGINE=InnoDB;

SET AUTOCOMMIT=0;
BEGIN;
UPDATE account SET balance=balance-100 WHERE id=1;
UPDATE account SET balance=balance+100 WHERE id=2;
-- 若中間報錯
ROLLBACK;
-- 確認無誤
COMMIT;

隱式提交操作(會自動結束當前事務)

ALTER TABLE、CREATE INDEX、DROP DATABASE/TABLE、LOCK TABLES、TRUNCATE等DDL語句均會觸發隱式提交,事務設計時務必避開。

十、 變量作用域與動態調整

級別設置語法生效範圍持久性
GLOBAL SET GLOBAL var=val; / SET @@GLOBAL.var=val; 全服務器新連接 重啟失效,需寫入配置文件固化
SESSION SET SESSION var=val; / SET @@SESSION.var=val; 當前連接 斷開連接失效

需SUPER權限修改全局變量;會話級默認繼承全局值,修改全局不影響已建連接的會話值。

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