2022-10-23



DebianやUbuntuでデータディレクトリを好きな場所にしてinitdbする方法があまり紹介されてないのでノート。
インストール
apt install postgresql # Debian pkg install postgresql12-server # FreeBSD
**FreeBSDの場合**
データディレクトリを変更して、かつ自分所有で起動可能
/home/pgdata ユーザーhogeuserとすると
cd /home mkdir pgdata chmod go-rwx pgdata #所有者以外見れないようにしないとエラー chown hogeuser:hogegroup pgdata #自分所有にする
とし、
/etc/rc.conf
postgresql_enable="YES" postgresql_data="/home/pgdata" postgresql_user="hogeuser"
として、初期化
/usr/local/etc/rc.d/postgresql initdb
**Debianの場合**
FreeBSDとは異なりすでにセットアップされた状態でインストールされるが、
カスタムディレクトリへinitdbし直すことはできる。
設定ファイルはそのまま/etc以下のものを使いたいので、オーナーはpostgresとする。
cd /home mkdir pgdata chmod go-rwx pgdata #所有者以外見れないようにしないとエラー chown postgres:postgres pgdata #postgres所有にする sudo -s -u postgres #ここからはpostgresになり作業 export LC_ALL="en_GB.UTF-8" export LC_CTYPE="en_GB.UTF-8" export LANG="en_GB.UTF-8" /usr/lib/postgresql/9.6/bin/initdb --encoding=utf-8 --lc-collate=C -D /home/pgdata
これでデフォルトとは別にデータディレクトリを作成したので、
/etc/postgresql/9.6/main/postgresql.conf
の、
data_directory = '/var/lib/postgresql/9.6/main' # use data in another directory
を、
data_directory = '/home/pgdata' # use data in another directory
と変更すればOK。initdbでカスタムデータディレクトリにもpostgresql.conf,pg_hba.confが作成されるが、これらは無視し引き続き/etc以下のもので設定すればOK。(変えるのはdata_directoryだけ)
設定ファイル編集
FreeBSDの場合データディレクトリ直下、
Debianの場合/etc/postgresql/9.6/main/以下。
cp -p postgresql.conf postgresql.conf.default
vi postgresql.conf
デフォルトからの変更箇所
listen_addresses = '*' # what IP address(es) to listen on; #log_destination = 'syslog' logging_collector = on # Enable capturing of stderr and csvlog log_directory = 'pg_log' # directory where log files are written, log_filename = 'postgresql-%Y%m%d.log' # log file name pattern, log_truncate_on_rotation = on # If on, an existing log file with the log_rotation_age = 1d # Automatic rotation of logfiles will log_line_prefix = '%t %r:%u:%d ' # special values: autovacuum = on # Enable autovacuum subprocess? 'on'
ログをデータdirのpg_logに日付ごとに格納していく Apache方式
システムに余裕があるならメモリ設定系を増やしてみるのも良い。
以下は既定の3倍
# - Memory - shared_buffers = 512MB # min 128kB temp_buffers = 24MB # min 800kB work_mem = 12MB # min 64kB max_stack_depth = 6MB # min 100kB
vi pg_hba.conf
#local all postgres peer #local all all peer local all all trust #host all all 127.0.0.1/32 md5 host all all 127.0.0.1/32 trust host all all 192.168.1.0/24 md5 #host all all ::1/128 md5
localhostからの接続はパスワードが要らない設定
md5でなくtrustにすると、パスワードが不要になる
内部ネットワークからの接続はパスワードが必要
再起動
# Debian /etc/init.d/postgresql stop /etc/init.d/postgresql start # FreeBSD /usr/local/etc/rc.d/postgresql stop /usr/local/etc/rc.d/postgresql start
pg_log/postgresql-YYYYMMDD.logが作成されているか確認。
次にpostgresユーザでpsqlし初期設定
psql -U postgres -l psql -U postgres postgres psql (9.6.10) \du alter role postgres with password 'XXXXXXXXX'; # パスワード変更 \q
新規スーパーユーザーを作成する場合
createuser -U postgres -P -s hogeuser 新しいロールのためのパスワード: XXXXXXXXXX
新規一般ユーザーを作成する場合
createuser -U postgres -P ippanuser 新しいロールのためのパスワード: XXXXXXXXXX psql -U postgres postgres alter role ippanuser createdb; # DB作成権限付与 \du
データベース作成例(initdbデフォルトではUTF-8ロケール)
createdb -T template0 -E UTF-8 testdb
他の文字コードの場合はlocaleをつける
createdb -T template0 -E EUC-JP --locale=C testdb
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【Swift UI】Cannot assign value of type Bindingエラーの対処法
【Swift UI】Extra argument in callの対処法
【Swift UI】navigationBarBackButtonHiddenはしたいがスワイプ操作で戻るは有効にしたい場合
【Swift UI】GeometryReader内のViewの位置が左にずれてしまう場合
XcodeでSwift UIアプリ実行時EXC_BAD_ACCESSエラーが出た場合
【Swift UI】右から登場し右へ消えるアニメーションボタンビュー
【Xcode】無償デベロッパで実機テストするまでのメモ
【Swift UI】アニメーションとトランジションの種類
【Swift UI】Hello Worldをフェードイン・アウトさせる
進研ゼミチャレンジタッチをAndroid端末化する
Googleスプレッドシートを編集したら自動で更新日時を入れる
Windows版Google Driveが使用中と言われアンインストールできない場合
Androidホームで左にスワイプすると出てくるニュース共を一切表示させない方法
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
【Javascript】JSON配列内にある特定要素の取得法【Node.js】
【Apache】サーバーに同時接続可能なクライアント数を調整する
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
LinuxからWindowsの共有フォルダをマウントする