MySQL 使用者管理採用「帳號@主機」模型,權限精細至欄位層級。本文整理從登入、建庫、建立使用者、授權到密碼管理的常用指令,適合快速查閱。
# 進入 bin 目錄(視安裝路徑調整)
cd /usr/local/mysql/bin
# 以 root 登入(首次安裝無密碼直接 Enter)
mysql -u root -p
# 方法 1:mysqladmin(舊密碼為空時)
mysqladmin -u root password 'new_password'
# 方法 2:SQL 指令(推薦,適用所有版本)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
-- 建立資料庫
CREATE DATABASE shopex CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 顯示所有資料庫
SHOW DATABASES;
-- 切換資料庫
USE shopex;
-- 建立僅限本地登入的使用者
CREATE USER 'test'@'localhost' IDENTIFIED BY '1234';
-- 授予指定資料庫所有權限
GRANT ALL PRIVILEGES ON shopex.* TO 'test'@'localhost';
-- 刷新權限生效
FLUSH PRIVILEGES;
| 需求 | GRANT 範例 |
|---|---|
| 全庫所有權限(含 GRANT OPTION) | GRANT ALL ON *.* TO 'admin'@'%' WITH GRANT OPTION; |
| 特定資料庫讀寫 | GRANT SELECT, INSERT, UPDATE, DELETE ON db.* TO 'dev'@'%'; |
| 唯讀帳號 | GRANT SELECT ON *.* TO 'readonly'@'%'; |
| 僅限特定表 | GRANT SELECT, UPDATE ON db.orders TO 'app'@'%'; |
| 欄位級權限 | GRANT SELECT (id, name), UPDATE (status) ON db.users TO 'hr'@'%'; |
-- 查看使用者
SELECT User, Host, authentication_string FROM mysql.user;
-- 修改密碼
ALTER USER 'test'@'localhost' IDENTIFIED BY 'newpass';
-- 重命名使用者
RENAME USER 'test'@'localhost' TO 'test2'@'localhost';
-- 刪除使用者
DROP USER 'test'@'localhost';
-- 查看權限
SHOW GRANTS FOR 'test'@'localhost';
-- 撤銷權限
REVOKE ALL PRIVILEGES ON shopex.* FROM 'test'@'localhost';
-- 查看可用外掛
SHOW PLUGINS;
-- 建立使用 caching_sha2_password(預設)
CREATE USER 'app'@'%' IDENTIFIED WITH caching_sha2_password BY 'pass';
-- 相容舊驅動程式使用 mysql_native_password
CREATE USER 'legacy'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';
% 通配主機,限制具體 IP 或子網(如 'app'@'192.168.1.%')。SELECT * FROM information_schema.USER_PRIVILEGES;。ALTER USER 'app'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;。DROP USER ''@'localhost'; DROP USER ''@'%';。skip-grant-tables 啟動參數。