CentOS7でMySQLにログインできない

CentOS7にMySQL5.7をインストールし、/var/log/mysql/mysqld.logに書かれている初期パスワードを用いてログインしようとすると

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

と出てしまう。CentOS7はsystemdで管理しているためmysqld_safeを使用できないので、systemctlから設定を行う。

$systemctl stop mysqld

$systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

$systemctl start mysqld

$mysql -u root

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('{パスワード}')
    -> WHERE User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit

$systemctl stop mysqld

$systemctl unset-environment MYSQLD_OPTS

$systemctl start mysqld

とすると、設定したパスワードでMySQLにログインできるようになります!