資料庫

MySQL/MariaDB 資料庫使用者帳號管理教學

介紹 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;

參考資料:G. T. WangMariadb 官方網站LINUX 技術手札Linuxize

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

10 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

10 個月 ago