要するに、MariaDBで
UPDATE mysql.user SET plugin = 'mysql_native_password', 
      Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
NEWPASSWORDを必要なパスワードに置き換えます。
ここでの問題は、MariaDBまたはMySQLがインストール/更新されるとき(特にある時点でルートがパスワードなしで設定されている場合)、Usersテーブルでパスワードが実際に空(または無視)であり、ログインは対応するシステムユーザーに依存することですMySQLユーザーに。システムルートに切り替えて、次のように入力すると、次のようにテストできます。
mysql -uroot -p
次に、パスワードを入力しないか、間違ったパスワードを入力します。おそらくあなたは許可されます(# mysqlパスワードが無関係でユーザーが定義されているという単純な方法で、UNIXルートからログインすることさえできるかもしれません)。
それで何が起きているのでしょうか?さて、rootとしてログインして次の操作を行うと:
select User,host,plugin from mysql.user; 
+----------------+-----------+-----------------------+
| User           | host      | plugin                |
+----------------+-----------+-----------------------+
| root           | localhost | auth_socket           |
+----------------+-----------+-----------------------+
注意してくださいauth_socket(unix_socketMariaDBで読むことができます)。これらのソケットはパスワードを無視し、パスワードチェックなしで対応するUnixユーザーを許可します。これが、rootでログインできますが、別のユーザーではログインできない理由です。
そのため、解決策は、ユーザーを使用しないように更新しauth_socket/unix_socket、パスワードを適切に設定することです。
2017年のUbuntuバージョン16にあるMariaDB(<10.2、以下のコメントを参照)ではこれで十分です。NEWPASSWORDはパスワードです。mysql_native_passwordそのまま入力します。
UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
(プラグインを空に設定しても機能する可能性があります。YMMV。私はこれを試しませんでした。したがって、これは代替です。)
UPDATE mysql.user SET plugin = '', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
そうでなければ:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD';
それから 
FLUSH PRIVILEGES;
記録のために、ユーザーを削除して '%'で再作成するソリューションでは、データベースから完全にロックアウトされ、grantステートメントを正確に取得しない限り、他の問題を引き起こす可能性があります-既にあるルートを簡単に更新する方が簡単です。
私の経験では、他のユーザーは初期インストール/更新の一部ではなく手動で追加されるため、この問題はrootユーザーでのみ発生します。