PostgreSQLで正規表現

正規表現出来るって知らなかった。っていうか、そういうのを使う必要に迫られたことがなかったので、調べもしなかったってだけかな。

select count(*) from tablename where colname like ‘山%';

select count(*) from tablename where colname ~ ‘^山';

select count(*) from tablename where colname ~~ ‘山%';

1番目と2番目は検索してもよく見かけるんだけど、3番目でも同じ結果が返ってくる。チルダ2個ってのはLIKEと同じってことなのかな。

phpPgAdminでログイン出来ない

2013/10/21 | PostgreSQL

気乗りはしないが、仕事でPostgreSQLを使うことになった。別にPostgreSQLが嫌い、とかそういうことじゃなくて、ずっとMySQLを使っていたというだけなんだけど。

とりあえず都度コンソール作業が面倒なので、phpPgAdminを使おうと思ったのだが、ちょっとだけはまった。

ログインが出来なかった。

最初はパスワードを設定していないせいだと思ったので、パスワードを設定してみたけどダメだった。

結論はphpPgAdminの設定で「$conf[‘extra_login_security’] = true;」と設定されているところをfalseに書き換えるところだった。デフォルトのtrueでは、postgresとかrootといったユーザでは接続できないらしい。ここを書き換えて無事接続できることを確認した。

試行錯誤の最中で、いろいろパスワードを設定するためのコマンドがあることを知った。

  1. alter role postgres with password ‘********';
  2. alter user postgres encrypted password ‘********';
  3. alter user postgres with password ‘********';

どう違うのか調べようかと思ったが、この部分は自分の担当ではないので放置(最終的には昔使っていた3番目でパスワードを設定した)。

pg_hba.confとかpostgresql.confとかinitdbとか・・・。思い出しながらの作業って嫌だな。

MySQLのバイナリログを読む

2013/08/15 | MySQL

自社サービスの問い合わせで「ログインできない」「データが消えている」というクレームをもらうことがある。今までのところ、ほぼその全てが「利用者側の誤った操作」によるものだ。たちの悪いことに自分に責任があることがわかっているにもかかわらずとぼけて問い合わせしてくるような人もいるようだ。

無料のサービス・全て自己責任で、というのがインターネット登場当時の昔の一般的な考え方だったかと思うが、昨今では無料サービスでも懇切丁寧なサポートを求める人が多いようだ(自分の意に沿わない返答だったからといってブログで「サービスが悪い」と書いたりする輩もいるからムカつくのだが)。

それはさておき、データの保全性と操作の履歴を確認できるよう、自社サービスにMySQLのバイナリログを出力するよう設定してある。このデータとapacheのログを見れば、だいたいいつ誰がどういう操作をしたのかというのは見当がつく。apacheのログはテキストだが、MySQLはその名の通りバイナリ。そのままテキストエディタで開くと、文字化けするところがあるのでやや見づらい。ということで、以下のコマンドを使って確認する。

mysqlbinlog ./mysql-bin.000004

スクロールして確認する場合は「| less」、テキストファイルに書き出すには「> ./log.dump」みたいな感じで。バイナリログはプログラムのバグ確認にも有効でとっても便利な機能だ。しかし「それでも俺はやってない」的なクレームもあるが、それはもう放置だよ。勝手にやってくれ。

mysqlのバックアップをコマンドラインから復元

2013/07/19 | MySQL

mysqlのバックアップファイルをコマンドラインから復元する際のコマンドのメモ。

mysql -h localhost -u username -p -B dbname < /path/to/backup.dump

最近シェルが使えない環境ばかりだったから、ウェブベースの復元ツールを探したりして手間がかかってたけど、自分のサーバで必要に迫られて、かつやり方を完全に忘れていたので、検索してしまった。

忘れないようにメモしておく。

MySQLのバックアップ

2013/03/16 | MySQL

MySQLのバックアップで躓いたのでメモ。

クライアントからの依頼でサーバの移行作業中、MySQLのバックアップができなくて困った。phpMyAdminからエクスポートしようとしたのだけれど、ダウンロードしたファイルが0キロバイトになってしまう。何故だろうと調べたら、どうやらデータ量が多すぎるため、PHPでエラーが出ているような感じ。たった40MiB程度のデータしかないのに。root権のない専用サーバだから付属のphpMyAdminの設定を変更することもできない。専用サーバなんだから単にフリーソフトを置いとくだけ、とかやめてくれよ。

ドキュメントルートに別途phpMyAdminを入れようかと思ったけど、はまってしまうと怖いので専用のツールがないか調べてみたらありました。phpMyBackupPro(略してpMBP)。

まずダウンロード、展開してサーバにアップロード。次にパーミッションの変更。「global_conf.php」「export/」のファイル、ディレクトリをそれぞれ777に変更。そしてウェブからアクセスする。「MySQL data is not correct.」というメッセージが出ていても気にしない(データベースに接続できていませんという意味らしいので表記を直してほしいな)。メニューのconfigurationタブからホスト名、ユーザ名、パスワードを入力して保存する。この時点で表示されているエラーも消える。

ちなみに借りているサーバでは、デフォルトのホスト名がlocalhostになっていた。これはこれでいいはずなのだが、ユーザ名とパスワードを正しく入力しても何時まで経ってもエラーが消えない。まさか、と思って記述を127.0.0.1にしたらうまく動いてくれた。まったくこのサーバは異常だと思う。普通のサーバらしく設定してくれさえすればなんの問題もないのに。

その後、メニューのbackupをクリックし、バックアップしたいデータベースを選んで、「Backup」ボタンをクリックし、「File successfully saved as hoge.1363399936.sql」などと表示されたらバックアップは無事終了。最初にパーミッションを変更したexport/にファイルが保存されている。

このツールはインポート機能も備えているので、次回、これも試してみるとしよう。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net