自分の場合、忘れたというかパスワードの方式がいつのまにか書き換えられてたような感じでした。
その際に対応した手順を残しておきます。
まず my.cnf の [mysqld]に「skip-grant-tables」を追記します。
これはログイン時にパスワードの認証を行わなくするためのものです。
[mysqld] (中略) skip-grant-tables
設定を反映させるためmysqldを再起動します。
systemctl restart mysqld
パスワードの入力無しでmysqlのコンソールに入ります。
ここで次のようにパスワードを空っぽにするSQLを実行します。
これはこの状態のときalter userが使えないのと、MySQL8ではpassword関数が存在しないためです。
mysql> update mysql.user set authentication_string = null where User = 'root';
その後、my.cnfからskip-grant-tablesの記述を除き、再びmysqldを再起動します。
これでrootはパスワード無しでmysqlのコンソールに入れるようになりましたので、いつも通りにパスワードを設定します。
mysql> alter user root@localhost identified by 'パスワード';
以上で新しく設定したパスワードでログインできるようになります。