AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 54241
Accepted
port5432
port5432
Asked: 2013-12-03 01:52:58 +0800 CST2013-12-03 01:52:58 +0800 CST 2013-12-03 01:52:58 +0800 CST

Conceder superusuário postgres à conta linux

  • 772

No meu laptop de desenvolvimento (Ubuntu linux), tenho uma conta do sistema operacional postgres , que possui a instalação do Postgres.

Quando eu quiser executar qualquer atividade postgres, criar/eliminar bancos de dados, etc., devo primeiro acessar a conta postgres.

$ sudo su postgres

Como posso alterar minha própria conta de sistema operacional para ter os privilégios de nível de sistema operacional de postgres , para que não precise su ?

postgresql linux
  • 2 2 respostas
  • 12023 Views

2 respostas

  • Voted
  1. Best Answer
    Craig Efrein
    2013-12-03T05:09:58+08:002013-12-03T05:09:58+08:00

    Crie o usuário no sistema operacional

    # Identify yourself as root
    su - 
    
    # Create the user who will have access to a postgres database
    useradd mypostgresuser
    
    # Add a password
    passwd mypostgresuser
    

    Dê aos usuários locais acesso ao postgres

    Você precisa localizar o diretório de dados para a instalação do postgresql, ou seja, onde você criou os arquivos do banco de dados. Eles geralmente estão localizados em /var/lib/pgsql/data. O valor para sua instalação pode estar disponível na variável de ambiente$PGDATA

    # Make sure that local users can access postgres
    cat /${PGDATA}/pg_hba.conf
    
    # this was the default setting on my 8.4 install
    # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
    
    # "local" is for Unix domain socket connections only
    local   all         all
    

    se você fizer alguma alteração, será necessário recarregar o postgres

    /etc/init.d/postgresql reload
    

    Ou como postgres

    pg_ctl reload -D ${PGDATA}
    

    Agora conecte-se ao psql como postgres

    # Create the user in postgres
    postgres=# create user mypostgresuser;
    CREATE ROLE
    
    # Give that user access to a database
    postgres=# grant all privileges on database mytestdb to mypostgresuser;
    GRANT
    

    Teste a conexão

    # Identify yourself as mypostgresuser
    su - mypostgresuser
    
    # Connect to the database
    psql -d mytestdb 
    
    • 6
  2. mivk
    2020-04-20T10:18:01+08:002020-04-20T10:18:01+08:00

    Você também pode usar pg_ident.confpara mapear um usuário do sistema para um usuário do postgresql.

    1. Edite pg_ident.conf

    Por exemplo, para permitir que o usuário "root" seja executado psqlcomo o usuário "postgres" ( psql -U postgres ...), mapeie-o pg_ident.confadicionando uma linha como

    root2pg  root  postgres
    

    2. Edite pg_hba.conf

    Em seguida, em pg_hba.conf, altere esta linha:

    local  all  postgres  peer
    

    para adicionar "map=root2pg" no final:

    local  all  postgres  peer map=root2pg
    

    3. Reinicie o postgresql

    systemctl restart postgresql
    

    Você pode usar qualquer string que desejar para o nome do mapa (aqui "root2pg") e permitir outros usuários além do root (a 2ª coluna em pg_ident.conf)

    Para tornar isso muito genérico e fácil de copiar e colar em diferentes máquinas que podem ter várias versões diferentes do postgresql, você pode fazer isso com algo como:

    allow=root; as=postgres;
    
    export mapname=${allow}2$as 
    printf '%-16s%-24s%s\n' $mapname $allow $as >> /etc/postgresql/*/main/pg_ident.conf
    perl -i.bak -pe 's/(^local\s+all\s+postgres\s+peer)\s*$/$1 map=$ENV{mapname}\n/' /etc/postgresql/*/main/pg_hba.conf
    

    (O uso de printf ao invés de echo é apenas para alinhar com as colunas existentes no padrão pg_ident.conf)

    • 2

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve