新しいインスタンス(PostgreSQLが "クラスタ"と呼ぶ)を作成して起動することで、rootのprivsなしでPostgreSQLを実行できます。
こうすると、Ubuntuのinitスクリプト、pg_ctlcluster
のようなラッパーツールなどを使うことはできません。 PostgreSQL独自のツールのみを使用する必要があります。ユーザー名に等しいスーパー、自分のホームディレクトリ内のデータディレクトリ、およびデフォルトで有効になったMD5認証、使用して新しいPostgreSQLインスタンスを作成するには
:必要に応じて調整し
initdb -D $HOME/my_postgres -A md5 -U $USER
。 initdb --help
を参照してください。
port
をデフォルトでないポートに変更するには、postgresql.conf
を編集する必要があります。システムがデフォルトポート5432で独自のポストグルを実行している可能性があります。代わりにlisten_addresses = ''
とunix_socket_directories = /home/myuser/postgres_socket
または何を設定する。しかし、それだけで別のポートを使用するように簡単です)
それを起動するには:。。
pg_ctl -D $HOME/my_postgres -w start
あなたが選択したポートを指定し、それに接続するには:
psql -p 5434 ...
(あなたがunix_socket_directories
を変更した場合、あなたはまた、あなたが-h /home/myuser/postgres_socket
のように、与えたパスを指定することをお勧めします。)
のようなものを追加するために、あなたの
~/.bashrc
を編集し、デフォルトでは、あなたのpostgresに接続
psql
などを作るために
export PGPORT=5434
ただし、他のホストへの接続のデフォルトポートにも影響することに注意してください。
それを停止する:
pg_ctl -D $HOME/my_postgres -w stop
しかし、あなたはまた、単にそれを停止せずにシャットダウンすることができ、それは気にしない、あなたは次のことを起動したときに安全に回復します。
ホームディレクトリに設定してログインするときに自動起動するには、デスクトップ環境の起動時実行機能を使用する必要があります。環境やバージョンによってそれらは異なりますので、ここでは詳しく説明できません。 GNOME 3、Unity(ubuntu)、KDE、XFCEなどとは異なります。
この方法でも、PostgreSQL用にパッケージが使用されます。これは、PostgreSQL 9.4をアンインストールして(例えば)9.6をインストールすると、あなたのホームディレクトリのコピーが機能しなくなるため重要です。システムパッケージを完全に独立させたい場合は、システムを制御しない場合のように、PostgreSQLをソースからコンパイルするか、バイナリインストーラを使用してホームディレクトリにインストールする必要があります。
システムサービスを実行する場合は、root権限が必要です。しかし、自分のユーザアカウントでPostgresqlをローカルで実行することは可能です。そして、 'createdb'はrootを必要としません(Postgresへのアクセスは、Postgres管理者として、どのOSユーザでもリモートユーザでも可能です)。 – Thilo
@Thilo Postgresqlをローカルで実行する方法を説明できますか? – JHu