sql >> データベース >  >> RDS >> Mysql

エラー1698(28000):ユーザー'root'@'localhost'のアクセスが拒否されました

    UbuntuやMySQLなどの一部のシステムでは、UNIXauth_socketプラグイン デフォルトで。

    基本的には、次のことを意味します。それを使用するdb_usersは、システムユーザーの資格情報によって「認証」されます。 rootかどうかを確認できます ユーザーは次のように設定されます:

    sudo mysql -u root # I had to use "sudo" since it was a new installation
    
    mysql> USE mysql;
    mysql> SELECT User, Host, plugin FROM mysql.user;
    
    +------------------+-----------------------+
    | User             | plugin                |
    +------------------+-----------------------+
    | root             | auth_socket           |
    | mysql.sys        | mysql_native_password |
    | debian-sys-maint | mysql_native_password |
    +------------------+-----------------------+
    

    クエリでわかるように、root ユーザーはauth_socketを使用しています プラグイン。

    これを解決するには2つの方法があります:

    1. ルートを設定できます mysql_native_passwordを使用するユーザー プラグイン
    2. 新しいdb_userを作成できます あなたとsystem_user (推奨)

    オプション1:

    sudo mysql -u root # I had to use "sudo" since it was new installation
    
    mysql> USE mysql;
    mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
    mysql> FLUSH PRIVILEGES;
    mysql> exit;
    
    sudo service mysql restart
    

    オプション2: (YOUR_SYSTEM_USERをお持ちのユーザー名に置き換えてください)

    sudo mysql -u root # I had to use "sudo" since is new installation
    
    mysql> USE mysql;
    mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
    mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
    mysql> FLUSH PRIVILEGES;
    mysql> exit;
    
    sudo service mysql restart
    

    オプション#2を使用する場合は、システムユーザー名としてMySQLに接続する必要があることに注意してください(mysql -u YOUR_SYSTEM_USER

    注: 一部のシステム(例: Debian 9 (ストレッチ))'auth_socket'プラグインは'unix_socket'と呼ばれます したがって、対応するSQLコマンドは次のようになります。UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';

    @andyのコメントから、MySQL8.x.xがauth_socketを更新/置換したようです。 caching_sha2_passwordの場合 。これをテストするためのMySQL8.x.xのシステムセットアップがありません。ただし、上記の手順は、問題を理解するのに役立ちます。返信は次のとおりです:

    MySQL 8.0.4での変更点の1つは、新しいデフォルトの認証プラグインが「caching_sha2_password」であるということです。新しい「YOUR_SYSTEM_USER」にはこの認証プラグインがあり、「mysql -u YOUR_SYSTEM_USER -p」を使用してBashシェルからログインし、プロンプトでこのユーザーのパスワードを入力できます。 「UPDATEuserSETplugin」ステップは必要ありません。

    8.0.4のデフォルトの認証プラグインの更新については、 https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/



    1. オラクルはコミットされていない読み取りオプションを許可していますか?

    2. Oracleのデュアルテーブルとは何ですか?

    3. C#からデータベースを一括挿入するための最良の方法は何ですか?

    4. Excelデータソースの接続文字列パラメータ