Plesk でデータベースまたはデータベースユーザの管理を試みると "Access denied" エラーが発生します

Created:

2016-11-16 13:06:06 UTC

Modified:

2017-08-08 13:12:13 UTC

2

Was this article helpful?


Have more questions?

リクエストを送信

Plesk でデータベースまたはデータベースユーザの管理を試みると "Access denied" エラーが発生します

症状

  • Plesk に以下のエラーが表示されます。

    SQLSTATE[HY000] [1045] Access denied for user 'admin'@'localhost' (using password:  YES)

    このエラーは以下の状況で発生します。- 契約またはドメインの削除/追加/変更時- データベースの削除/追加/変更時- メールボックスの削除/追加/変更時

    ドメイン、メール、データベース、または契約の追加または削除を試みても、同じエラーが発生する可能性があります。

  • "Access denied" エラーは、データベースまたはデータベースユーザの管理を試みると発生します。

    Error: Connection to the database server has failed because the supplied account does not possess administrative privileges: Access denied; you need the RELOAD privilege for this operation

    注: このエラーは、上記の例の "RELOAD" だけではなく、すべての MySQL 権限に関連する可能性があります。

原因

このエラーの意味は、Plesk で使用される MySQL 管理者アカウントに、MySQL サーバでデータベースまたはユーザを管理するための適切な権限がないことを意味します。

解決策

  1. MySQL サーバに対して有効なユーザ名/パスワードが指定されていることを確認します。 [Tools & Settings]>[Database servers] に進みます。 alttext アイコンは、接続が成功したことを意味します。

  2. ローカル MySQL サーバに対して skip_grant_tables オプションが有効ではないことを確認します。

    Windows

    "%plesk_dir%"\\MySQL\\Data\\my.ini で、 [PleskSQLServer] セクションの下に skip_grant_tables オプションが含まれていないことを確認します。もし含まれる場合には、このオプションを削除して Plesk SQL server サービスを再起動します。

    Linux

    /etc/my.cnf ファイルで [mysqld] セクションの下に skip_grant_tables オプションが含まれていないことを確認します。もし含まれる場合には、このオプションを削除して mysqld サービスを再起動します。

  3. 問題が解決しない場合、問題のある MySQL サーバに管理者アカウントでログインするか、MySQL を skip-grant-tables モードで再起動します(KB 記事 213381869 の説明を参照)。次に、以下の例のように、管理者アカウントに正しい権限がセットされていることを確認します。

    Windows の場合:

    > cd %plesk_dir%\\MySQL\\bin
    > mysql -uadmin -P8306

    Linux の場合:

    # plesk db

    次に:

    mysql> use mysql;
    mysql> select * from user where user='admin' \\G
    *************************** 1. row ***************************
    Host: localhost
    User: admin
    Password: 3d89770b0d299d60
    Select_priv: Y
    Insert_priv: Y
    Update_priv: Y
    Delete_priv: Y
    Create_priv: Y
    Drop_priv: Y
    Reload_priv: Y
    Shutdown_priv: Y
    Process_priv: Y
    File_priv: Y
    Grant_priv: Y
    References_priv: Y
    Index_priv: Y
    Alter_priv: Y
    Show_db_priv: Y
    Super_priv: Y
    Create_tmp_table_priv: Y
    Lock_tables_priv: Y
    Execute_priv: Y
    Repl_slave_priv: Y
    Repl_client_priv: Y
    ssl_type:
    ssl_cipher:
    x509_issuer:
    x509_subject:
    max_questions: 0
    max_updates: 0
    max_connections: 0
    1 row in set (0.00 sec)

MySQL 管理者のユーザ名は、上の例と異なる可能性があります。Plesk なしでリモート MySQL サーバを使用する場合、MySQL 管理者アカウント名は root です。

MySQL サーバのバージョンが 5.5 以降の場合、 user.plugin および user.authentication_string が空になっており、 NULL ではないことを確認してください。

mysql> update mysql.user set authentication_string="", plugin="" where user='admin';

権限が設定されていない場合、 GRANT PRIVILEGE クエリで追加できます。詳しくは、MySQL のドキュメンテーションを参照してください: Grant syntax Causes of Access-Denied Errors

他にご質問がございましたら、リクエストを送信してください
ログインしてコメントを残してください。