root user、super user、serおよびpermissions!についてかなり混乱しています!ユーザー「athleticu」内にデータベースを作成できません。以下は私が使用したコマンドです:-
athleticu@ip-172-30-4-103:/home/ubuntu$ createdb -T template0 simple_db1
createdb: database creation failed: ERROR: permission denied to create database
athleticu@ip-172-30-4-103:/home/ubuntu$ Sudo createdb -T template0 simple_db1
Sudo: unable to resolve Host ip-172-30-4-103
createdb: could not connect to database template1: FATAL: role "root" does not exist
誰かが私の疑問を明確にして、何を書くべきか教えてください!
ちょっと私はすでにこれを解決しました。次のように、最初にpostgresユーザーとしてログインする必要があります。
$ su postgres
$ psql
postgres=# alter user athleticu createdb;
ALTER ROLE
それがあなたを助けることを願っています:)
タイプ\du
をpsqlに入力すると、すべての登録済みユーザーと各ユーザーが持つ特権のタイプのリストが表示されます。ログインしているユーザー(例: 'user1')に特権を付与するには、次のコマンドを使用して、そのリストのスーパーユーザーロールの1つ(例: 'user2')を使用してサインアウトしてログインする必要がありました。
psql -U 'user2' -h localhost 'database2'
ここで、「database2」は、特定のスーパーユーザー「user2」が特権を持っているものの名前です。スーパーユーザーとしてログインしたら、次の方法で「user1」に権限を付与できます。
ALTER ROLE user1 WITH CREATEDB
または
ALTER ROLE user1 WITH SUPERUSER
次に、user1として再びサインインします。user1はスーパーユーザーになりました。
rootユーザーは、Postgresから独立したシステム上のアカウントです。 rootユーザーは1人だけです。
スーパーユーザーは、すべてにアクセスできるPostgresのアカウントです。多くのスーパーユーザーが存在する場合があります。
システムアカウントとPostgresアカウントは異なりますが、データベースへの接続時にPostgresユーザー名を指定しない限り(psql
、createdb
、dropdb
などのユーティリティを使用) 、同じ名前の対応するPostgresアカウントがあることを期待して、現在のシステムユーザーの名前を使用します。 root userは、デフォルトでは、Postgresに対応するアカウントを持ちません。
* nixにPostgresをインストールすると、postgres
という名前のsuperuserとpostgres
という名前のシステムユーザーの両方が作成されます。
したがって、Postgresを組み込みのスーパーユーザーとして使用する必要がある場合、2つのオプションがあります。
Sudo su - postgres
がpostgres
システムユーザーになり、コマンド(createdb
、psql
など)を実行できます。システムユーザーはデータベースのスーパーユーザーと同じ名前を持っているため、コマンドは適切なアカウントとして接続します。-U
スイッチのように、実行するユーザー名を指定できます(例:psql -U postgres ...
)。Postgresサーバーの認証設定に応じて、どちらかまたは両方の接続方法でパスワードを入力する必要があります。
PostgreSQLを新規インストールしたときにできることは、いくつかの権限を持つユーザーを作成することです( createuser documentation を参照)。
my-user> Sudo su - postgres -c "createuser <my-user> --createdb"
これにより、my-user
次のようにDBを作成します。
my-user> createdb <my-db>
my-user
を使用するだけで何でもできるようにするには--superuser
フラグの代わりに:
my-user> Sudo su - postgres -c "createuser <my-user> --superuser"