首頁  >  文章  >  運維  >  docker容器mysql授權失敗怎麼辦

docker容器mysql授權失敗怎麼辦

PHPz
PHPz原創
2023-04-18 09:47:07785瀏覽

近年來,Docker容器技術被越來越廣泛地應用於各種應用場景中,它提供了一種輕量級、快速部署和管理的方法,使得應用開發和運作更加高效。在使用Docker容器技術時,我們可能會遇到一些問題,例如容器中的MySQL授權失敗。本文將介紹如何解決這個問題。

Docker容器中的MySQL授權失敗可能會導致存取拒絕等問題,這種情況通常是由於容器中沒有正確設定使用者授權所導致的。在Docker容器中,MySQL使用者授權主要有兩種方式:基於密碼的授權和基於身分驗證外掛程式的授權。

基於密碼的授權

在基於密碼的授權中,MySQL使用者需要在容器中建立帳號密碼,並從外部存取容器時使用這些憑證進行授權。透過下列步驟可以建立一個MySQL帳號:

  1. 進入Docker容器中的MySQL伺服器

首先,我們需要進入容器中的MySQL伺服器,這可以透過以下命令實作:

docker exec -it mysql-container mysql -u root -p

這個指令將啟動一個互動式的終端並連接到容器中的MySQL伺服器。

  1. 建立新使用者

在MySQL終端機中,可以使用下列指令建立新使用者:

CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';

其中,'newuser'是新使用者的用戶名,'%'表示該用戶可以從任何IP位址訪問,'password'是新用戶的密碼。

  1. 授權新用戶

同樣,在MySQL終端機中,可以使用以下指令授權新用戶:

GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';

這個指令將授予新用戶對所有資料庫和表格的存取權限。

  1. 刷新權限

最後,為了讓變更生效,我們需要刷新權限:

FLUSH PRIVILEGES;

現在,新使用者已經被成功建立並授權,可以使用它的使用者名稱和密碼從外部存取MySQL容器。

基於驗證外掛程式的授權

在基於驗證外掛程式的授權中,MySQL伺服器使用外部驗證外掛程式進行使用者認證,例如使用SSL憑證、Kerberos等,以便更安全地驗證用戶。在Docker容器中,可以使用下列步驟設定驗證外掛程式:

  1. 將外掛程式安裝到MySQL容器中

為了使用驗證插件,我們需要將外掛程式安裝到Docker容器中的MySQL伺服器。這可以透過以下步驟實現:

docker cp auth_plugin.so mysql-container:/usr/lib/mysql/plugin/

這個指令將插件檔案auth_plugin.so複製到容器中的/usr/lib/mysql/plugin/目錄中。

  1. 啟用外掛程式

然後,我們需要在MySQL設定檔中啟用外掛程式。可以透過以下命令修改設定檔:

docker exec -it mysql-container bash
vi /etc/mysql/my.cnf

在啟用身份驗證外掛程式的部分,需要新增以下行:

[mysqld]
plugin-load = auth_plugin.so
  1. 建立使用者

在MySQL終端機中,我們需要建立一個基於插件的用戶,這可以透過以下命令實現:

CREATE USER 'newuser'@'%' IDENTIFIED WITH auth_plugin AS 'cred';

其中,'newuser'是新用戶的用戶名,'%'表示該用戶可以從任何IP位址進行訪問,'cred'是一個憑證加密字串,用於在使用插件時驗證使用者。

  1. 授權新使用者

同樣,在MySQL終端機中,我們需要使用以下指令授權新使用者:

GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';

這個指令將會被授予新使用者對所有資料庫和表格的存取權限。

  1. 刷新權限

最後,我們需要刷新權限:

FLUSH PRIVILEGES;

現在,基於外掛程式的使用者已經被成功建立和授權,並且可以使用它的憑證從外部存取MySQL容器。

總結

在Docker容器中,MySQL授權失敗可能會導致存取拒絕等問題。本文介紹了兩種MySQL使用者授權方式:基於密碼的授權和基於身分驗證外掛程式的授權。無論使用哪種方式,都需要正確設定使用者授權才能從外部存取容器中的MySQL伺服器。

以上是docker容器mysql授權失敗怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn