全部產品
Search
文件中心

Application Real-Time Monitoring Service:為Prometheus建立MySQL訪問帳號

更新時間:Jul 06, 2024

使用Prometheus收集MySQL資料庫監控資料時,需要建立一個供Prometheus使用的MySQL訪問帳號,並最小化授予唯讀許可權。本文將以mysqld_exporter為例,為您示範建立的全部步驟。

樣本說明

  • $mysql>為命令提示字元,在輸入命令時,請避免輸入提示符。

  • #--為注釋首碼,在輸入命令時,請避免輸入注釋首碼及注釋內容。

操作步驟

說明

MySQL 8.0版本之後禁止使用GRANT語句建立新使用者,建立使用者與授權操作需要分開執行。因此,本文樣本將分為建立授權兩個步驟。

MySQL 8.0版本之前的使用者可以在登入帳號後,參考步驟三:授權所示操作和注釋,建立並授權賬戶。

步驟一:登入root賬戶或管理員賬戶

啟動並登入MySQL,以root使用者為例。

$ mysql -u root -p

# 在Enter password後輸入root使用者密碼
Enter password: password

步驟二:建立帳號

  1. 在MySQL命令列中執行以下命令,建立一個帳號mysqld_exporter

    mysql> CREATE USER 'mysqld_exporter'@'localhost' IDENTIFIED BY 'password';
    • localhost:允許串連的主機IP,可根據實際情況替換。

    • mysqld_exporterpassword是自訂的使用者名稱和密碼,可以根據實際情況進行替換。

  2. 驗證(可選)

    在命令列中執行以下命令,若查詢到使用者及對應主機資訊,則使用者mysqld_exporter建立成功。

    -- 從mysql.user表中查詢使用者資訊
    mysql> SELECT User,Host FROM mysql.user WHERE User = 'mysqld_exporter';
    
    -- 查詢結果
    +-----------------+-----------+
    | User            | Host      |
    +-----------------+-----------+
    | mysqld_exporter | localhost |
    +-----------------+-----------+

步驟三:授權

  1. 在命令列中執行授權命令,對mysqld_exporter賬戶進行最小化授權。

    -- 添加對所有表的主從伺服器狀態檢查許可權和進程查看許可權。
    -- 直接使用GRANT語句建立新使用者時,建議在末尾添加[IDENTIFIED BY 'password']以設定使用者密碼。
    mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysqld_exporter'@'localhost';
    
    -- 添加performance_schema.* 表的讀取許可權。
    mysql> GRANT SELECT ON performance_schema.* TO 'mysqld_exporter'@'localhost';
    
    -- 重新載入許可權表,使帳號授權生效。
    mysql> FLUSH PRIVILEGES;
    • REPLICATION CLIENT:授權語句,允許賬戶檢查主/從伺服器狀態。

    • PROCESS:授權語句,允許賬戶查看MySQL中的進程資訊。

  2. 驗證(可選)

    在命令列中執行以下命令,可檢查使用者是否已被授予相應許可權。

    -- 查看使用者持有許可權
    mysql> SHOW GRANTS FOR 'mysqld_exporter'@'localhost';
    
    -- 查詢結果
    +---------------------------------------------------------------------------+
    | Grants for mysqld_exporter@localhost                                      |
    +---------------------------------------------------------------------------+
    | GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysqld_exporter'@'localhost' |
    | GRANT SELECT ON performance_schema.* TO 'mysqld_exporter'@'localhost'     |
    +---------------------------------------------------------------------------+

常見問題及解決方案

  • Operation CREATE USER failde for 'usernam'@'hostname'

    這個錯誤表示建立使用者失敗,因為已經存在具有相同名稱的使用者。要解決此問題,可以首先嘗試刪除現有使用者,然後再建立新的使用者。刪除使用者命令:

    mysql> DROP USER 'username'@'hostname';
  • Access denied for user 'username'@'hostname'(using password: YES/NO)

    這個錯誤表示MySQL伺服器拒絕了串連嘗試,因為提供的使用者名稱或密碼不正確。要解決此問題,可以檢查使用的使用者名稱和密碼是否正確,並確保已為使用者授予適當的許可權。

  • Can't find any matching row in the user table

    這個錯誤表示使用的使用者名稱或主機名稱在MySQL許可權列表中不存在。要解決此問題,可以檢查是否有拼字錯誤,並確保正確地輸入了主機名稱。如確認拼字無誤可嘗試使用FLUSH PRIVILEGES命令重新整理許可權列表。

相關文檔

使用Prometheus收集MySQL資料庫監控資料的具體操作,請參考如何使用Prometheus監控MySQL