2017-12-15 (Fri)
■[pc]MySQL-5.1からMariaDB-5.5へのアカウント情報の移行
CentOS6系からCentOS7系への移行案件があり、そこでMySQL-5.1からMariaDB-5.5への移行を行う必要がありました。
他にも色々と変わる部分があるため、一旦動作テスト用のサーバを作って確認することになり、データの移行を行いました。
そのとき、アカウント情報の移行ではまったのでメモしときます。
まずアカウント情報は普通にフルダンプしても取れないため、下記のようにmysqlテーブルを指定して取ります。
正式移行の際には -x オプション付けてロックしたほうがよいでしょう。
# mysqldump -u root -p --allow-keywords mysql > user_dump.sql
# mysql -u root -p mysql < user_dump.sql
自分はもうこれだけでいいのかな、と思っていたのですが、これだけだと認証が通りませんでした。
まずバージョンが上がっているため、mysql_upgradeを掛ける必要があるそうです。
@stealthinu MySQL同士でもバージョンが変わるとダメなことありますよ。mysql_upgrade 実行しないといけなかったり。
# mysql_upgrade -u root -p
また、移行元の環境はフロントのwwwサーバとバックエンドのdbサーバが分かれているのですが、テストサーバでは同一上で動かしているため、アカウントの接続元サーバ名の指定がそのままだと通らないので、クエリでlocalhostに書き換えました。
が、それだけでは動かないで悩んでいたところ、flush privileges掛ける必要があると教えてもらいました。
@stealthinu 直接テーブルを変更した場合は flush privileges クエリを実行する必要があります。または mysqld の再起動。
update mysql.user set Host="localhost" where Host="www"; update mysql.db set Host="localhost" where Host="www"; flush privileges;
これで無事に動くようになりました。
とみたさんありがとうございます!!