【MySQL】CentOS7で mysqld_safe を実行する方法
【概要】
MySQLでの作業中、なんらかの原因で「root ユーザーでログイン出来ない」なんてことが
あるかと思います。
そんな時、MySQLをセーフモードで起動するとrootユーザーの再作成、パスワードの再設定をすることが可能です。
※今回は既存データをリセットしている為、参考になさる時はご注意
【環境】
OS : CentOS 7.8.2003
MyQSL(MariaDB) : MySQL Ver 15.1 Distrib 5.5.64-MariaDB
※CentOS7からMySQLではなくMariaDBが標準になっている
rootユーザーでログインできない事を確認
mysql -u root -p
サービス停止
systemctl status mariadb systemctl stop mariadb systemctl status mariadb
→ 停止したことを確認します。
MySQLをセーフモードで起動
今回はオプション[–skip-grant-tables]を使用するので、このオプションについて紹介いたします。
通常の起動
mysql.plugins システム変数を読み取ることによって、
ロードするプラグインを判別することが可能。
[–skip-grant-tables]指定での起動
mysql.plugins テーブルを参照せず、そこにリストされているプラグインを読み込まない。
それではセーフモードで起動しましょう。
mysqld_safe --skip-grant-tables &
別窓でコマンドラインを開き、MySQLログイン
mysql
※セーフモードで起動中なのでパスワード無しでログインが可能です。
ユーザーの設定を確認
MariaDB [(none)]> use mysql;
既存テーブル、ユーザーを削除
本環境では使用中のユーザー・テーブルも無く、余りユーザー・テーブルがちらほら存在していたので、既存データも一緒に削除してしまいます。
MariaDB [mysql]> truncate table user; MariaDB [mysql]> flush privileges;
rootユーザーを再作成
MariaDB [mysql]> grant all privileges on . to root@localhost identified by '指定のパスワード' with grant option;
作成後確認
select host, user from user;
セーフモードで起動していたものをCtrl+Cで止め、 通常の起動方法で起動
systemctl start mysqld
改めてログイン
mysql -u root -p
→これで完了。
rootパスワードを忘れてしまった、なんて時やセーフモードでの起動が必要な際には、 ぜひ参考にしてください。
参考
MySQL 5.6 リファレンスマニュアル