MySQL のパスワードを変更する方法
背景
プロジェクトで MySQL w/rails を使う事になったが, development のパスワードが config/database.yml に固定で記載されていたため, localの mysql のパスワードを変更する必要があった.
手順
mysql に入ります.
mysql -u root -p
user:Password を新しいパスワードに更新します.
root@localhost[(none)]:3> use mysql; root@localhost[mysql]:3> select * from user where Host='localhost' and User = 'root'; root@localhost[mysql]:2> update user set Password=password('新しいパスワード') where Host='localhost' and User = 'root'; root@localhost[mysql]:3> select * from user where Host='localhost' and User = 'root'; root@localhost[mysql]:4> flush privileges;
INSERT, UPDATE, DELETE などで権限テーブルを変更した場合, サーバを再起動するかテーブルのリロードを行うまでは権限チェックは施行されません. これを更新するために FLUSH PRIVILEGES を発行しています.
ちなみに MySQL のパスワードを ~/.my.cnf に下記の要領で記載することで, 接続時の入力が不要になります.
$ tail -n2 $HOME/.my.cnf [client] password="foobar"
参考
- Setting the MySQL root user password on OSX
- 4.7.5. パスワードの設定
- 4.6.7. 権限の変更が反映するタイミング
- PostgreSQL, MySQLにパスワード入力なしで接続する方法
- MySQLのrootのパスワードを初期化する