CentOS 7のMySQL(MariaDB)でrootパスワードを忘れた場合の対処方法

スポンサードサーチ

皆さんはMySQL(MariaDB)を使っていて、rootパスワードがわからなくなった事ってないですか?

残念ながら私は時々あります。

こういった時、以前はMySQL(MariaDB)をセーフモードで立ち上げてrootパスワードの再設定を行っていましたが、CentOS 7ではこれができません。

これはCentOS 7ではsystemdというLinuxの起動処理やシステム管理を行う仕組みで管理されているため、mysqld_safeが使用できないからです。

そこで、改めてCentOS 7でMySQL(MariaDB)でrootパスワードの再設定をする方法をまとめてみました。

CentOS 6以前での設定方法

CentOS 6以前では、MySQL(MariaDB)でrootパスワードを再設定する場合、以下の方法で行っていました。

サーバにsshで接続

まずはサーバにsshで接続をします。

起動しているMySQL(MariaDB)を停止

次に、起動しているMySQL(MariaDB)を停止します。

service mysqld stop

MySQL(MariaDB)をセーフモードでの起動

MySQL(MariaDB)をセーフモードでの起動します。

mysqld_safe --skip-grant-tables &

パスワード無しでMySQL(MariaDB)へrootでログイン

セーフモードの場合、以下のコマンドを叩くとパスワード無しでMySQL(MariaDB)へrootでログインができます。

mysql -u root

rootのパスワードをセットする

MySQL(MariaDB)へrootでログイン出来たら、mysqlデータベースを選択します。

use mysql;

次に、rootのパスワードをセット。

update user set password=PASSWORD("新パスワード") where User='root';

rootのパスワードを空に設定する事もできます。

権限設定の反映を最後に行い。

flush privileges;

MySQL(MariaDB)から抜けます。

quit

セーフモードのMySQL(MariaDB)を停止後、起動

最後にセーフモードのMySQL(MariaDB)を停止。

service mysqld stop

通常状態でMySQL(MariaDB)を起動。

service mysqld start

再度、rootでログインできるかどうかをチェックして問題なければ再設定は終了です。

CentOS 7での設定方法

CentOS 7の場合は、この手順ではrootパスワードの再設定ができません。

CentOS 6まではchkconfigコマンドによるサービスの有効化、無効化の切り替え、/etc/init.dディレクトリ配下のスクリプトに対してstart/stop/status等のパラメータを与えることで様々なサービスの管理を行っていましたが、CentOS 7はサービス管理がSystemdになりました。

そのため、例えばapacheの起動や停止、再起動、再読み込みを行う場合や状態表示を行う場合、以下のようにsystemctlコマンドを入力します。

# httpdサービスの起動
systemctl start httpd 
# httpdサービスの停止
systemctl stop httpd 
# httpdサービスの再起動
systemctl restart httpd 
# httpdサービスの再読み込み
systemctl reload httpd 
# httpdサービスの状態表示
systemctl status httpd

このsystemctlコマンドを使ってMySQL(MariaDB)の停止や再起動を行って行きます。

起動しているMySQL(MariaDB)を停止

まず、systemctlコマンドで起動しているMySQL(MariaDB)を停止します。

systemctl stop mysqld

skip-grant-tablesオプションを設定

MYSQL_OPTS変数を利用すると、システム構成ファイルを直接変更せずにMySQL Serverを起動することができますので、skip-grant-tablesオプションを設定します。

MySQL 5.6 リファレンスマニュアル:5.1.3 サーバーコマンドオプションに–skip-grant-tablesオプションの解説がありますが、これを設定することでデータベースにパスワード無しでアクセスできるようになります。

このオプションにより、サーバーは権限システムをまったく使用せずに開始され、サーバーへのアクセス権を持つすべてのユーザーにすべてのデータベースに対する無制限アクセス権が与えられます。

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

MySQL(MariaDB)を起動

MySQL(MariaDB)を起動します。

systemctl start mysqld

パスワード無しでMySQL(MariaDB)へrootでログイン

先ほどのskip-grant-tablesのオプション設定したことで、パスワード無しでMySQL(MariaDB)へrootでログインができます。

mysql -u root

rootのパスワードをセットする

MySQL(MariaDB)へrootでログイン出来たら、新しいパスワードをセット。

update user set password=PASSWORD("新パスワード") where User='root';

権限設定の反映を最後に行い。

flush privileges;

MySQL(MariaDB)から抜けます。

quit

MySQL(MariaDB)を停止後、起動

MySQL(MariaDB)を停止します。

systemctl stop mysqld

skip-grant-tablesオプション設定を解除

skip-grant-tablesオプション設定を解除。

systemctl unset-environment MYSQLD_OPTS

通常状態でMySQL(MariaDB)を起動

最後に、通常状態でMySQL(MariaDB)を起動します。

systemctl start mysqld

再度、rootでログインできるかどうかをチェックして問題なければ再設定は終了です。

AI時代だからこそ、戦略は人と一緒に考えることが、最初の一歩です。

開発やコンテンツ生成はAIが担える時代になりました。しかし、何を作るか・どこを目指すかという問いに答えるのは、依然として人の仕事です。

DX推進や新規事業の立ち上げで壁にぶつかる企業の多くは、ソリューションの導入や社内人材への丸投げに終始し、課題の本質が言語化されないまま進んでしまっています。

経営とITの両方を理解した人間が、経営者と並走しながら要求定義・要件定義の段階から一緒に考える。AIはこのプロセスを補助できますが、主役にはなれません。

まだ課題が言語化できていない段階からでも、遠慮なくご相談ください。一緒に考えます。

AIが生成できないのは「実績と信頼」

ECサイトやマーケットプレイスサイトはCS-Cart国際版(公式)という選択肢

AIはコードを書けます。しかし、長年の実運用で磨かれたロジックや、世界中の事業者が検証したセキュリティを、プロンプト一つで再現することはできません。

CS-Cart国際版(公式)は、自社EC・越境EC・BtoB EC・マーケットプレイスに対応した豊富な実績ある機能をパッケージとして提供しています。

構築コストを抑えながら、堅牢なECサイトを立ち上げることができます。

スポンサードサーチ