MySQL新增用戶及賦予權限


創建用戶

USE mysql; #創建用戶需要操作 mysql 表
# 語法格式為 [@'host']  host 為 'localhost' 表示本地登錄用戶,host 為 IP地址或 IP 地址區間,表示指定IP地址的主機可登錄,host 為 "%",表示所有主機都可登錄,省略代表所有主機
CREATE USER 'username'[@'host'] IDENTIFIED BY 'password';
# eg. 常見 local_user 用戶可以在所有主機登錄,密碼為 123456
CREATE USER 'local_user' IDENTIFIED BY '123456';
# eg. 創建 local_user 只允許在本地登錄
CREATE USER 'local_user'@'localhost' IDENTIFIED BY '123456';

查看用戶權限

# 可以通過查詢 user 表獲取 語法格式為
SELECT  privileges|* FROM user WHERE `user` = 'username';
# eg. 查看 local_user 的權限
SELECT * FROM user WHERE `user` = 'local_user';
# 也可以用 SHOW GRANTS 查看
SHOW GRANTS FOR 'username' [@host];
# eg.
SHOW GRANTS FOR local_user;

賦予用戶權限

# 語法格式
GRANT privileges ON database.table TO 'username'@'host' [IDENTIFIED BY 'password'];
# eg. 賦予 local_user 在所有主機的所有權限,但不包含給其他賬號賦予權限的權限
GRANT all ON *.* TO 'local_user'@'%';
# 刷新權限 權限更新后刷新才會起作用
FLUSH PRIVILEGES;
  • GRANT命令說明:
    • priveleges (權限列表),可以是all, 表示所有權限,也可以是select,update等權限,多個權限的名詞,相互之間用逗號分開。
    • ON 用來指定權限針對哪些庫和表。格式為 數據庫 .表名 ,點號前面用來指定數據庫名,點號后面用來指定表名,*.* 表示所有數據庫所有表。
    • TO 表示將權限賦予某個用戶, 格式為username@host,@前面為用戶名,@后面接限制的主機,可以是IP、IP段、域名以及%,%表示任何地方。注意:這里%有的版本不包括本地,以前碰到過給某個用戶設置了%允許任何地方登錄,但是在本地登錄不了,這個和版本有關系,遇到這個問題再加一個localhost的用戶就可以了
    • IDENTIFIED BY 指定用戶的登錄密碼,該項可以省略(某些版本下回報錯,必須省略)。
    • WITH GRANT OPTION 這個選項表示該用戶可以將自己擁有的權限授權給別人。注意:經常有人在創建操作用戶的時候不指定WITH GRANT OPTION選項導致后來該用戶不能使用GRANT命令創建用戶或者給其它用戶授權。
      備注:可以使用GRANT重復給用戶添加權限,權限疊加,比如你先給用戶添加一個select權限,然后又給用戶添加一個insert權限,那么該用戶就同時擁有了select和insert權限。
  • 授權原則說明:
    • 只授予能滿足需要的最小權限,防止用戶干壞事。比如用戶只是需要查詢,那就只給select權限就可以了,不要給用戶賦予update、insert或者delete權限。
    • 創建用戶的時候限制用戶的登錄主機,一般是限制成指定IP或者內網IP段。
    • 初始化數據庫的時候刪除沒有密碼的用戶。安裝完數據庫的時候會自動創建一些用戶,這些用戶默認沒有密碼。
    • 為每個用戶設置滿足密碼復雜度的密碼。
    • 定期清理不需要的用戶。回收權限或者刪除用戶。

收回用戶權限

# 語法格式
REVOKE privileges ON database.table FROM 'username'@'host';
# eg. 收回 local_user 的寫入和更新權限
REVOKE insert,update ON *.* FROM 'local_user'@'%';

刪除用戶

# 語法格式
DROP USER 'username'@'host';
# eg. 刪除本地用戶 local_user
DROP USER 'local_user'@'localhost';


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM