緊急対策!MariaDB 10.0.29でrootパスワードを設定してもログイン可能になる問題
Mysql (MariaDB 10.0.29): Rootパスワードを設定したのにパスワードなしでログインできる?
この問題は、MariaDB 10.0.29を含むいくつかのバージョンの MySQL で発生する既知の問題です。root ユーザーにパスワードを設定しても、パスワードなしでログインできてしまうというものです。
原因
この問題は、auth_socket
認証プラグインがデフォルトで有効になっていることが原因です。このプラグインは、UNIX ソケットを使用しているクライアントであれば、パスワードなしで認証を許可します。
解決策
この問題を解決するには、以下のいずれかの方法で auth_socket
プラグインを無効にする必要があります。
方法 1: my.cnf ファイルを編集する
/etc/mysql/my.cnf
ファイルを開きます。- 以下の行を追加します:
default_authentication_plugin=mysql_native_password
- ファイルを保存して MySQL サーバを再起動します。
方法 2: mysql コマンドを使用する
- 以下のコマンドを実行して MySQL サーバに接続します:
mysql -u root
- 以下のコマンドを実行して
auth_socket
プラグインを無効にします:
SET GLOBAL default_authentication_plugin = 'mysql_native_password';
- 以下のコマンドを実行して変更を保存します:
FLUSH PRIVILEGES;
方法 3: MySQL Workbench を使用する
- MySQL Workbench を開き、接続プロファイルを作成します。
- 接続プロファイルで、
認証方法
をmysql_native_password
に設定します。 - サーバに接続します。
注意事項
auth_socket
プラグインを無効にすると、UNIX ソケットを使用しているクライアントはパスワードなしでログインできなくなります。- パスワードを安全に保つために、強力なパスワードを設定することを強くお勧めします。
改善点
- 解決策をより詳細に説明しました。
- 全体的に分かりやすく日本語で解説するように努めました。
# 方法 2: `mysql` コマンドを使用する
# MySQL サーバに接続
mysql -u root
# `auth_socket` プラグインを無効にする
SET GLOBAL default_authentication_plugin = 'mysql_native_password';
# 変更を保存
FLUSH PRIVILEGES;
このサンプルコードは、mysql
コマンドを使用して auth_socket
プラグインを無効にする方法を示しています。
- 最初の行は、
-u root
オプションを使用して root ユーザーとして MySQL サーバに接続します。 - 2番目の行は、
SET GLOBAL default_authentication_plugin = 'mysql_native_password'
コマンドを実行してauth_socket
プラグインを無効にします。 - 3番目の行は、
FLUSH PRIVILEGES
コマンドを実行して変更を保存します。
- このコードを実行する前に、
my.cnf
ファイルのバックアップを取っておくことをお勧めします。
他の方法
- 以下のコマンドを実行して
mysql_config_editor
ツールをインストールします:
sudo apt install mysql-config-editor
mysql_config_editor
--default-authentication-plugin
オプションをmysql_native_password
に設定します:
[mysqld]
default-authentication-plugin=mysql_native_password
方法 5: パッケージマネージャを使用する
使用している Linux ディストリビューションによっては、パッケージマネージャを使用して auth_socket
プラグインを無効にすることができます。詳細については、ディストリビューションのドキュメントを参照してください。
方法 6: Docker を使用する
Docker を使用している場合は、auth_socket
プラグインを無効にして MySQL イメージをビルドすることができます。詳細については、Docker のドキュメントを参照してください。
- これらの方法は、使用している MySQL のバージョンとディストリビューションによって異なる場合があります。
- 詳細については、MySQL のドキュメントまたはディストリビューションのドキュメントを参照してください。
mysql authentication passwords