整理自實際部署維護經驗,涵蓋 Windows/Linux 雙平台的安裝路徑調整、服務管理、Root 密碼重置三大法、客戶端工具選擇與備份策略。
[mysqld]
datadir="D:/Program Files/MySQL/MySQL Server 5.1/Data/"
[mysqld]
datadir=/var/lib/mysql
修改後需停止服務、移動現有資料目錄至新位置、啟動服務。
| 作業系統 | 啟動 | 停止 | 重啟 | 狀態 |
|---|---|---|---|---|
| Windows (CMD/PowerShell 管理員) | net start mysql | net stop mysql | net stop mysql && net start mysql | sc query mysql |
| Linux (systemd) | systemctl start mysqld | systemctl stop mysqld | systemctl restart mysqld | systemctl status mysqld |
| Linux (SysVinit) | service mysqld start | service mysqld stop | service mysqld restart | service mysqld status |
mysqladmin -u root -p'old_password' password 'new_password'
mysql -u root -p
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';
FLUSH PRIVILEGES;
MySQL 5.7+ 欄位為 authentication_string,5.6 為 password。
mysql -u root -p
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
FLUSH PRIVILEGES;
--skip-grant-tables 啟動:
mysqld --skip-grant-tables --consolemysqld_safe --skip-grant-tables &mysql -u rootUSE mysql;
UPDATE user SET authentication_string=PASSWORD('new_password') WHERE User='root';
FLUSH PRIVILEGES;
--skip-grant-tables 進程,正常啟動 MySQL| 平台 | 主要配置檔 | 讀取優先順序 |
|---|---|---|
| Windows | my.ini(安裝目錄) | 安裝目錄 > C:\Windows\my.ini > C:\my.ini |
| Linux | /etc/my.cnf 或 /etc/mysql/my.cnf | /etc/my.cnf > /etc/mysql/my.cnf > 資料目錄/my.cnf > ~/.my.cnf |
# 完整備份(含結構+資料)
mysqldump -u root -p --single-transaction --routines --triggers --events db_name > backup.sql
# 僅結構
mysqldump -u root -p --no-data db_name > schema.sql
# 僅資料
mysqldump -u root -p --no-create-info db_name > data.sql
# 壓縮備份
mysqldump -u root -p db_name | gzip > backup.sql.gz
# 完整恢復
mysql -u root -p db_name < backup.sql
# 壓縮檔恢復
gunzip < backup.sql.gz | mysql -u root -p db_name
# 指定字元集恢復
mysql -u root -p --default-character-set=utf8mb4 db_name < backup.sql
# 停庫複製資料目錄
systemctl stop mysqld
tar czf /backup/mysql_$(date +%F).tar.gz /var/lib/mysql
systemctl start mysqld
-- utf8mb4(支援 Emoji,推薦)
CREATE DATABASE `my_db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- utf8(舊版相容)
CREATE DATABASE `my_db` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
-- 顯示所有資料庫
SHOW DATABASES;
-- 顯示當前資料庫所有表
SHOW TABLES;
-- 顯示表結構
DESC table_name;
SHOW CREATE TABLE table_name;
-- 顯示索引
SHOW INDEX FROM table_name;
-- 顯示程序列表
SHOW PROCESSLIST;
SHOW FULL PROCESSLIST;
-- 顯示狀態變數
SHOW GLOBAL STATUS LIKE 'Innodb%';
SHOW GLOBAL VARIABLES LIKE 'innodb%';
-- 殺死進程
KILL process_id;
-- 刷新權限
FLUSH PRIVILEGES;
-- 刷新日誌
FLUSH LOGS;
-- 分析表統計
ANALYZE TABLE table_name;
-- 優化表(整理碎片)
OPTIMIZE TABLE table_name;
-- 檢查表
CHECK TABLE table_name;
-- 修復表
REPAIR TABLE table_name;