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」があることを確認し、その場合は削除してください。