AzureのCentOS7.5にMySQL8.0をインストールした際、/var/log/mysqld.logに初期パスワードが出力されなかったので(パーミッションの問題?)、その際の対応をメモ。
結論
- パスワードをリセットするしかない
やり方
とりあえずmysqldを停止させる。
sudo systemctl stop mysqld
mysqldをセーフモード?で起動させる。
CentOS7環境ではmysqld_safeコマンドは使えないみたいなので環境変数で起動オプションを設定。
sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
mysqldを起動させる。
sudo systemctl start mysqld &
コンソールが戻ってくるよう&をつけている。
rootでログイン
mysql -u root
パスワードを一度nullでリセット。
use mysql;
UPDATE mysql.user SET authentication_string=null WHERE User='root';
一応反映。
FLUSH PRIVILEGES;
mysqlを抜けて、mysqldを停止させる。
sudo systemctl stop mysqld
環境変数をリセット。
sudo systemctl unset-environment MYSQLD_OPTS
mysqldを起動。
systemctl start mysqld
パスワード無しで入れることを確認。
sudo mysql -u root -p
あとは、初期状態ならmysql_secure_installation等でパスワードを設定するか、
mysql_secure_installation
Alterでパスワードを変更する。
ALTER USER 'root'@'localhost' identified BY 'hogehoge';
以上。