MySQL のデータを初期化
MySQL のデータを全てリセットする、いわゆる工場出荷時の状態に戻す(ファクトリーリセット)的なことを行う方法です。
概要
以下の手順を踏みます。
- MySQL サーバを停止する
- MySQL のデータが入っているディレクトリを削除する(リネームする)
- 新しく MySQL のデータを入れるディレクトリを作る
- 「3.」で作ったディレクトリの所有者を
mysql
に変更する $ sudo mysqld --initialize
を実行して「3.」で作ったディレクトリ内を初期化する/etc/mysql/mysql.conf.d/mysqld.cnf
を編集してroot
のログインパスワードを無効にする- MySQL サーバを再起動する
root
でログインしてユーザの作成や設定を行う
具体的手順
一つ一つ順番を追ってやっていきます。
1. MySQL サーバを停止する
$ sudo service mysql stop
2. MySQL のデータが入っているディレクトリを削除する(リネームする)
$ sudo mv /var/lib/mysql /var/lib/mysql_old
3. 新しく MySQL のデータを入れるディレクトリを作る
$ sudo mkdir /var/lib/mysql
4. 「3.」で作ったディレクトリの所有者をmysql
に変更する
「3.」ではsudo
で作っていて所有者がroot
になってしまっているので、正しい所有者であるmysql
に所有者を変更します。
$ sudo chown mysql:mysql /var/lib/mysql
5. 「3.」で作ったディレクトリ内を初期化する
mysqld --initialize
というコマンドを使います*1。
$ sudo mysqld --initialize
6. rootのログインパスワードを無効にする
このままですと MySQL にログインができないので、rootのパスワードを一時的に無効化します。こちらのQiitaの記事を参考にさせていただきました。
/etc/mysql/mysql.conf.d/mysqld.cnf
をエディタで開く[mysqld]
の部分にskip-grant-tables
と書く*2
7. MySQL サーバを再起動する
$ sudo service mysql restart
8. rootでログインしてrootのパスワードの設定とユーザの作成を行う
root
でパス無しでログインできるはずです。ユーザの確認やデータベースの確認も行ってみてください。
$ mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. ... ... ... mysql> SELECT Host, User FROM mysql.user; +-----------+---------------+ | Host | User | +-----------+---------------+ | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+---------------+ 3 rows in set (0.02 sec) mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)
まずはroot
のパスワードを設定しましょう。skip-grant-tables
で起動しているためSET PASSWORD
ではだめですので、先ほどのQiitaの記事を参考にします。設定ができたら「6.」の記述を削除して MySQL のサーバを再起動することを忘れないようにします。
あとはユーザを作成すればまっさらな状態で MySQL を使いはじめることができます。
補足
パスワードを変更してもうまくログインできない場合は以下も参考にしてみてください。