在mint ubuntu上重新安装了postgres 8.4.如何创建postgres用户并使用psql登录?

当我输入psql时,它只会告诉我

psql: FATAL: Ident authentication failed for user "my-ubuntu-username"

推荐答案

有两种方法可以使用.两者都需要在数据库中创建一个用户and.

默认情况下,psql连接到与用户同名的数据库.因此,有一个惯例将其定为"user's database".如果用户只需要一个数据库,就没有理由打破这种惯例.我们将使用mydatabase作为示例数据库名称.

  1. Using createuser and createdb,我们可以明确数据库名称,

    $ sudo -u postgres createuser -s $USER
    $ createdb mydatabase
    $ psql -d mydatabase
    

    您可能应该完全忽略这一点,让所有命令都默认为用户名.

    $ sudo -u postgres createuser -s $USER
    $ createdb
    $ psql
    
  2. Using the SQL administration commands, and connecting with a password over TCP

    $ sudo -u postgres psql postgres
    

    然后在psqlshell 中

    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
    

Sidenote: the postgres user

我建议NOT修改postgres用户.

  1. 它通常是从操作系统锁定的.没有人应该以postgres的身份"登录"操作系统.你应该有root才能认证为postgres.
  2. 它通常不受密码保护,并委托给主机操作系统.这是good thing.这通常意味着,要以postgres(相当于SQL Server SA的PostgreSQL)身份登录,您必须具有对底层数据文件的写访问权限.而且,这意味着,你通常可以 destruct 浩劫无论如何.
  3. 通过禁用此选项,可以消除通过指定超级用户进行暴力攻击的风险.隐藏和隐藏超级用户的名字有好处.

Postgresql相关问答推荐

PostgreSQL:`row_alias为null`且`row_alias不是null`返回值不一致

为什么在PostgreSQL中CPU_INDEX_TUPLE_COST与CPU_TUPLE_COST不同

PostgreSQL plpgsql函数问题

如何在PostgreSQL中更改分区的表空间?

自左联接的POSTGIS更新

如何使用 Grafana 测量 PostgreSQL 中的复制

如何在 PostgreSQL 的回归测试中测试 TYPE 发送和接收函数

为什么这里的默认格式不同? (ISO 8601 的两种不同实现)

PostgreSQL - 我应该如何使用 first_value()?

如何将 DELETE 的返回值插入到 postgresql 中的 INSERT 中?

在查询中的复合外键/主键列上连接表

postgresql 在查询中插入空值

Postgres 中的相似函数与 pg_trgm

如何防止用户看到其他数据库和其他数据库中的表?

Psycopg2 使用占位符插入表格

PostgreSQL:将时间戳转换为时间 - 或仅从时间戳列中检索时间

将数据从 MS SQL 迁移到 PostgreSQL?

解释结果中的Recheck Cond是什么意思?

Postgresql 中的 NOT EXISTS 子句

在 Flask-sqlalchemy 和 Postgresql 中使用 JSON 类型