スポンサードサーチ
皆さんは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でログインできるかどうかをチェックして問題なければ再設定は終了です。
ITのことで、お困りではありませんか?
ITは、コンサルティングからプロジェクトを全体を見据えて実施しなければ上手くいきません。
リソース・シェアリングは、ITのコンシェルジュとして、クライアントにとっての最適解をご提案するコンサルティングから構築・運用・解析までをワンストップで対応できるITコンサルティング会社です。
ITに関してお困りのことがあればお気軽にご相談ください。
ITプロジェクトで最適解を探すなら
御社にとって最適なWebサイト構築をするなら
失敗しないWebシステム開発をするなら
WordPressを活用したいなら
ECサイトを構築したいなら
越境ECサイトを構築したいなら
企業間取引向けECサイトを構築したいなら
マーケットプレス型ECサイトを構築したいなら
課題や事例から最適解を探すなら
リソース・シェアリングの実績
お問合せ
スポンサードサーチ
次も気に入っていただけるかもしれません
株式会社リソース・シェアリング
〒104-0061
東京都中央区銀座7丁目13番6号
サガミビル2階