如何在MySQL中建立新使用者並授予許可權
原作者:Etel Sverdlov 轉載&翻譯來源:https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql
介紹
MySQL是一種開源資料庫管理軟體,可幫助使用者儲存,組織和以後檢索資料。它有多種選項可以為表格和資料庫中的特定使用者授予細微差別的許可權 - 本教程將簡要介紹一些眾多選項。
重點意味著什麼
在本教程中,將突出顯示使用者需要輸入或自定義的所有行!其餘的應該主要是複製和可接受的。
如何建立新使用者
在MySQL教程的第1部分中,我們以root使用者身份完成了MySQL中的所有編輯,可以完全訪問所有資料庫。但是,如果可能需要更多限制,則可以使用自定義許可權建立使用者。
讓我們從在MySQL shell中建立一個新使用者開始:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
注意:在本教程中在MySQL shell中新增使用者時,我們將指定使用者的主機localhost
而不是伺服器的IP地址。localhost
是一個主機名,意思是“這臺計算機”,MySQL專門處理這個特定的主機名:當有該主機的使用者登入MySQL時,它將嘗試使用Unix套接字檔案連線到本地伺服器。因此,localhost
mysql
客戶端連線到本地MySQL伺服器時使用。
此時,newuser無權對資料庫執行任何操作。事實上,即使newuser嘗試登入(使用密碼,密碼),他們也無法訪問MySQL shell。
因此,首先要做的是為使用者提供他們所需資訊的訪問許可權。
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
此命令中的星號指的是它們可以訪問的資料庫和表(分別) - 此特定命令允許使用者讀取,編輯,執行和執行所有資料庫和表中的所有任務。
請注意,在此示例中,我們授予newuser對資料庫中所有內容的完全root訪問許可權。雖然這有助於解釋一些MySQL概念,但對於大多數用例來說可能是不切實際的,並且可能會使您的資料庫的安全性處於高風險。
完成要為新使用者設定的許可權後,請務必重新載入所有許可權。
FLUSH PRIVILEGES;
您的更改現在將生效。
如何授予不同的使用者許可權
以下是使用者可以享受的其他常見可能許可權的簡短列表。
- 所有特權 - 正如我們之前看到的,這將允許MySQL使用者完全訪問指定的資料庫(或者如果沒有選擇資料庫,則跨系統進行全域性訪問)
- CREATE-允許他們建立新的表或資料庫
- DROP-允許他們刪除表或資料庫
- DELETE-允許他們從表中刪除行
- INSERT-允許它們將行插入表中
- SELECT-允許他們使用該
SELECT
命令讀取資料庫 - UPDATE - 允許他們更新錶行
- GRANT OPTION-允許他們授予或刪除其他使用者的許可權
要為特定使用者提供許可權,您可以使用此語法框架:
GRANT type_of_permission ON database_name.table_name TO ‘username’@'localhost’;
PS:一條授權命令可以配置多個許可權,許可權之間用英文逗號隔開
:"GRANT UPDATE, SELECT ON [database name].[table name] TO ‘[username]’@‘localhost’;"
如果要授予它們訪問任何資料庫或任何表的許可權,請確保在資料庫名稱或表名稱的位置放置星號(*)。
每次更新或更改許可權時,請務必使用“重新整理許可權”命令。
如果您需要撤消許可權,則語法結構幾乎與授予許可權相同:
REVOKE type_of_permission ON database_name.table_name FROM ‘username’@‘localhost’;
請注意,在撤消許可權時,語法要求您使用FROM
,而不是TO
在授予許可權時使用。
您可以通過執行以下命令來檢視使用者的當前許可權:
SHOW GRANTS username
就像您可以使用DROP刪除資料庫一樣,您可以使用DROP完全刪除使用者:
DROP USER ‘username’@‘localhost’;
要測試新使用者,請鍵入以下內容登出:
quit
並在終端中使用此命令重新登入:
mysql -u [username] -p
結論
完成本教程後,您應該瞭解如何新增新使用者並在MySQL資料庫中授予他們各種許可權。從這裡開始,您可以繼續探索和試驗資料庫的不同許可權設定,或者您可能希望瞭解有關某些更高級別MySQL配置的更多資訊。
有關MySQL基礎知識的更多資訊,我們建議您檢視以下教程: