介紹 MySQL/MariaDB 資料庫常用的使用者帳號管理指令,包含新增、移除帳號,更改密碼等。
新增資料庫
通常在新增使用者之前,會先建立一個要給使用者用的資料庫:
-- 新增資料庫 CREATE DATABASE `officeguide_db`;
新增使用者帳號
在新增使用者帳號之前,建議可以先檢查該使用者帳號是否存在,如果過去已經新增過,就把舊的帳號刪除:
-- 刪除既有的使用者帳號 DROP USER IF EXISTS 'officeguide'@'localhost';
新增一個使用者帳號,並設定密碼:
-- 建立使用者帳號,並設定密碼 CREATE USER 'officeguide'@'localhost' IDENTIFIED BY 'your_password';
最後設定使用者的存取權限,讓這個使用者可以對 officeguide_db
資料庫進行任何操作:
-- 設定使用者權限 GRANT ALL PRIVILEGES ON officeguide_db.* TO 'officeguide'@'localhost';
更改使用者密碼
如果使用者忘記了自己的密碼,可用 ALTER USER
指令來設定新密碼:
-- 更改使用者密碼 ALTER USER 'officeguide'@'localhost' IDENTIFIED BY 'new_password';
設定好之後,設定不會立即生效,若要讓系統立刻載入新設定值,要再執行這一行指令:
-- 讓設定生效 FLUSH PRIVILEGES;
資源限制
若希望限制使用者可使用的系統資源,可以使用以下幾種限制條件:
限制條件 | 說明 |
---|---|
MAX_QUERIES_PER_HOUR |
每小時可執行的指令數量上限(包含 update)。 |
MAX_UPDATES_PER_HOUR |
每小時可執行的 update 數量上限。 |
MAX_CONNECTIONS_PER_HOUR |
每小時可建立的連線數量上限。 |
MAX_USER_CONNECTIONS |
同時連線數量上限,若為 0 則會以 max_connections 為準,若 max_connections 亦為 0 則代表無限制。 |
MAX_STATEMENT_TIME |
單一指令執行時間上限,單位為秒。 |
這些限制條件可在建立使用者時,配合 WITH
加在指令的最後面,例如:
-- 建立使用者帳號,並設定資源限制 CREATE USER 'officeguide'@'localhost' IDENTIFIED BY 'your_password' WITH MAX_USER_CONNECTIONS 10 MAX_QUERIES_PER_HOUR 200;
如果要更改既有使用者的資源限制設定,可以使用 ALTER USER
,用法大同小異:
-- 更改使用者資源限制 ALTER USER 'officeguide'@'localhost' WITH MAX_USER_CONNECTIONS 10 MAX_QUERIES_PER_HOUR 200;
密碼有效期限
若想要設定使用者的密碼有效期限,可以在建立使用者時,加上 PASSWORD EXPIRE
設定:
-- 建立使用者,並設定密碼有效期限 CREATE USER 'officeguide'@'localhost' IDENTIFIED BY 'your_password' PASSWORD EXPIRE INTERVAL 120 DAY;
若要更改既有使用者的密碼有效期限,可用 ALTER USER
:
-- 更改密碼有效期限 ALTER USER 'officeguide'@'localhost' PASSWORD EXPIRE INTERVAL 120 DAY;
查詢使用者權限設定
如果想要查詢使用者的權限設定,看看該使用者可存取那些資料庫,可以使用以下指令:
-- 查詢使用者的權限設定 SHOW GRANTS FOR 'officeguide'@'localhost';
+--------------------------------------------------------------------------------------------------------------------+ | Grants for officeguide@localhost | +--------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'officeguide'@'localhost' IDENTIFIED BY PASSWORD '*9E72259BA9214F692A85B240647C4D95B0F2E08B' | | GRANT ALL PRIVILEGES ON `officeguide_db`.* TO 'officeguide'@'localhost' | +--------------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
停用帳號
若希望停用特定帳號,可以使用 LOCK
鎖定帳號功能:
-- 鎖定帳號(停用) ALTER USER 'officeguide'@'localhost' ACCOUNT LOCK;
若要重新啟用被鎖定的帳號,可以使用 UNLOCK
:
-- 解除鎖定(重新啟用) ALTER USER 'officeguide'@'localhost' ACCOUNT UNLOCK;