さくらレンタルサーバ phpMyAdminでのエクスポート文字化け対処法

「さくらのレンタルサーバ スタンダード」から「さくらのマネージドサーバ」への移行作業をした。

その際に、phpMyAdminを利用してMySQLに接続し、データのエクスポート→移転先サーバでのインポートを試みたところ、移転先サーバで文字化けしてしまった。
文字エンコーディングはどちらもUTF-8 (utf8_general_ci) にしてあるにもかかわらず。
結論としては「phpMyAdminだけでなく、コマンドラインを使ってデータを取り出す」方法で無事に移行できたものの、2時間ぐらいハマってしまった。

【免責】やったらできたよ、というレポートにつき、推奨されない方法かもしれない。参考にする場合は、転ばぬ先のバックアップ/対策を…。

そもそもphpMyAdmin上のレコード表示が文字化けしている

phpMyAdmin上でテーブルのレコードを参照した際に、すでに文字化けが起きており、何が書いてあるか読めない状態だった。
ウェブサーバ上に置いていたPHPプログラムからは文字化けなしで読み書きできていたので、実際の運用上は問題なく、今まで文字化けに気づかなかった。

このため、phpMyAdminのエクスポート機能を利用した際も、dumpファイルの日本語部分が文字化けしてしまっていた。

いろいろとphpMyAdmin上から文字コードを変えられないか見たものの、解決の糸口が見つからなかった。

phpMyAdminがダメなら、SSH接続でdumpすればいいじゃない

さくらのレンタルサーバはTerminal(コマンドライン)から接続することができる。
phpMyAdminからうまく接続できない、もしくは表示できないのであれば、中のデータベースに直接アクセスしてしまえば良いと考えた。

さくらのレンタルサーバにSSH接続する

さくらのレンタルサーバでは、セキュリティ上、さくらのサーバ内からのみSQLサーバへの接続を受け付ける設定になっている。
MacのTerminalで接続する場合、下記のコマンドを打ち込んだあと、FTPパスワードを入力することでログインできる。

# MacのTerminalで接続する場合
ssh -2 【さくらユーザ名】@【さくらユーザ名】.sakura.ne.jp

MySQLデータをFTP領域に取り出す

下記のコマンドを打ち、今度はMySQLのログインパスワードを入力することで、MySQLサーバに接続できる。
今回の場合は、MySQL上での文字コードが(初期設定上?)’latin1’として認識されてしまっていることによるものだったので、「latin1」を指定した。
これで、出力されるdumpファイルの文字化けが解消した。

# mysqlXXX.db.sakura.ne.jpの部分は、各々のSQL接続先サーバに合わせて変更する。さくらレンタルサーバのコントロールパネルからも確認出来る。
# dumpファイルの出力先は、FTPで接続できる領域にしておく。
# 例:/home/USERNAME/www/dump.sql
mysqldump --default-character-set=latin1 -h mysqlXXX.db.sakura.ne.jp -u 【ユーザ名】 -p 【データベース名】 > 【出力先】;

取り出したデータをローカルにダウンロードする

先ほどのダンプファイルを、FTPソフトなどでローカルにダウンロードする。
mi等のテキストエディタで開き、(データ量によっては開くのに時間がかかるかもしれない)、文字化けしていないことを確認する。

ダンプファイルに小細工する

取り出したダンプファイルをそのまま移転先のphpMyAdminにインポートさせると、文字化けしてしまう。
そこでダンプファイルに小細工をする。
テキストエディタで開き、下記のように、10行目付近にあるSET NAMESのlatin1をutf8に変更し、保存する

/*!40101 SET NAMES latin1 */;

/*!40101 SET NAMES utf8 */;

ダンプファイルを移転先でインポートする

ここまでできれば、あとは移転先のサーバにあるphpMyAdminの「インポート」から先ほどのダンプファイルをアップロード(実行)するだけ。
移転先のサーバでphpMyAdminを見ても、レコードは文字化けせず、他のPHPプログラムからも問題なく利用できた。

一言

もっとスマートかつ根本的に対処する方法もありそうなものだが、レンタルサーバという制約上、MySQLの設定ファイルmy.cnfが読取専用にされていたり、プリインストールされているphpMyAdminの設定も深くいじれないようなので諦めることにした。

この記事にコメントする

メールアドレスは公開されません。コメントは管理者による承認後に公開されます。

関連記事

Value Domainで取得した新規取得したドメインに、さくらのレンタルサーバの無料SSL(Let’s Encrypt)を適用させようとしたところプチはまりしたので記録を残します。
続きを読む

macOS Sierraがリリースされてしばらく経ちますが、Sierraにしてからというものの、シャットダウンが異様に遅くなり、困っていました。
シャットダウンを選択後、電源が切れるまで、黒い画面のままへたすると20分以上待たされました。

もろもろリセットやセーフブート、ディスク修復など色々試したのですが、解消できず。
諦めてクリーンインストールしようかな、と思っていましたが、思わぬところでアッサリ解消しました。
続きを読む

DEVONthinkのデータベース同期用に、さくらのVPSにWebDAV入れてみたら5分でおわった。
続きを読む

無料SSL発行サービス「Let’s encrypt」を利用し、さくらのVPS上のサーバをSSL(https)対応しました。
色々引っかかりながらも、複数の独自ドメイン用証明書を取得し、運用することができています。
また同じようなことをする日が来るかもしれませんので、作業記録を残しておきます。

まずは公式の使い方を見ます。
それだけでスムースに完了した方はこの記事を見る必要はありません…。
続きを読む