從建立使用者、資料庫、授權、密碼變更到刪除帳號,本文提供標準化操作流程與指令模板,適用於 MySQL 5.7/8.0 生產環境。
mysql -u root -p
INSERT INTO mysql.user (Host, User, Password, ssl_cipher, x509_issuer, x509_subject)
VALUES ('localhost', 'phplamp', PASSWORD('1234'), '', '', '');
FLUSH PRIVILEGES;
MySQL 8.0 推薦語法:
CREATE USER 'phplamp'@'localhost' IDENTIFIED BY '1234';
mysql -u phplamp -p
CREATE DATABASE phplampDB;
| 場景 | 指令 |
|---|---|
| 全權限(開發/測試) | GRANT ALL PRIVILEGES ON phplampDB.* TO 'phplamp'@'localhost' IDENTIFIED BY '1234'; |
| 唯讀/寫入(生產應用) | GRANT SELECT, INSERT, UPDATE, DELETE ON phplampDB.* TO 'phplamp'@'localhost' IDENTIFIED BY '1234'; |
| 僅查詢(報表/BI) | GRANT SELECT ON phplampDB.* TO 'report'@'%' IDENTIFIED BY 'readonly'; |
FLUSH PRIVILEGES;
-- 刪除帳號
DROP USER 'phplamp'@'localhost';
-- 或舊版相容
DELETE FROM mysql.user WHERE User='phplamp' AND Host='localhost';
FLUSH PRIVILEGES;
-- 刪除資料庫
DROP DATABASE phplampDB;
UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='phplamp' AND Host='localhost';
FLUSH PRIVILEGES;
ALTER USER 'phplamp'@'localhost' IDENTIFIED BY 'newpass';
| 操作 | 指令 |
|---|---|
| 列出資料庫 | SHOW DATABASES; |
| 切換資料庫 | USE db_name; |
| 列出資料表 | SHOW TABLES; |
| 檢視表結構 | DESCRIBE table_name; / SHOW COLUMNS FROM table_name; |
| 刪除資料表 | DROP TABLE table_name; |
| 查看當前資料庫 | SELECT DATABASE(); |
| 查看當前使用者 | SELECT USER(); |
| 查看使用者權限 | SHOW GRANTS FOR 'user'@'host'; |
GRANT ALL 或 WITH GRANT OPTION。'user'@'10.0.0.%' 或 'user'@'localhost',避免 % 萬用字元。validate_password 元件強制長度、大小寫、特殊字元。SELECT User, Host FROM mysql.user; 掃描無用/過期帳號。mysqldump --no-data mysql > grants.sql 版本化管理。建立標準化 SOP,納入自動化部署腳本,才能確保資料庫存取控制持續合規。