Linuxサーバー、MySQLパスワードのリセット

闲置の腾讯クラウドサーバーがあり、年末に契約が満了し、更新も考えていなかったので、開発用のデータベースとしてMySQLをデプロイすることにした。システムを再構築する際に、手間を省いて、腾讯クラウドから提供されている汎用イメージを選択した。すでにMySQLデータベースがインストールされていた。本来はシステム内にReadmeのようなファイルがあり、パスワードや設定ファイルの場所などを説明してくれるだろうと期待していた。

腾讯クラウドのシステム再構築は非常に速く、約1分で完了通知が来た。ログインしてsystemctl status mysqlコマンドを実行したところ、MySQLサービスが起動していることが確認できた。パスワードを探し回ったがどこにも見つからず、次第に焦り始めた。

そこで、サーバーにアクセスしているのであれば、root権限を使ってパスワードをリセットする方法があるはずだと考えた。資料を調べたり、阿里云フォーラムの投稿を参考にしたりして、さらに試行錯誤を続けた。

パスワードのリセット

構成ファイル vim /etc/my.cnf を編集し、mysqld ノードに以下の設定を追加します:skip-grant-tablessystemctl restart mysql コマンドを実行してデータベースを再起動します。 その後、mysql を直接使用してデータベースにログインし、通常の操作が続行できます。 root ユーザーのパスワードをリセットし、同時にリモートログインを許可します。

USE mysql;
UPDATE user SET authentication_string = password('pass') WHERE User = 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;
FLUSH PRIVILEGES;

変更した構成ファイルをロールバックし、データベースを再起動して完了です。

参照資料

Licensed under CC BY-NC-SA 4.0
最終更新 2025年06月02日 20:54
金融ITプログラマーのいじくり回しと日常のつぶやき
Hugo で構築されています。
テーマ StackJimmy によって設計されています。