net start mysql 啟動服務;mysql -u root -p 登入。systemctl start mysqld 或 /etc/init.d/mysqld start;需 root 權限。mysql -u root -p
-- 進入後
USE mysql;
DELETE FROM user WHERE User = ''; -- 移除匿名帳號
UPDATE user SET authentication_string=PASSWORD('NewPass') WHERE User='root';
FLUSH PRIVILEGES;
MySQL 5.7+ 欄位為 authentication_string,8.0 建議用 ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass';。
UPDATE user SET Host='192.168.1.%' WHERE User='root';
FLUSH PRIVILEGES;
或建立新帳號時指定:CREATE USER 'app'@'10.0.0.%' IDENTIFIED BY 'pass';。
| 指令 | 說明 |
|---|---|
mysql -u root -p | 提示輸入密碼 |
mysql -u root -pPassWord | 直接帶密碼(不安全,歷史會記錄) |
mysql -h 192.168.1.10 -u app -p | 遠程連線 |
mysql db_name -u user -p | 直接選擇資料庫 |
依最小權限原則建立專用帳號:
-- 僅需讀寫特定庫
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app_user'@'10.0.0.%' IDENTIFIED BY 'strong_pass';
-- 僅需讀取報表
GRANT SELECT ON report_db.* TO 'readonly'@'%' IDENTIFIED BY 'pass';
-- 賦予權限轉授能力
GRANT ALL ON mydb.* TO 'admin'@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION;
| 權限 | 說明 |
|---|---|
| FILE | 伺服器上讀寫檔案 |
| PROCESS | 查看/終止他人執行緒 |
| RELOAD | 重載權限表、刷新日誌 |
| SHUTDOWN | 關閉 MySQL 服務 |
| ALTER | 修改表結構 |
| CREATE | 建立庫/表 |
| DROP | 刪除表/庫 |
| INDEX | 建立/刪除索引 |
| SELECT/INSERT/UPDATE/DELETE | 資料增刪改查 |
| ALL | 所有權限(相當 root) |
| USAGE | 僅允許登入,無其他權限 |
mysql -u root -p
CREATE DATABASE school;
USE school;
CREATE TABLE teacher (
id INT(3) AUTO_INCREMENT PRIMARY KEY,
name CHAR(10) NOT NULL,
address VARCHAR(50) DEFAULT '深圳',
hire_date DATE
);
GRANT ALL ON school.* TO 'teacher_admin'@'localhost' IDENTIFIED BY 'pass';
EXIT;
# 匯入資料腳本
mysql -u root -p school < school_data.sql
# 檔案格式:欄位用 Tab 分隔,NULL 用 \N
LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE teacher
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';
| 指令 | 功能 |
|---|---|
SHOW DATABASES; | 列出所有資料庫 |
SHOW TABLES; | 列出當前庫資料表 |
DESC table_name; | 顯示表結構 |
SHOW CREATE TABLE t; | 顯示建表 SQL |
SHOW PROCESSLIST; | 查看當前連線/查詢 |
KILL 123; | 終止執行緒 ID |
FLUSH PRIVILEGES; | 重載權限 |
FLUSH LOGS; | 切換日誌檔案 |
SET GLOBAL max_connections=500; | 動態調整參數 |
mysql> SOURCE /path/script.sql;mysql -u user -p db < script.sqlmysql -u user -p -e "SELECT * FROM t;"