hello foo bar Saba notePostgreSQLのテーブル、スキーマの操作、SQLの便利帳
2019.12.11 水
psqlのログイン内でファイル出力する postgres=#
2019.12.11 水
ファイルの数をカウントする(ファイルの数を数える) ./と../、Toatal行が出るので3行抜いた数で計算しないと合わなくなります。 # ls -al ./DIR | wc -l この数からマイナス3をした数がファイル数です。(が、中にディレクトリがある場合は、それも加算されちゃうので、findでやった方がいいかも。)
2019.12.10 火
PostgreSQLにはユーザーとかロールとかデータベースとか権限や認証関連でややこしいっていうのがあります。ユーザーとロールは何が違うんだ?って話とか。オーナーとロールとユーザーって何が違うんだとか。ほんとややこしい。 ロール (role)とは PostgreSQLのロール ロールの新規作成 ロールの削除 ロールをデータベースに紐付ける データベースの作成) データベースの削除 ロール (role)とは 一般的にはPostgreSQLのロールとは「ユーザーと呼ばれるものとグループと呼ばれるものの二つの性質を兼ね備えたもの」ということらしいです。つまりユーザーとグループのことですね。 role ├── user └── group ロールのことをユーザーと言ったり、ユーザーのことをロールと言...
2019.12.10 火
pg_hba.confでlocalhostからのログインはtrustにすればいったん解決します。バージョンや環境によってちょっと違いますが、概ねこんな感じ。 $ su - postgres $ vi /var/lib/pgsql/11/data/pg_hba.conf 中身はこんな感じになっているとしたら、 # PostgreSQL Client Authentication Configuration File # =================================================== local all all md5 host all all 127.0.0.1/32 md5 host all all ::1/128 md5 md5でパスワードの暗号化...
2019.12.6 金
WordPressのプラグインはfunctions.phpの拡張というような機能になっています。ちょっとしたカスタマイズだったらfunctions.phpに書けば十分機能しますし、どんな設定も全体に反映できますし、部分的にどこに機能を注入するかもフックを使って指示できます。これはなかなか優れたフレームワークの機能で、こういった設計はわりと好きです。 プラグインの機能はこれらの機能の拡張なので、実際に作成する際に必要なことは、機能を割り当てた関数function()とそれらを反映させるアクションフックとフィルターフックということになります。functionはPHPの知識が多少あれば書けますが、フックについてはWordpress固有の仕様であり知識なので公式ドキュメントを熟読する必要があります。...
2019.11.29 金
やること CentOS7でSMTPサーバー構築ではSSLを使っていなかったのですが、今回は無料SSLを使って暗号化したSMTPSサーバーを作ろうと思います。 利用するドメインのSSLを取得する – 無料SSLを取得する Let’s Encrypt Postfixの設定 ポートの開放 利用するドメインのSSLを取得する 無料SSLのLet’s encryptを取得するには、認証方法としてそのドメインを使ったWEBサーバーを作るのが一番簡単です。まずはじめにexample.comでアクセスできるWEBサーバーを作っておきましょう。 SSLの取得方法は無料SSLを取得する Let’s Encryptを参考にしてください。 $ /usr/local/src/certbot $...
2019.11.27 水
make:Authが使えなくなったので以下の手順。 UIをcomposerで入手 $ php composer.phar require laravel/ui 認証関連のファイル作成 $ php artisan ui vue --auth マイグレーション $ php artisan migrate css/js関連 ビルド $ npm install $ npm run dev 基本的な使い方 Registerメニューがホーム右上に新しく作成されるので、そこから登録します。デフォルトでは、登録後すぐにログインできるという仕様になっています。つまりダミーのEmailアドレスでも登録できてしまうので、ここらの認証機能などは自分たちでカスタマイズしないといけないことになります。暗号化や認証の方法...
2019.11.27 水
GCPはプロジェクト単位で支払いも権限もすべて別れているので、ぶっちゃけ別のサービスと考えた方がいいぐらいです。なので他のプロジェクト間でのやり取りは基本的にはできません。 イメージへのアクセス権の付与 1. イメージへのアクセス権の付与 現行の作業中のプロジェクト(A)へ別のプロジェクトからイメージをもってくるには、対象になる別プロジェクト(B)に属しているイメージへのアクセスができるようにしないといけません。まずは、別のプロジェクト(B)に属しているイメージへのアクセス権を付与という作業になります。この作業にはオーナー権限が必要です。このアクセス権の付与は、イメージを所有しているプロジェクト(B)のオーナーがイメージを使用するプロジェクト(A)のGoogle APIサービス アカウントに...
2019.11.23 土
Dockerは便利すぎていろいろなテストや実験を繰り返すので気がつくと結構な大容量になっています。私も自分のPCが300GBあるのに90%近くなってしまっておどろき。もう使わないものは削除する必要がでてきました。 現在停止しているコンテナを含めて表示します。 docker ps -a コンテナの削除 CONTAINER IDを拾って削除したいコンテナを指定します。 $ docker rm 37cdbf33cxxx イメージの削除 イメージの一覧を表示します。かなりの数になっていると思います。 $ docker images 削除したいイメージのIDを取り出して削除します。 $ docker rmi 67fa590cfxxx Error response from daemon: confli...
2019.11.19 火
クエリログを有効にする SQLの項目に移動して対象のインスタンスを選択し「インスタンスの詳細」ページを開きます。設定セクションの中で、まだ何も設定していない場合は、「データベースフラグが設定されていません」と表示されています。 そのセクションの下部に「設定を編集」という部分から入って、データベースフラグを設定します。 設定オプションの中にある「フラグ」の項目を開いて、データベースフラグを設定します。 log_statement all を設定して、保存します。 ログはSlackDriverに保存されます。 ログの確認 すでに動いているDBであればロギングがはじまっています。まだ開発環境などでアクセスがない場合は確認のためにいくらかサーバーアクセスしておきます。 ク...
2019.11.18 月
version11の場合です。postgresql.confの修正だけでオーケー。 /var/lib/pgsql/11/data/postgresql.confを修正します。 #log_statement = 'none' # none, ddl, mod, all ↓ log_statement = 'all' # none, ddl, mod, all logの下のログファイルにクエリが出力される。11以前のデフォルトの設定はlog_directory = 'pg_log'になっているっぽい。11だとlog_directory = 'log'になってますね。 たぶん再起動しないとダメっぽい。 # systemctl restart postgresql-11.service 以下の場所に...
2019.11.18 月
VMインスタンスの詳細ページにある「同様のものを作成」するボタンは本来的なクローンではありません。サーバー構成をコピーするだけで中身のストレージデータはコピーされず空の状態になるのでご注意。いわゆる全く同じインスタンスを作成する場合は、スナップショットを利用してVMインスタンスを複製します。 Cloneする スナップショットを作成して個別にスナップショットを反映します。Compute Engienの項目からスナップショットを選択して、スナップショットメニューに入ります。(はじめての場合は「スナップショットを作成する」ボタンを押してすすみます。) Snapshottを作成する 名前で適当なスナップショット名を入れます。HOSTNAME(インスタンス名)-SERIAL_NUMBER-YYYYMM...
2019.11.11 月
Cloud SQLでPostgreSQLを立てた際に、外部からダンプしたデータがリストアできないっていうのがあるので、そのまとめです。ドキュメント読んだらきちんと書いてあった。 何も考えずにダンプデータをリストアすると、 [543004]: [1-1] db=postgres,user=cloudsqlsuperuser ERROR: must be member of role "ROLE_NAME" というエラーでリストアできません。なのでCloud SQLの仕様に合わせてダンプしないとダメです。(ちなみにCloud Shellから権限関連をいろいろこねくりまわしてみたけどダメでした。) 以下の仕様に従ってダンプします。 --no-owner SQL ダンプファイルに所有権の変更コマンド...
2019.11.9 土
基本的なコマンド gcloudが起動シているかの確認 $ gcloud --version プロジェクト 現在選択しているプロジェクトの確認 $ gcloud config configurations list | grep True | awk '{print $4}' プロジェクトの選択 gcloud config set project SAMPLE-PROJECT 現在選択しているアカウントやプロジェクトの状態を表示する $ gcloud config list アカウント 新しいアカウントの追加 (すでに登録してある場合はアカウントの切り替えになります。) $ gcloud config set account SAMPLE@GAMIL.COM $ gcloud auth log...
2019.11.9 土
プリエンプティブ VMというGCPの空きリスースを利用した実験的な場所を通常のVMインスタンスとは別に格安で利用することができます。おそらくGoogle側の実験的な試みの1つなんだと思います。 最大で24時間起動。(24時間後には強制的にシャットダウンされる) 勝手に停止(プリエンプト)される。 安い(同スペックの通常インスタンスの半額以下、1/3程度) というわけですが、比較的たくさんの使いようがあります。シャットダウンしたインスタンスは“また起動させればいいわけですし、TerraformやAnsibleが使えるなら即座にアプリケーションを立ち上げることもできます。個人で使っているブログ程度のものであれば十分使えるし、テストや試験的な用途ではむしろこっちを使った方が格安です。 ...
2019.11.9 土
日本語を扱えるようにするため文字コードの設定をします。設定項目は以下になります。 Encoding Collate Ctype インストール時には環境によっていろいろなデフォルトの状態になっています。日本語の場合はこういう状態にしてあげるとよいです。 Encoding : UTF8 Collate : ja_JP.UTF-8 Ctype : ja_JP.UTF-8 文字コードの設定 私の環境では\lで確認してみると以下のような状態でした。 postgres=> \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -------------+---------------+-...
2019.11.6 水
MacでiCloudの同期 Google日本語入力 Google Chrome install 日本語入力・英字入力をcommand+spaceに変更 chromeの同期(osamthing@gmail.com) 隠しファイルを表示する
2019.11.6 水
GCPのCloud SQLの使い方です。初心者から上級者までいろいろ使えるCloud SQLですが、なかなかいろいろ覚えることが多くて難しいです。ここではある程度理解している中級者以上を対象に解説しています。ここではPostgreSQLの使い方を説明しています。 公式ドキュメント: – Cloud SQL – Cloud SQL for PostgreSQL のドキュメント Cloud SQL インスタンスを作成する Cloud SQLのインスタンスの作成をします。 インスタンス ID: (小文字、数字、ハイフンのみ使用できます。先頭には小文字を使用してください。インスタンスを削除した際も一週間ぐらい予約されたままになるっぽいので注意。) デフォルトのユーザー パスワ...
2019.11.4 月
静的外部IPアドレスの予約 リージョン指定しない場合は--globalでどこでも使える静的外部IPを指定します。 $ gcloud compute addresses create [name] --global --ip-version IPV4 リージョンが予め決まっていてリージョン指定する場合は、--regionでリージョンを指定します。Terraformで指定するときにあらかじめリージョンが決まっているときなどはこの方法で予約しないとリージョンがないと言われてエラーになります。 $ gcloud compute addresses create [name] --region asia-northeast1 静的内部IPアドレスの予約 $ gcloud compute address...
2019.11.4 月
# yum list installed | grep postgresql Existing lock /var/run/yum.pid: another copy is running as pid 29910. Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 74 M RSS (396 MB VSZ) Started: Mon Nov 4 13:18:30 2019 - 00:02 ago State : Sleeping, pid: 29910 pidを削除してあげると、Lockが解除されます。 # rm -f...
2019.11.4 月
何にもしてないのにこんな感じでつながらなくなるときがあります。 Chromeではこのエラーなんだけど、Firefoxzではまた違ってexample.com への接続中にエラーが発生しました。Peer reports it experienced an internal error. エラーコード: SSL_ERROR_INTERNAL_ERROR_ALERTというエラーになっていました。ちょっと変だなと思って、Chromeのキャッシュを削除するとこのサイトは安全に接続できませんexample.com から無効な応答が送信されました。ERR_SSL_PROTOCOL_ERRORにかわったので、SSLのエラーなんだなと。 curlでステータスコードを確認すると、 $ ...
2019.10.28 月
SSHの接続はいろいろセキュリティー上面倒な部分なので、そこらの部分含めると結構テクニカルなことになってしまうので割愛。 ポートの変更 既存のsshd_configのバックアップとっておきます。 # cd /etc/ssh # cp -p sshd_config sshd_config.org ポートを変更します。コメントアウトしてある場合は、外してください。 #Port 22 ↓ Port 2222 保存してからsshd -tで構文チェックしてください。 再起動。既存ポートでは接続できなくなるので十分注意してください。 # systemctl restart sshd.service
2019.10.26 土
インストール brewで入れられるっぽいです。 $ brew -v Homebrew 2.1.15 Homebrew/homebrew-core (git revision 624d; last commit 2019-10-25) 微妙に古い場合はupdateします。 Docterもしておく。 $ brew update $ brew doctor PostgreSQLのインストール $ brew install postgres バージョン確認 $ postgres --version postgres (PostgreSQL) 11.5 PostgreSQLのディレクトリはここになります。 $ cd /usr/local/var/postgres イニシャライズ $ initdb /u...
2019.10.25 金
公式ドキュメントはこちら。 Cloud SQL にデータをインポートする
2019.10.25 金
ちょっとめずらしいのが出た。PHP5.2.17でPostgreSQLのscram-sha-256を認識できないってやつです。libpqを少なくとも10にバージョンアップしないとダメ。 exception 'PDOException' with message 'SQLSTATE[08006] [7] SCRAM authentication requires libpq version 10 or above' in ./hoge.php:xx 第 31章libpq – C ライブラリ これは面倒くさいのでmd5にするとかしたほうが早い。IP制限しておけばダイジョブ。 libpqのバージョンを強引に上げてしまってPHP5.2との連携がちゃんとできるかどうかについてはちょっとまだわ...
2019.10.25 金
基本的な使い方 インストール # yum -y install nmap 基本的な使い方は、ホスト名(またはIPアドレス)を指定するだけです。 $ nmap example.com オプション -sS ステルススキャン -O ターゲットのOSを特定してくれるオプション。 -A 一番よく使う。「OS検出・バージョン検出・スクリプトスキャン・トレースルート」全てこれだけで行う。 ステルススキャンは、相手先のサーバーに痕跡を残さないようにするオプションです。ハックツールですね。 利用するときは往々にして-Aオプションを使うと全部いけるのでいい具合になります。 $ nmap -A example.com 開いていいるポートだけ確認したい場合は、grep使うとか。 $ nmap -A example....
2019.10.24 木
PostgreSQLにリモートホストから接続する方法です。インストール時のデフォルトではlocalhostのみの接続ができるようになっていますが、リモートホスト側の設定はされていません。 リモートホストからDBサーバーへのネットワークの確認 まずはリモートホスト側からDBサーバーへアクセスしてみます。nmapなどで通信自体とポートの確認をしておきます。 PortチェックテストのようなWEBツールもあります。 $ nmap TARGET_HOST ... 5432/tcp open postgresql ... 疎通できない場合は複数の原因が考えられるので、Firewallの設定やPostgreSQLのサービスの起動などいろいろ確かめる必要があります。今回この部分は割愛。 postgresql...
2019.10.24 木
PostgreSQLに接続する postgresqlに接続するモジュールが入っているか確認してください。 # php -m | grep pg pdo_pgsql pgsql ここらが入っていたらOKです。通常デフォルトでインストールされているので問題ないでしょう。 もっともプレーンな方法で接続してみます。 <?php echo "try to connect postgresql.\n"; $DBHOST = "127.0.0.1"; $DBPORT = "5432"; $DBNAME = "voyager"; $DBUSER = "voyager"; $DBPASS = "LyrxXVB9"; try { $dbh = new PDO("pgsql:host=$DBHOST;por...
2019.10.24 木
再起動時のエラー systemctl restart postgresql-11実行時に出るエラー。通常rootで再起動したらできる。Root以外で(postgresユーザー)で再起動する場合はrootのパスワードが要求されます。rootにパスワードが設定されていない場合は、このユーザー権限での再起動はできません。 Failed to restart postgresql-11.service: Access denied See system logs and 'systemctl status postgresql-11.service' for details. pg_ctlで別のディレクトリ(別のバージョン)を指していたりすることがあります。 pg_ctl reload pg_ctl...
2019.10.23 水
PostgreSQLのダンプとリストアは比較的mysqlライクなので、そんなに戸惑うことはないのですが、多少違うところ含めての備忘録です。 pg_dumpコマンド pg_dumpは以下の二種類の方法でdumpができます。 スクリプト形式(デフォルト) リストアに必要なSQLをそのまま吐き出してくれるダンプ方法です。psqlコマンドでそのままリストアできます。いわゆる普通のダンプ方法なのでデバックはしやすいです。 アーカイブ形式 バイナリの形で出力されます。リストアはpsqlコマンドでなくpg_restoreコマンドで行います。アーカイブ形式のは、指定したtableのみを選択してリストアできるというのと、データベース(テーブル)自体が巨大なデータの場合は圧縮して出力できるという利点あり。ダンプ...