我想创建一个PostgreSQL数据库,并能够以创建时指定的用户身份进行连接。因此,我正在使用initdb
和createdb
。但是,initdb --user
/ -U
选项似乎被忽略了:
> cd `mktemp -d`
> /usr/lib/postgresql/9.6/bin/initdb --user=user1 test1
The files belonging to this database system will be owned by user "richter".
This user must also own the server process.
The database cluster will be initialized with locale "de_DE.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "german".
Data page checksums are disabled.
creating directory test1 ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
/usr/lib/postgresql/9.6/bin/pg_ctl -D test1 -l logfile start
使用createdb
命令启动服务器后与postgres
的连接失败,因为user1
不可用。 richter
是执行命令的用户。
我在Ubuntu 17.04上使用PostgreSQL 9.6。
答案 0 :(得分:1)
两件事:
您正在混淆数据库用户和操作系统用户。
由于您以操作系统用户initdb
运行richter
,该用户将拥有数据库文件和数据库服务器进程。
用户user1
是数据库超级用户。
您必须使用--username
或-U
选项指定数据库用户psql
,createdb
和其他PostgreSQL客户端应用程序。
您应该显示命令和错误消息,而不是说“连接失败”。