2023-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
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Windowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Python】Spacyを使用して文章から出発地と目的地を抜き出す
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
Windows版Google Driveが使用中と言われアンインストールできない場合
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする
【Apache】サーバーに同時接続可能なクライアント数を調整する
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
【Linux】iconv/libiconvをソースコードからインストール
Ubuntu Server 21.10でイーサリアムブロックチェーン【その5】