一、連線 MySQL
# 本機
mysql -u root -p
# 遠端
mysql -h 192.168.1.100 -u root -p
# 參數說明
-h host # 主機
-u user # 用戶
-p[pass] # 密碼(-p 後直接接密碼無空格,或留空提示輸入)
-P port # 埠(預設 3306)
-D db # 預設資料庫
二、修改密碼
# 首次設定(無舊密碼)
mysqladmin -u root password 'newpass'
# 修改密碼
mysqladmin -u root -p'oldpass' password 'newpass'
# SQL 方式
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
FLUSH PRIVILEGES;
三、建立帳號與授權
-- 建立可從任意主機連線的完整權限帳號
CREATE USER 'dev'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'dev'@'%' WITH GRANT OPTION;
-- 僅本機存取特定庫
CREATE USER 'app'@'localhost' IDENTIFIED BY 'AppPass456!';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app'@'localhost';
-- 撤銷權限
REVOKE ALL PRIVILEGES ON *.* FROM 'dev'@'%';
DROP USER 'dev'@'%';
FLUSH PRIVILEGES;
四、常用顯示指令
SHOW DATABASES;
USE mysql;
SHOW TABLES;
DESCRIBE user;
SHOW GRANTS FOR 'root'@'localhost';
五、建庫建表插入資料
CREATE DATABASE school;
USE school;
CREATE TABLE teacher (
id INT(3) AUTO_INCREMENT PRIMARY KEY,
name CHAR(10) NOT NULL,
address VARCHAR(50) DEFAULT '深圳',
year DATE
);
INSERT INTO teacher (name, address, year) VALUES
('glchengang', '深圳一中', '1976-10-10'),
('jack', '深圳一中', '1975-12-23');
六、文字檔匯入資料
# 資料格式:欄位用 Tab 分隔,NULL 用 \N
3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
# 匯入指令
LOAD DATA LOCAL INFILE 'teacher.txt' INTO TABLE teacher;
七、備份與還原
邏輯備份
# 單庫
mysqldump -u root -p --single-transaction --master-data=2 school > school.sql
# 全庫
mysqldump -u root -p -A --single-transaction --master-data=2 > all.sql
# 還原
mysql -u root -p school < school.sql
# 或進入 MySQL
SOURCE school.sql;
實體備份(冷備份)
# 停止服務
systemctl stop mysqld
# 打包資料目錄
tar czf mysql_data_$(date +%F).tar.gz /var/lib/mysql
# 還原:解壓覆蓋 /var/lib/mysql,修正權限,啟動服務
# 注意:版本、OS、架構必須一致
八、服務管理
systemctl start|stop|restart|status mysqld
# 或舊版
service mysqld start|stop|restart
/etc/init.d/mysqld start|stop|restart
進階技巧
- 大檔案匯入:
mysql -u root -p --max_allowed_packet=1G db < big.sql
- 只匯出結構:
mysqldump -d db > schema.sql
- 只匯出資料:
mysqldump -t db > data.sql
- 壓縮傳輸:
mysqldump -u root -p db | gzip > db.sql.gz