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

パスワードが指定されていない場合にMySQLルートログインを無効にするにはどうすればよいですか?

    MySQL / MariaDBの新しいバージョン(Debian Stretchなど)でこの動作が発生したユーザーは、mysql.userテーブルに「plugin」という列があることに注意する必要があります。 'unix_socket'プラグインが有効になっている場合、rootはパスワードを必要とせずにコマンドラインからログインできます。他のログインメカニズムは無効になります。

    その場合を確認するには:

    SELECT host, user, password, plugin FROM mysql.user;
    

    これは次のようなものを返すはずです(unix_socketが有効になっている場合):

    +-----------+------+--------------------------+-------------+
    | host      | user | password                 | plugin      |
    +-----------+------+--------------------------+-------------+
    | localhost | root | <redacted_password_hash> | unix_socket |
    +-----------+------+--------------------------+-------------+
    

    これを無効にして、rootにパスワードの使用を要求するには:

    UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
    FLUSH PRIVILEGES;
    

    注: MySQLの新しいバージョン(5.7.xなど)の@marioivangf(コメント内)で指摘されているように、プラグインを(空白ではなく)「mysql_native_password」に設定する必要がある場合があります。

    次に再起動します:

    service mysql restart
    

    問題が修正されました!:

    [email protected] ~# mysql
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
    

    出典: https://stackoverflow.com/a/44301734/3363571 @SakuraKinomotoに感謝します(これが役に立ったら、彼の答えに投票してください)。



    1. MySQLでユーザーのデフォルトスキーマを設定するにはどうすればよいですか

    2. MySQLストレージエンジンの最適化:高性能のためのInnoDB最適化の構成

    3. Javaでデータベースリスナーを作成するにはどうすればよいですか?

    4. mysqlをmysqliに変換する方法は?