sshが使えないサーバーでDBの操作したい奴が色々した記録(session.save_path変更&phpMyAdminの代替ツールAdminerの導入)


sshが使えないサーバーがあるらしい

自分初心者なんでサーバーのことわかんないですけど、なんかsshが使えないサーバーが存在するみたいです。へぇって感じだ。
しかもphpMyAdminとかも入ってないサーバーがあるらしいです。
もちろんmysqlコマンド使えないし・・・DB操作するのにどうすりゃいいんだ

サポートサイトみてみた

サポートサイト見てみたら、データベース用のメンテナンスツールを自分で入れるかプログラム書けみたいなことしか書いてなかった。
じゃあまあphpMyAdminを入れるかと思いサーバーに入れてみました。

phpMyAdminにログインできません

結論、入れたphpMyAdminにログインできなかった。
ポート番号がMySQLのデフォルトじゃなかったんで設定ファイルとかいじってみましたがダメだった。
(ログイン認証はされているみたいですが、セッション関係がなんかぁゃιぃそうでしたが結局わからず

※最後に原因ぽいのが判明します。

代替案、というか救世主?「Adminer」

エロい人に助けを求めたらphpMyAdminの上位互換(?)ツール、Adminerというのがあるらしい。
なんと「adminer-*.*.*.php」という名の1ファイルだけで動くらしい。すごい
しかも日本語にも対応してるみたい。すごい

↓ログイン画面はこんな感じ

こいつをサーバーに入れて、それぞれ入力
(この時、ポート番号がデフォルトでない場合はサーバー入力部分にサーバー名:ポート番号を入れる)
し、ログインしてみた。

しかし「セッションの期限切れ。ログインし直してください」というエラーが

ログインできへんやん

やっぱりセッション関係が問題あるらしい。

session.save_pathを変更する

もう一回サポートサイトみてみた。
どうやらロードバランサーの下にWEBサーバーが複数あるらしく、サーバーのローカルにセッション関連のファイルを保存させないようにしているらしい。はよいえや

サーバーの.htaccessに以下の記述を追記してセッションを保存させるようにした。

.htaccess
php_value session.save_path /****/****/ドキュメントルート/セッション用ディレクトリ名/

設定後、再度Adminerにログインしてみたら無事にログインできました。

おわり

  • ssh使えないサーバーあるなんてしらなかった。勉強になった。
  • 結局Adminer使ったけど最後のsession.save_pathを変更で恐らくphpMyAdminも使えると思います
  • でも1ファイルでいろいろできるAdminerすごい
  • あんまり防御策にならんと思うが、Adminerのファイル名は適当に変えておくべき・・・
  • というか、使用後は削除して必要に応じて都度Adminerをおくべきかなぁと

参考