Executando o servidor PostgreSQL no Void Linux. Após a instalação, execute initdb
como usuário do sistema operacional “postgres”:
[user@host]$ sudo -u postgres -i $ initdb -D "/var/lib/postgresql/data"
Resultado recebido:
criando diretório / var / lib / postgresql / data … ok criando subdiretórios … ok selecionando default max_connections … 100 selecionando default shared_buffers … 128 MB selecionando dynamic shared implementação de memória … posix criando arquivos de configuração … ok executando script de bootstrap … ok executando inicialização pós-bootstrap … local: Não é possível definir LC_MESSAGES para o local padrão: Não existe esse arquivo ou diretório ok sincronizando dados com o disco … ok
AVISO: habilitando a autenticação “confiável” para conexões locais Você pode mudar isso editando pg_hba.conf ou usando a opção -A, ou –auth-local e –auth-host, na próxima vez você executa o initdb.
Sucesso. Agora você pode iniciar o servidor de banco de dados usando: pg_ctl -D / var / lib / postgresql / data -l logfile start
Em seguida, comecei a criar o serviço, conceda a propriedade ao “postgres” e inicie-o:
[user@host]$ ln -s /etc/sv/postgresql /var/service [user@host]$ sudo chown postgres: /var/service/postgresql [user@host]$ sudo sv start postgresql [user@host]$ ls -l /var/service/postgresql lrwxrwxrwx 1 postgres postgres 18 nov 2 17:05 /var/service/postgresql -> /etc/sv/postgresql
Executando:
[user@host]$ sudo -u postgres psql ...
me dará o seguinte erro:
psql: FATAL: role "postgres" does not exist
Eu “tentei conceder a propriedade de /etc/sv/postgresql
para “postgres”, mas sem sorte.
Estas foram minhas fontes:
https://wiki.voidlinux.eu/PostgreSQL
Erro PostgreSQL: Fatal: a função “nome de usuário” não existe
Não sei o que fazer a seguir.
EDITAR: Tropeçou em psql: FATAL: o papel “postgres” não existe . Não é possível executar psql -l
porque recebo o mesmo erro, independentemente do usuário que executo psql
como.
Comentários
Resposta
Não é uma resposta completa, mas considere o manual sobre initdb
aqui :
-U
username
--username=
username
Seleciona o nome de usuário do superusuário do banco de dados. O padrão é o nome do usuário efetivo executando
initdb
. Não é realmente importante qual é o nome do superusuário, mas pode-se escolher manter o nome usual postgres, mesmo se o nome do usuário do sistema operacional for diferente.
Significa …
-
Ao executar
initdb
como usuário do sistema operacionalpostgres
, a função inicial de superusuário do banco de dados épostgres
também – no Postgres padrão. Já ouvi falar de sistemas que violam essa regra … -
Você deve ser capaz de forçar o nome
postgres
com--username=postgres
para o superusuário inicial – a menos que seu pacote tenha mexido seriamente com tudo isso.
Comentários
- Uau , isso me apontou a direção certa, certo. Eu sabia que vi aquele
-U
sinalizar em algum lugar e era daqui: stackoverflow.com/questions/50746147/… Posso ter interpretado mal a resposta de Laurenz ' lá, mas corriinitdb -U UTF8 -D /var/lib/postgresql/data
e adivinhe a função inicial de superusuário do banco de dados era. De qualquer forma, acabei quase quebrando todo o meu sistema devido à exaustão. Um dia bastante produtivo. Obrigado por sua dedicação Erwin, sua ajuda é muito apreciada. - @Jakov:
-U UTF8
. Ai. Era para ser-E UTF8
, presumo? Desculpe pelo dia perdido devido a uma carta embaralhada sorrateira. Então, novamente: se você tivesse mostrado seu comando real na pergunta para começar, poderíamos ter economizado metade do seu dia …
role "postgres" does not exist
: não há função de banco de dados chamada " postgres ". É a única instalação do Postgres na mesma máquina? (Então, você tem certeza de se conectar à instância certa?) Em caso afirmativo, a pergunta é: qual função de banco de dados é configurada por sua instalação. Não ' não conheço o Void Linux ou o gerenciador de pacotes XPBS o suficiente para dizer mais. Pode ser mais adequado para superusuário.SE ou unix.SE.initdb
e, em seguida, conecte-se com o usuário do sistema operacional de mesmo nome para ter acesso concedido pelo " trust " método de autenticação. Obviamente, não " postgres " (que seria o padrão normal).session_replication_role = 'origin'
. Acho que não uso muito disso.:%s/XPBS/XBPS/g