私はPostgreSQL 9.1をセットアップしています。 PostgreSQLでは何もできません。createdb
、createuser
はできません。すべての操作はエラーメッセージを返します
Fatal: role h9uest does not exist
h9uest
は私のアカウント名で、私はこのアカウントの下でSudo apt-get install
PostgreSQL 9.1です。root
アカウントについても同様のエラーが続きます。
オペレーティングシステムユーザーpostgres
を使用して、データベースを作成します-オペレーティングシステムに対応する必要な特権を持つdatabaseロールを設定していない場合同じ名前のシステムユーザー(あなたの場合はh9uest
):
Sudo -u postgres -i
その後、再試行してください。システムユーザーexit
として操作を完了したら、postgres
と入力します。
または単一のコマンドcreateuser
as postgres
with Sudo
のように、 dreesで実証 別の答え。
ポイントは、同じ名前のデータベースロールに一致するオペレーティングシステムユーザーを使用して、 ident
authentication経由でアクセスを許可することです。 。 postgres
は、データベースクラスターを初期化したデフォルトのオペレーティングシステムユーザーです。 マニュアル:
データベースシステムをbootstrapするために、新しく初期化されたシステムには常に1つの事前定義されたロールが含まれています。このロールは常に「スーパーユーザー」であり、デフォルトでは(
initdb
の実行時に変更されない限り)データベースクラスターを初期化したオペレーティングシステムユーザーと同じ名前になります。通常、このロールにはpostgres
という名前が付けられます。さらにロールを作成するには、最初にこの初期ロールとして接続する必要があります。
非標準のユーザー名やオペレーティングシステムユーザーが存在しない奇妙なセットアップを聞いたことがあります。そこで戦略を調整する必要があります。
他の多くの人々の解決策を試みた後、そして成功せずに、この答えはついに私を助けた。
https://stackoverflow.com/a/16974197/2433309
一言で言えば、実行中
Sudo -u postgres createuser owning_user
ownering_userという名前のロールを作成します(この場合はh9uest)。その後、あなたはpostgres環境に入る必要なしにあなたが設定したどんなアカウント名でも端末からrake db:create
を実行することができます。
Sudo su - postgres
psql template1
「スーパーユーザー」としての権限を持つpgsql上でロールを作成します。
CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;
それからユーザーを作成しなさい
CREATE USER username;
eg. CREATE USER demo;
ユーザーに特権を割り当てます
GRANT ROOT TO username;
そして、そのユーザーのログインを有効にすると、通常のpsql template1
端末から、例えば:$
を実行できます。
ALTER ROLE username WITH LOGIN;
apt-get
を使用してpostgresをインストールしてもユーザロールやデータベースは作成されません。
個人ユーザーアカウント用のスーパーユーザーロールとデータベースを作成するには、次の手順を実行します。
Sudo -u postgres createuser -s $(whoami); createdb $(whoami)
これは私のために働く:
psql -h localhost -U postgres
働き方法、
vi /etc/postgresql/9.3/main/pg_hba.conf
local all postgres peer
ここで peer を trust に変更します。再起動、Sudo service postgresql restart
今試してみてください、psql -U postgres
Rootユーザーのプロンプトではなく、ローカルユーザーのプロンプトで、次のように入力します。
Sudo -u postgres createuser <local username>
その後、ローカルユーザーのパスワードを入力します。
次に、「role 'username'は存在しません」という生成された前のコマンドを入力します。
もしそうでなければ、上記のステップのために端末メッセージを送ってください。
私はそれをmacOSにインストールし、そしてしなければならなかった:
cd /Applications/Postgres.app/Contents/Versions/9.5/bin
createuser -U postgres -s YOURUSERNAME
createdb YOURUSERNAME
ここにソースがあります: https://github.com/PostgresApp/PostgresApp/issues/313#issuecomment-192461641
バージョン Postgres 9.5 には、次のコマンドを使用します。
psql -h localhost -U postgres
これが役立つことを願っています。
手動でDBクラスターを作成すると、私の場合は解決しました。
何らかの理由で、私がpostgresをインストールしたとき、 "initial DB"は作成されませんでした。 initdb
を実行するとうまくいきました。
この解決方法は PostgreSQL Wiki - 最初のステップ にあります。
initdb
通常、あなたのOSにpostgresをインストールすると、 "初期DB"が作成され、postgresサーバデーモンが起動します。そうでない場合は、 initdbを実行する必要があります
これらのステップに従うと、それはあなたのために働くでしょう:
msfconsole
を実行するdb_connect user:pass@Host:port.../database
申し訳ありませんが、覚えていませんが、このような場合は、ユーザーとパスワード、ホストとデータベースを、database.yml
に含まれる情報に置き換えます。配置:/usr/share/metasploit-framework/config
msfconsole: msf>db_status
と入力すると接続されていることを確認できます。--no-owner --no-privileges
フラグを使用したダンプと復元
例えば.
ダンプ-pg_dump --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname > /tmp/full.dump
復元-pg_restore --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname /tmp/full.dump
Windows usersの場合:psql -U postgres
PostgreSQLへのコマンドラインインターフェースが表示されます。postgres=#
psql postgres
postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;