連線MySQL
# 本地連線
mysql -u root -p
# 遠端連線
mysql -h 110.110.110.110 -u root -p'abcd123'
# 退出
exit
密碼修改
# 首次設定 (無舊密碼)
mysqladmin -u root password 'newpass'
# 變更密碼
mysqladmin -u root -p'oldpass' password 'newpass'
# SQL方式 (需登入)
UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
使用者授權實戰
建立高權限本地管理帳號
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'strongpass';
建立業務應用帳號 (最小權限、限制主機)
GRANT SELECT, INSERT, UPDATE, DELETE ON `mydb`.* TO 'appuser'@'localhost' IDENTIFIED BY 'apppass';
移除密碼 (僅測試環境)
GRANT SELECT, INSERT, UPDATE, DELETE ON `mydb`.* TO 'test'@'localhost' IDENTIFIED BY '';
資料庫與資料表操作
| 操作 | SQL命令 |
| 顯示資料庫 | SHOW DATABASES; |
| 建立資料庫 | CREATE DATABASE school; |
| 刪除資料庫 | DROP DATABASE school; |
| 使用資料庫 | USE school; |
| 顯示資料表 | SHOW TABLES; |
| 檢視表結構 | DESCRIBE teacher; |
| 建立資料表 | CREATE TABLE teacher (id INT AUTO_INCREMENT PRIMARY KEY, name CHAR(10), address VARCHAR(50) DEFAULT '深圳', year DATE); |
| 刪除資料表 | DROP TABLE teacher; |
| 清空資料表 | DELETE FROM teacher; 或 TRUNCATE TABLE teacher; |
| 查詢所有資料 | SELECT * FROM teacher; |
完整建庫建表插入範例
DROP DATABASE IF EXISTS school;
CREATE DATABASE school;
USE school;
CREATE TABLE teacher (
id INT(3) AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(10) NOT NULL,
address VARCHAR(50) DEFAULT '深圳',
year DATE
);
INSERT INTO teacher VALUES ('', 'glchengang', '深圳一中', '1976-10-10');
INSERT INTO teacher VALUES ('', 'jack', '深圳一中', '1975-12-23');
批次執行SQL腳本檔
# 將上述命令存為 school.sql
mysql -u root -p'pass' < school.sql
# 或在 MySQL 客戶端
SOURCE school.sql;
文字檔資料匯入 (LOAD DATA)
# 資料格式:欄位以 Tab 分隔,NULL 用 \N 表示
# 檔案內容範例:
3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
# 匯入命令
USE school;
LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE teacher;
mysqldump 備份與恢復
# 備份單一資料庫
mysqldump --opt school > school_backup.sql
# 備份多個資料庫
mysqldump --opt --databases db1 db2 > multi_backup.sql
# 完整備份 (含 mysql 系統庫)
mysqldump --opt --all-databases > full_backup.sql
# 僅結構
mysqldump -u root -p -d school > schema.sql
# 僅資料
mysqldump -u root -p -t school > data.sql
# 恢復
mysql -u root -p school < school_backup.sql
資料表重命名與結構變更
# 重命名
RENAME TABLE ztemp TO ztemp4;
# 修改欄位屬性
ALTER TABLE bbabase CHANGE news_id id VARCHAR(5) NOT NULL;
# 新增欄位 (指定位置)
ALTER TABLE bbabase ADD leave_time DATETIME NOT NULL AFTER content;
操作技巧
- 忘記分號:另起行輸入
; 即可結束命令
- 歷史命令:上下鍵調取 (需支援 readline 的客戶端)
- 多行命令:自然換行,以分號結束