在 mint ubuntu 上安装了新的 postgres 8.4。如何为 postgres 创建用户并使用 psql 登录?
当我输入 psql 时,它只会告诉我
psql: FATAL: Ident authentication failed for user "my-ubuntu-username"
在 mint ubuntu 上安装了新的 postgres 8.4。如何为 postgres 创建用户并使用 psql 登录?
当我输入 psql 时,它只会告诉我
psql: FATAL: Ident authentication failed for user "my-ubuntu-username"
您可以使用两种方法。两者都需要创建用户和数据库。
默认情况下 psql 连接到与用户同名的数据库。因此,有一个约定将其设为“用户的数据库”。如果您的用户只需要一个数据库,则没有理由打破该约定。我们将使用mydatabase
示例数据库名称。
使用 createuser 和 createdb,我们可以明确数据库名称,
$ sudo -u postgres createuser -s $USER
$ createdb mydatabase
$ psql -d mydatabase
您可能应该完全忽略这一点,而让所有命令默认为用户名。
$ sudo -u postgres createuser -s $USER
$ createdb
$ psql
使用 SQL 管理命令,并通过 TCP 使用密码进行连接
$ sudo -u postgres psql postgres
然后在 psql shell
CREATE ROLE myuser LOGIN PASSWORD 'mypass';
CREATE DATABASE mydatabase WITH OWNER = myuser;
然后就可以登录了,
$ psql -h localhost -d mydatabase -U myuser -p <port>
如果您不知道端口,您始终可以通过以postgres
用户身份运行以下命令来获取它,
SHOW port;
或者,
$ grep "port =" /etc/postgresql/*/main/postgresql.conf
postgres
用户我建议不要修改postgres
用户。
postgres
. 您应该有 root 才能以postgres
.postgres
PostgreSQL 等效的 SQL Server身份登录SA
,您必须具有对底层数据文件的写访问权限。而且,这意味着无论如何您通常都会造成严重破坏。默认情况下,您需要使用 postgres 用户:
sudo -u postgres psql postgres
您得到的错误是因为 your-ubuntu-username 不是有效的 Postgres 用户。
你需要告诉 psql 使用什么数据库用户名
psql -U postgres
您可能还需要指定要连接的数据库
psql -U postgres -d <dbname>
使用 postgres 用户或我们创建的任何其他用户登录的主要区别在于,当使用 postgres 用户时,不需要使用-h指定主机,而是指定另一个用户 if。
$ psql -U postgres
# CREATE ROLE usertest LOGIN PASSWORD 'pwtest';
# CREATE DATABASE dbtest WITH OWNER = usertest;
# SHOW port;
# \q
$ psql -h localhost -d dbtest -U usertest -p 5432
总帐
您还可以作为“普通”用户(不是 postgres)连接到数据库:
postgres=# \connect opensim Opensim_Tester localhost;
Password for user Opensim_Tester:
You are now connected to database "opensim" as user "Opensim_Tester" on host "localhost" at port "5432"
如果您的数据库客户端使用 TCP/IP 连接并且您在 pg_hba.conf 中配置了 ident auth,请检查您是否安装并运行了 identd。即使您只有本地客户端连接到“localhost”,这也是强制性的。
还要注意,现在 identd 可能必须启用 IPv6 才能使Postgresql 欢迎连接到 localhost 的客户端。