Ik heb PostgreSQL 8.4 op mijn CentOS-server geïnstalleerd en heb verbinding gemaakt met de rootgebruiker vanuit de shell en heb toegang tot de PostgreSQL-shell.
Ik heb de database en gebruiker gemaakt in PostgreSQL.
Terwijl ik probeer verbinding te maken vanuit mijn PHP-script, krijg ik te zien dat authenticatie is mislukt.
Hoe maak ik een nieuwe gebruiker aan en hoe kan ik deze machtigingen verlenen voor een bepaalde DB?
Antwoord 1, autoriteit 100%
Van CLI:
$ su - postgres
$ psql template1
template1=# CREATE USER tester WITH PASSWORD 'test_password';
template1=# GRANT ALL PRIVILEGES ON DATABASE "test_database" to tester;
template1=# \q
PHP (zoals getest op localhost, het werkt zoals verwacht):
$connString = 'port=5432 dbname=test_database user=tester password=test_password';
$connHandler = pg_connect($connString);
echo 'Connected to '.pg_dbname($connHandler);
Antwoord 2, autoriteit 13%
Maak de gebruiker met een wachtwoord :
http://www.postgresql.org/docs/current/static/sql-createuser .html
CREATE USER name [ [ WITH ] option [ ... ] ]
where option can be:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| CREATEUSER | NOCREATEUSER
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| CONNECTION LIMIT connlimit
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| IN GROUP role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
| USER role_name [, ...]
| SYSID uid
Verleen vervolgens de gebruikersrechten op een specifieke database:
http://www.postgresql.org/docs/current/static/sql-grant .html
Voorbeeld:
grant all privileges on database db_name to someuser;