# 本機連線(無密碼 root)
mysql -u root -p
# 指定主機/埠/密碼
mysql -h 192.168.1.100 -P 3306 -u root -p'password'
# 退出
exit # 或 quit、Ctrl+D
# 方法 1:mysqladmin(命令列)
mysqladmin -u root -p'old_pass' password 'new_pass'
# 方法 2:SQL 語句(需先登入)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_pass';
FLUSH PRIVILEGES;
-- 僅允許本機登入,擁有 mydb 所有權限
CREATE USER 'dev'@'localhost' IDENTIFIED BY 'strong_pass';
GRANT ALL PRIVILEGES ON mydb.* TO 'dev'@'localhost';
-- 允許遠端登入(% 代表任意主機)
CREATE USER 'app'@'%' IDENTIFIED BY 'strong_pass';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app'@'%';
FLUSH PRIVILEGES;
| 權限 | 說明 |
|---|---|
| ALL PRIVILEGES | 除 GRANT OPTION 外所有權限 |
| SELECT / INSERT / UPDATE / DELETE | 資料查詢/增/改/刪 |
| CREATE / DROP / ALTER | 結構建立/刪除/修改 |
| INDEX | 索引管理 |
| GRANT OPTION | 將自身權限授予他人 |
SHOW GRANTS FOR 'dev'@'localhost';
REVOKE DELETE ON mydb.* FROM 'dev'@'localhost';
DROP USER 'dev'@'localhost';
-- 顯示資料庫
SHOW DATABASES;
-- 建立/切換/刪除資料庫
CREATE DATABASE school DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE school;
DROP DATABASE school;
-- 建立資料表
CREATE TABLE teacher (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
address VARCHAR(100) DEFAULT '深圳',
hire_date DATE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 修改結構
ALTER TABLE teacher ADD COLUMN phone VARCHAR(20) AFTER name;
ALTER TABLE teacher CHANGE COLUMN address addr VARCHAR(150);
ALTER TABLE teacher DROP COLUMN phone;
-- 刪除資料表
DROP TABLE teacher;
-- 插入
INSERT INTO teacher (name, hire_date) VALUES ('張三', '2020-01-15');
INSERT INTO teacher (name, address, hire_date) VALUES
('李四', '北京', '2019-03-22'),
('王五', '上海', '2021-07-01');
-- 查詢
SELECT * FROM teacher;
SELECT name, hire_date FROM teacher WHERE address = '深圳';
-- 更新
UPDATE teacher SET address = '廣州' WHERE name = '張三';
-- 刪除
DELETE FROM teacher WHERE name = '李四';
TRUNCATE TABLE teacher; -- 快速清空全表(不可回滾)
SELECT * FROM teacher LIMIT 10 OFFSET 20;(第 3 頁,每頁 10 筆)ORDER BY hire_date DESCSELECT address, COUNT(*) FROM teacher GROUP BY address;# 備份單一資料庫
mysqldump -u root -p school > school_backup.sql
# 備份所有資料庫
mysqldump -u root -p --all-databases > full_backup.sql
# 還原
mysql -u root -p school < school_backup.sql
熟練這些核心操作,即可勝任 Linux 環境下 MySQL 的日常開發與運維工作。