web-dev-qa-db-ja.com

MariaDbの管理者パスワードが機能していないようです

私は新鮮なUbuntu GnomeにMariaDbをインストールし、 mysql_secure_installation を実行しました。その後、適切な管理者パスワードを設定し、匿名ユーザーを削除しました。

その後、私は管理者パスワードに関するいくつかの奇妙な動作に気づきました:

  • コマンド_mysql -u root -p_を使用して通常のユーザーアカウントからログインしようとすると、常にエラーが発生します:ERROR 1698 (28000): Access denied for user 'root'@'localhost'
    mysql_secure_installation 以前に設定した正しいパスワードを入力したと確信しています...
  • ルートから_Sudo mysql -u root -p_を使用してコマンドを実行すると、実際に入力したパスワードに関係なく、常にデータベースにアクセスできます...

これは正常な動作ですか、何か問題がありますか、それともインストールをなんとかしてしまいましたか?

8
suamikim

その動作は、rootユーザーに対して plugin for socket authentication を有効にすることと一貫して聞こえます。MariaDBは、ソケット経由で受信したオペレーティングシステムの資格情報を信頼し、パスワードに依存しません。 Sudoを使用するか、rootとしてログオンすると、OSのrootになるため、データベースサーバーにrootとして接続できますが、他のOSユーザーはできません。

あなたはそのオプションを削除することができます:

$ Sudo mysql -u root

mysql> use mysql;
mysql> update user set plugin='' where User='root';
mysql> flush privileges;

その後、MariaDBのrootパスワードを持っているすべてのユーザーがrootとしてログオンできるはずの期待される動作が得られます。

もう1つの方法は、完全な管理者特権を持つrootではなく別のユーザーを設定し、管理目的でrootではなくそれを使用することです。

$ Sudo mysql -u root
mysql> CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'finley'@'localhost'
->     WITH GRANT OPTION;
16
HBruijn

使用するように指定されたHBruijnからの回答

update user set plugin='' where User='root';

しかし、これは私にとってログインシステムを壊しました。誰もログインできなくなったためです(正しいパスワードを使用しているかどうか、Sudoを使用しているかどうか)。

私がそれを機能させるには、代わりにこれを使用する必要がありました:

update user set plugin="mysql_native_password" where User='root';
0
Alex