Le ven. 6 août 2021 à 08:53, Matthias Apitz <g...@unixarea.de> a écrit :

>
> Hello,
>
> testpos@srap53dxr1:~> psql --help
>   ...
>   -d, --dbname=DBNAME      database name to connect to (default: "testpos")
>
> testpos@srap53dxr1:~> whoami
> testpos
>
> testpos@srap53dxr1:~> env | grep PG
> PGPASSWORD=xxxxxxxx
> PGHOST=localhost
> PGPORT=5432
>
> testpos@srap53dxr1:~> LANG=C psql -Usisis
> psql (13.3)
> Type "help" for help.
>
> sisis=# \l
>                                   List of databases
>    Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access
> privileges
>
> -----------+----------+----------+-------------+-------------+-----------------------
>  postgres  | postgres | UTF8     | de_DE.UTF-8 | de_DE.UTF-8 |
>  sisis     | sisis    | UTF8     | de_DE.UTF-8 | de_DE.UTF-8 |
>  ...
>
> Why psql connects to the database 'sisis'? I was expecting that it
> will try to connect to a database 'testpos' as this is the UNIX login
> and as '-d....' was not specified. I was expecting in this case an
> error like this:
>
> testpos@srap53dxr1:~> export PGDATABASE=testpos
> testpos@srap53dxr1:~> psql -Usisis
> psql: error: FATAL:  database »testpos« does not exist
>
> What do I uderstand wrong?
>

When you try to connect without specifying a database name on the command
line, psql will check PGDATABASE. If unset, it will use the PostgreSQL user
name also as the database name. If you don't specify explicitly the
PostgreSQL username, it will check PGUSER and, if unset, will use the OS
username.

That matches all your examples above.


-- 
Guillaume.

Reply via email to