mysql: 外部からの接続を受け付けなくなって困った話

きっかけは、Ubuntu 14.04 上で運用中の MySQL 5.6 をアップグレードしたこと。

apt-get install がうまく行かないので、悪戦苦闘した後に、/var/lib/mysql のバックアップを取ってから apt-get purge してから最新の MySQL 5.6 をインストールして、/var/lib/mysql を戻すという方針に転換しました。

いちおううまく動いたのですが、なぜか外部からの接続を受け付けなくなってしまいました。lsof で調べると確かに localhost をリスンしている。


$ lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 28953 mysql 13u IPv4 466855 0t0 TCP localhost:3306 (LISTEN)

/etc/mysql/my.cnf を見返したり、ネット検索で類似の事象を探したりしたけれど、原因が分かりません。

いったん休憩してぼんやり考えていると、「ああ、/usr/my.cnf か」と思い当たりました。このファイル、初期インストール時や mysql_install_db 実行時に、なぜか作られる設定ファイルで、そこに


bind-address = 127.0.0.1

と書いてあって、この行を消すかコメントアウトしなければいけないのでした。

MySQL のサーバー再起動後の lsof の結果は次の通り:


$ lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 29004 mysql 13u IPv4 466919 0t0 TCP *:3306 (LISTEN)

しかし、何のために /usr/my.cnf が作られるのかは依然として不明。

さくらの専用サーバ:リモートコンソールの使い方

さくらの専用サーバ(※ VPSクラウドではない)を使っていてSSH でログインできなくなってしまった場合には、リモートコンソールでコンソール画面を開いて直接ログインを試みることが可能です。

注意事項:

  1. WindowsChrome/Firefox を使うこと(私の環境ではIEではうまく行きませんでした。MacLinuxでもうまく行きません)。
  2. Java 7またはJava 8がインストールされていること。
  3. 日本語キーボードを使うこと。
  4. あらかじめIMEをオフにしておくこと。
  5. 初回実行時には、Java のセキュリティ設定が必要となる(後述)。

手順:

  1. 「会員メニュー」にログインし、「契約情報」→「契約サービスの確認」と進み、対象となる専用サーバの「サーバ設定」ボタンをクリックする(コントロールパネルにログイン)。
  2. 「サーバ」タブを選び、一覧表からログインしたいサーバの行をクリックする。
  3. 「リモートコンソール」ボタンをクリックする。
  4. 「実行ファイルをダウンロードしますか?」と聞かれるので「はい」をクリックする。
  5. 「この種類のファイルはコンピュータに損害を…」と表示されるが、「保存」をクリックする。
  6. ファイルのダウンロードが完了したら、それを開く(Chrome の場合は、ブラウザ下部に現れるダウンロードファイルアイコンの右端ボタンをクリックして「開く」を選択)。
  7. 「このアプリケーションを実行しますか」というダイアローグボックスが開くので、「リスクを受け入れて、このアプリケーションを実行します。」チェックボックスにチェックを入れて、「実行」ボタンをクリックする。
  8. 白黒のコンソール画面に切り替わり、ログインプロンプトが表示されたらユーザー名とパスワードを入力する。

Java のセキュリティ設定:

初回実行時には、ダウンロードしたファイルを開いた後に「Javaセキュリティによってブロックされたアプリケーション」という警告が出ます。場所の欄に「http://」で始まるURLが表示されているのでそれを紙に書き留めてください(コピペできません)。

次に、「Java コントロール・パネル」を開きます。Windows 8.1の場合は、画面左下の Windows アイコンを右クリックして「検索」を選び、「configure java」と入力すると、すばやく開けます。

そして、「セキュリティ」タブから「サイトリストの編集」ボタンをクリックします。「追加」ボタンをクリックして、さきほど書き留めたURLを入力し、「追加」ボタンをクリックします。

Java コントロール・パネル」の右上の「×」ボタンをクリックして設定を終了し、手順3からやり直してください。

参考資料:

keepalived: Memory allocation problem

久しぶりに keepalived のセットアップを行いました。昔のメモを見ながら、その通りにやったつもりなのですが、うまく起動しません。ログを見ると、


SMTP_CHECK Error connecting to server [192.168.0.172]:25
Removing service [192.168.0.172]:25 from VS [192.168.0.17]:25
IPVS: Memory allocation problem
Executing [/usr/sbin/service keepalived stop] for service ...

のように出ています。私は「IPVS: Memory allocation problem」の方に目を奪われてしまい、しばらく原因を見つけられないでいたのですが、「SMTP CHECK ...」に書いてあるとおりで、192.168.0.172 の 25 番ポートに SMTP で接続できないため、私自身が keepalived.conf に書いたとおり、サービスを停止していただけでした。

SMTP サーバを起動したら動くようになりました。

「IPVS: Memory allocation problem」というメッセージは何らかの異状を示すのでしょうが、今回の問題とは直接関係ありませんでした。

教訓:うまく行かないときは、あれこれ設定をいじくり回す前に、現在の設定をバックアップしてから限りなくシンプルな設定に切り替えて、少しずつ設定を書き加えていくこと。焦らず一歩一歩進むこと。

タブをスペースに展開する(メモ)

カレントディレクトリ以下にあるすべてのHTMLファイルの行頭のタブをスペース2個に変換するには次のコマンドを実行する。


find . -name '*.html' ! -type d -exec bash -c 'expand -t 2 "$0" > /tmp/e && mv /tmp/e "$0"' {} \;

タブをスペースに展開する(メモ)

カレントディレクトリ以下にあるすべてのHTMLファイルの行頭のタブをスペース2個に変換するには次のコマンドを実行する。


find . -name '*.html' ! -type d -exec bash -c 'expand -t 2 "$0" > /tmp/e && mv /tmp/e "$0"' {} \;

参考: http://stackoverflow.com/a/11094620/513554

Ubuntu から Linux Mint へ移行

先日(2014年11月)、遅ればせながら Ubuntu 14.04 をインストールして使い始めたのですが、ATOK X3 との相性が悪く、頻繁に Unity Dash がクラッシュし、挙げ句の果てにはログイン画面が表示されなくなりました。

次に kubuntu を試してみたのですが、ATOK X3 のインストール自体ができませんでした。

そこで、Ubuntu ベースの別ディストリビューションである Linux Mint 17 (Cinnamon) を初めて使ってみることにしました。

結果は良好。ATOK X3 のインストールは難なく完了。

ユーザーインターフェースもビジュアルデザインも、私の目には好ましく映りました。

Ubuntu の Unity Dash にも慣れてきたところだったので、離れるのは少し残念ですが、ATOK は捨てられません。次の Ubuntu 16.04 に期待します。