karlley's tech blog

学習メモや記録とか

PostgreSQL

pgでPostgreSQLに接続する

SinatraのメモアプリをDB化するにあたりpg gemを使いPostgreSQLに接続しSQLを実行する方法を調べました。 結論 次の手順でpg gemでPostgreSQLへ接続しSQLを実行できる。 PostgreSQLに接続するためのPGオブジェクトを作成。 作成したPGオブジェクトからSQLを…

PostgreSQLのSQLインジェクションの対策

前回の記事ではPostgreSQLを使ったSinatraのメモアプリにSQLインジェクション攻撃ができることを確認したので、その対策について調べてみました。 環境 今回紹介するSQLインジェクションの対策は下記の環境で行いました。 DB: PostgreSQL フレームワーク: Si…

PostgreSQLの文字型の種類について

PostgreSQLのDB作成時の型指定に迷ったので調べました。 結論 PostgreSQLには3つの文字型がある。 CHAR 固定長文字列 ()で最大文字列長を指定 最大文字列に満たない場合は半角スペースが末尾に入る 大文字/小文字を区別する VARCHAR 可変長文字列 ()で最大文…

pg gem のexec系メソッドの使い分け

Sinatraのメモアプリでpg gemを使う機会がありました。 DBにSQLを実行するexec ~ 系のメソッドの選択に迷ったので調べてみました。 結論 exec、exec_params、exec_prepared の3つのメソッドは次のように使い分ける。 exec: 単純にSQLを実行したい。 exec_par…

SQLインジェクションを試してみる

SinatraのDB版のメモアプリの終了条件に「SQLインジェクションへの対策」が含まれていたのでSQLインジェクションできるのか実際に試してみました。 SQLインジェクションとは? 引数などのパラメタにSQL文を混ぜ込んでおき(インジェクション),プログラム内…

SQLファイルをコマンドラインから実行してテーブル定義する

Sinatraを使ったメモアプリのDB版を進めています。 テーブルを作成するDDL文を書いたSQLファイルを読み込み、PostgreSQLにテーブル定義したいと思ったので調べてみました。 結論 psql コマンドの-f オプションを使ってDDLを定義したSQLファイルを読み込んで…

SQLでCRUD処理を行う

SinatraのメモアプリをDB化するにあたってSQLでCRUD処理を行う必要が出てきました。 SQLコマンドでCRUD処理を行う方法について改めて整理しました。 結論 下記のSQLコマンドででCRUD処理ができる。 Create: INSERT Read: SELECT Update: UPDATE Delete: DELE…

PostgreSQLでDBとテーブルの作成と削除を行う

Sinatraで作成したメモアプリのDB化にあたりまずはPostgreSQLでのDBとテーブルの作成と削除する方法について調べた。 結論 psql でログインした状態で下記コマンドでDB/テーブルの作成/削除が行える。 DB作成: CREATE DATABASE DB名; DB削除: DROP DATABASE …

PostgreSQLでDB作成する2つの方法

SinatraでメモアプリをDB化するにあたってPostgreSQLで新規でDB作成することになったのでメモ。 PostgreSQLのインストールはHomebrew経由で行った。 結論 PostgreSQLでDBを作成する方法は2つある。 方法1: psql にログインしてCREATE DATABASE を実行 方法2:…

PostgreSQLの基本操作

Sinatraで作成したメモアプリのDB化に伴いPostgreSQLを使うことになったので最低限の基本操作を復習しました。 基本操作 DB一覧表示 DBへの接続 psql の抜け方 バックスラッシュコマンド DB一覧表示 psql -l でデータベース一覧を表示できます。 $ psql -l L…

psqlコマンド実行時にFATAL: database "db_name" does not exist が出た時の対処

前回の記事でHomebrew経由でPostgreSQLをmacにインストールしました。 Postgresqlインストール直後にpsql コマンドで以下のエラーが発生したので対処についてのメモです。 $ psql psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed:…

PostgreSQLをHomebrewでmacにインストールする

FBCのSinatraを使ったプラクティスでPostgreSQLを使うのでHomebrewでのインストールから起動までをメモ。 PostgreSQL: macOS packages 環境 macOS 12.3.1 Homebrew 3.5.3 手順 インストールからパス確認。 # インストール $ brew update $ brew install post…