MariaDBはすべてのパスワードを受け入れます。

MariaDBはすべてのパスワードを受け入れます。

Debian 9.1 で MariaDB 10.1.23-MariaDB-9+deb9u1 を実行します。 MariaDBがインストールされた新しいオペレーティングシステムのインストールapt-get install mariadb-server mariadb-client

明らかに、MariaDBはインストール時にルートパスワードを要求しないので、後で設定します。

# mysql -uroot
> select user from mysql.user;
+------+
| user |
+------+
| root |
+------+

いいですね。ルートはすでに存在します。パスワードを変更してください。

> set password for 'root'@'localhost' = PASSWORD('P@ssw0rd');
> flush privileges;
> exit

効果的ですか?

# mysql -uroot -pblabla
MariaDB [(none)]>

パスワードを設定するのは問題ありませんが、MariaDBが空のパスワードであってもランダムなパスワードを受け入れるのはなぜですか?

このインストールでは ALTER USER ステートメントは許可されません。

答え1

答え:https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/:

明らかに16.04(または5.7のインストール?)にmysql-serverをインストールすると、パスワードではなくauth_socketプラグインを介してrootアクセスが許可されます。 sudo mysql -u root(nb w / oaパスワード)を実行するとmysqlコンソールが表示され、root以外のユーザーとしてコマンドを実行するとパスワードの入力を求められます。

認証バックエンドではパスワードを確認しないため、パスワードを変更しても大きな違いはないようです。

この auth_socket プラグインを無効にするには、mysql プロンプトで次のようにします。

update mysql.user set plugin=null where user='root';
flush privileges;

このため、MariaDBには[Linux]ルートパスワードも必要です。

深い議論と回答をいただいたjesse-bとderobertに感謝します。

答え2

また、my.cnfに「skip-grant-tables」があることを確認し、その場合は削除してください。

関連情報