2016-11-16 9 views
0

ずにPostgreSQLデータベースを作成します。現在、私は、データベースを作成するために、PostgreSQLサーバとは、root権限

$ sudo -u postgres createdb testdb --owner ownername 

を開始する

$ sudo service postgresql start  

を使用しています。ただし、これらのコマンドにはroot特権が必要です。 Linux(Ubuntu)でroot権限/ sudoなしでこれらを実行するにはどうすればよいですか?

+0

システムサービスを実行する場合は、root権限が必要です。しかし、自分のユーザアカウントでPostgresqlをローカルで実行することは可能です。そして、 'createdb'はrootを必要としません(Postgresへのアクセスは、Postgres管理者として、どのOSユーザでもリモートユーザでも可能です)。 – Thilo

+0

@Thilo Postgresqlをローカルで実行する方法を説明できますか? – JHu

答えて

5

新しいインスタンス(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をソースからコンパイルするか、バイナリインストーラを使用してホームディレクトリにインストールする必要があります。

関連する問題