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

MySQL 常用命令大全速查手冊:連接、用戶、庫表、備份、權限

     編輯:MySQL 綜合教學

MySQL 常用命令大全速查手冊:連接、用戶、庫表、備份、權限

彙總從連接登入、用戶授權、庫表 DDL/DML、備份恢復、字符集、元數據查詢的高頻命令,格式統一、範例豐富,適合打印貼工位或存入團隊 Wiki。

一、連接與退出

場景命令
本地連接 (無密碼 root)mysql -u root -p (回車後輸入密碼)
本地連接 (帶密碼)mysql -u root -p'password' (無空格)
遠程連接mysql -h 192.168.1.100 -u root -p'password'
指定端口mysql -h 192.168.1.100 -P 3307 -u root -p
退出EXIT / QUIT / \q

二、修改密碼


# 5.7+ 推薦
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';
# 兼容舊版
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
# 命令行工具
mysqladmin -u root -p'oldpass' password 'newpass'

三、用戶與權限


-- 創建用戶
CREATE USER 'app'@'%' IDENTIFIED BY 'strongpass';
-- 授權 (常用模板)
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app'@'%';
GRANT ALL PRIVILEGES ON mydb.* TO 'admin'@'%' WITH GRANT OPTION;
-- 查看權限
SHOW GRANTS FOR 'app'@'%';
-- 回收權限
REVOKE INSERT ON mydb.* FROM 'app'@'%';
-- 修改密碼
ALTER USER 'app'@'%' IDENTIFIED BY 'newpass';
-- 刪除用戶
DROP USER 'app'@'%';
-- 列出所有用戶
SELECT User, Host FROM mysql.user;

四、庫操作


CREATE DATABASE IF NOT EXISTS mydb CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
DROP DATABASE IF EXISTS mydb;
SHOW DATABASES;
USE mydb;
SELECT DATABASE();  -- 當前庫
SHOW CREATE DATABASE mydb;

五、表操作 (DDL)


-- 創建表 (標準範例)
CREATE TABLE `user` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '用戶名',
  `email` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '郵箱',
  `password` CHAR(64) NOT NULL DEFAULT '' COMMENT '密碼哈希',
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_username` (`username`),
  KEY `idx_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶表';

-- 修改表
ALTER TABLE `user` ADD COLUMN `phone` VARCHAR(20) NOT NULL DEFAULT '' AFTER `email`;
ALTER TABLE `user` MODIFY COLUMN `username` VARCHAR(60) NOT NULL DEFAULT '';
ALTER TABLE `user` CHANGE COLUMN `phone` `mobile` VARCHAR(20) NOT NULL DEFAULT '';
ALTER TABLE `user` DROP COLUMN `mobile`;
ALTER TABLE `user` ADD UNIQUE INDEX `uk_mobile` (`mobile`);
ALTER TABLE `user` ADD INDEX `idx_created` (`created_at`);
ALTER TABLE `user` DROP INDEX `idx_created`;
RENAME TABLE `user` TO `user_v2`;
DROP TABLE IF EXISTS `user_v2`;
TRUNCATE TABLE `user_v2`;  -- 清空數據、重置自增

六、數據操作 (DML)


-- 插入
INSERT INTO `user` (`username`,`email`,`password`) VALUES ('alice','alice@test.com','hash1');
INSERT INTO `user` (`username`,`email`,`password`) VALUES ('bob','bob@test.com','hash2'),('carol','carol@test.com','hash3');

-- 查詢
SELECT * FROM `user`;
SELECT `id`,`username` FROM `user` WHERE `email` = 'alice@test.com';
SELECT * FROM `user` ORDER BY `id` DESC LIMIT 10 OFFSET 20;

-- 更新
UPDATE `user` SET `email` = 'alice_new@test.com' WHERE `username` = 'alice';

-- 刪除
DELETE FROM `user` WHERE `username` = 'alice';

七、備份與恢復

場景命令
整庫備份mysqldump -u root -p mydb > mydb_$(date +%F).sql
單表備份mysqldump -u root -p mydb user > user.sql
只備份結構mysqldump -u root -p -d --add-drop-table mydb > struct.sql
排除某表mysqldump -u root -p mydb --ignore-table=mydb.log > no_log.sql
壓縮備份mysqldump -u root -p mydb | gzip > mydb.sql.gz
恢復 (命令行)mysql -u root -p mydb < mydb.sql
恢復 (客戶端)SOURCE /path/mydb.sql;
並行導入 (8.0+)mysqlpump -u root -p --parallel-schemas=4 mydb > dump.sql

八、字符集與校對


-- 查看支持字符集
SHOW CHARACTER SET;
-- 查看默認字符集
SHOW VARIABLES LIKE 'character_set_%';
-- 修改庫字符集
ALTER DATABASE mydb CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
-- 修改表字符集
ALTER TABLE `user` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 連接指定字符集 (JDBC URL)
jdbc:mysql://host:3306/db?useUnicode=true&characterEncoding=utf8mb4

九、元數據與狀態查詢


-- 版本、用戶、時間
SELECT VERSION(), USER(), NOW(), DATABASE();
-- 表狀態
SHOW TABLE STATUS LIKE 'user'\G
-- 表結構
DESC `user`;
SHOW COLUMNS FROM `user`;
SHOW CREATE TABLE `user`\G
-- 索引
SHOW INDEX FROM `user`;
-- 進程
SHOW PROCESSLIST;
SHOW FULL PROCESSLIST;
-- 全局狀態
SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_%';
-- 全局變量
SHOW GLOBAL VARIABLES LIKE 'max_connections';
SHOW GLOBAL VARIABLES LIKE 'innodb_%';

十、實用技巧

  1. \G 結尾垂直顯示,適合寬表。
  2. tee /tmp/mysql.log 記錄會話;notee 關閉。
  3. pager less -SFX 設置分頁器,長結果可左右滾動、不換行。
  4. 批量執行:mysql -u root -p db_name < batch.sql。
  5. 監控慢查詢:watch -n 1 'mysql -u root -p -e "SHOW GLOBAL STATUS LIKE \"Slow_queries\";"'

收藏此手冊,MySQL 日常操作無需查文檔,指尖即得。

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