テックブログ

DataBase 技術ネタ

【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 リファレンスマニュアル

https://dev.mysql.com/doc/refman/5.6/ja/mysqld-safe.html

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください