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

MySQL 常用命令大全:啟動、連接、管理、備份、優化一網打盡

     編輯:MySQL 綜合教學

MySQL 日常運維命令速查大全

涵蓋服務管理、客戶端操作、用戶權限、備份恢復、性能分析、優化參數,適合 DBA/開發隨時查閱。

一、服務管理

# 啟動/停止/重啟
systemctl start|stop|restart mysqld
service mysqld start|stop|restart
/etc/init.d/mysqld start|stop|restart

# 開機自啟
systemctl enable mysqld
chkconfig mysqld on

# 進程/端口檢查
ps -ef | grep mysqld
netstat -ntpl | grep 3306
ss -ntpl | grep 3306

二、客戶端連接

# 本地連接
mysql -u root -p
mysql -h localhost -u root -p db_name

# 遠程連接
mysql -h 192.168.1.100 -u app_user -p app_db

# 執行腳本文件
mysql -u root -p db_name < script.sql

# 批量模式(非交互)
mysql -u root -p -e "SELECT VERSION();" db_name

三、庫/表/結構查看

SHOW DATABASES;
USE db_name;
SHOW TABLES;
SHOW TABLES LIKE 'prefix_%';
DESC tbl_name;
SHOW CREATE TABLE tbl_name\G
SHOW COLUMNS FROM tbl_name;
SHOW INDEX FROM tbl_name\G

四、用戶與權限管理

-- 創建用戶
CREATE USER 'app'@'%' IDENTIFIED BY 'strong_pass';

-- 授權(按需最小權限)
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;

-- 刷新生效
FLUSH PRIVILEGES;

-- 查看權限
SHOW GRANTS FOR 'app'@'%';

-- 撤銷權限
REVOKE ALL PRIVILEGES ON *.* FROM 'app'@'%';
DROP USER 'app'@'%';

-- 修改密碼 (5.7+)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_pass';
-- 或
SET PASSWORD FOR 'root'@'localhost' = 'new_pass';

五、備份與恢復

# 邏輯備份 mysqldump
mysqldump -u root -p --databases db1 db2 > backup.sql
mysqldump -u root -p db1 tbl1 tbl2 > backup_tbl.sql
mysqldump -u root -p -d db1 > schema_only.sql   # 只導結構
mysqldump -u root -p -t db1 > data_only.sql    # 只導數據
mysqldump -u root -p --single-transaction --routines --triggers --events db1 > full.sql

# 恢復
mysql -u root -p db1 < backup.sql

# 物理備份(需停庫或 xtrabackup)
# xtrabackup 在線熱備份工具,推薦生產環境

六、性能分析與優化

-- 慢查詢開啟
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 1;
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';

-- 執行計劃
EXPLAIN SELECT * FROM tbl WHERE col = 1\G
EXPLAIN FORMAT=JSON SELECT ...\G  -- 5.6+ JSON 格式更詳細

-- 狀態監控
SHOW GLOBAL STATUS LIKE 'Com_select';
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_reads';
SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW GLOBAL STATUS LIKE 'Slow_queries';

-- 變量查看/修改
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SET GLOBAL innodb_buffer_pool_size = 1073741824;  -- 1GB 動態調整

-- 進程列表
SHOW FULL PROCESSLIST;
KILL 12345;  -- 殺死長事務/慢查詢

-- 索引分析
ANALYZE TABLE tbl_name;
OPTIMIZE TABLE tbl_name;  -- 整理碎片,MyISAM/InnoDB 均支持

七、常用優化參數速查

參數建議值/說明
innodb_buffer_pool_size專用機 70-80% 物理內存
innodb_log_file_size256M-1G,減少檢查點刷盤
innodb_flush_log_at_trx_commit2(高性能)或 1(最高安全)
max_connections1000-5000,配合 thread_cache_size
query_cache_type/size5.7 建議關閉,8.0 已移除
tmp_table_size/max_heap_table_size64M-256M,減少磁盤臨時表
sort_buffer_size/join_buffer_size2M-8M,按會話分配,慎調大

八、實用單行命令

# 查看版本
mysql -V
mysqladmin -u root -p version

# 查看當前連接數
mysqladmin -u root -p extended-status | grep Threads_connected

# 查看數據庫大小
mysql -u root -p -e "SELECT table_schema AS 'DB', ROUND(SUM(data_length+index_length)/1024/1024,2) AS 'Size_MB' FROM information_schema.tables GROUP BY table_schema;"

# 導出建表語句
mysqldump -u root -p -d db_name > schema.sql

# 檢查表碎片
mysql -u root -p -e "SELECT TABLE_NAME, DATA_FREE FROM information_schema.TABLES WHERE TABLE_SCHEMA='db_name' AND DATA_FREE > 0;"

命令無數,理解原理才能舉一反三。重點掌握:EXPLAIN 執行計劃、SHOW ENGINE INNODB STATUS 事務/鎖/內存、pt-query-digest 慢查詢分析。

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