MySQLのrootユーザーのパスワードを変更

例えば、前任者がrootのパスワードを残していなくて、にっちもさっちもいかない…なんて時の為にメモ。

まずmysqlサービスを停止し、オプション付きで起動し直します。

$ sudo service mysqld stop
$ sudo mysqld_safe --skip-grant-tables --skip-networking
170907 21:38:47 mysqld_safe Logging to '/var/log/mysqld.log'.
170907 21:38:47 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

mysqld_safeコマンドのオプションについて解説します。

  • –skip-grant-tables:指定する事で、誰でもパスワード無しで接続できるようになり、すべての権限が付与されます。
  • –skip-networking:TCP/IPアクセスを無効にします。–skip-grant-tablesを付与すると、セキュリティの面で大きな問題があり危険ですので、このオプションを併せて付与します。

パスワード無しでmysqlに接続できるようになります。mysqld_safeを実行したターミナルはプロセスの終了待ちとなりますので、別のターミナルで接続します。

$ mysql

mysqlに接続した後、下記のSQLを実行し、rootのパスワードを変更し、mysqlから切断します。

mysql> UPDATE mysql.user SET Password=PASSWORD('<新しいパスワード>')
         -> WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

mysqlを再起動します。

$ sudo service mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

この手順でrootユーザーのパスワードを変更出来ます。