NixOS error: psql: FATAL: role "postgres" does not exist

NixOS error: psql: FATAL: role "postgres" does not exist

我试图在 NixOS 上使用 postgresql,当 运行ning $ psql -U postgres

时遇到以下错误
$ psql -U postgres
psql: FATAL:  role "postgres" does not exist

我在 运行ning $ psql 使用默认用户(我的用户名)时遇到了类似的错误。看来我的 postgres 安装没有可用于创建其他角色或 运行 任何命令的角色。

如何为我的 postgres 用户创建一个角色以便我可以发出命令?

我已经用 $ nix-env -i postgres 安装了 postgres 并按照 NixOS manual 配置,添加

services.postgresql.enable = true;
services.postgresql.package = pkgs.postgresql94;

到我的 /etc/nixos/configuration.nix 配置文件。

我还按照 example configuration 中的建议添加了 postgres 身份验证,因此我的 /etc/nixos/configuration.nix 文件的 postgresql 行看起来像

  # postgres
  services.postgresql.enable = true;
  services.postgresql.package = pkgs.postgresql94;
  services.postgresql.authentication = lib.mkForce ''
    # Generated file; do not edit!
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    local   all             all                                     trust
    host    all             all             127.0.0.1/32            trust
    host    all             all             ::1/128                 trust
    '';

在 NixOS 中,当数据库 cluster 被初始化(使用 postgres 的 initdb)时,数据库超级用户被设置为 root 而不是默认 postgres。所以 psql -U root 应该可以解决问题。