Respostas:
Para senha menos login:
sudo -u user_name psql db_name
Para redefinir a senha se você esqueceu:
ALTER USER user_name WITH PASSWORD 'new_password';
rm ~/.psql_history
ALTER USER myuser RENAME TO newname;
... por algum motivo o Google estava me apontando aqui quando eu estava pesquisando que :)
Então digite:
$ sudo -u postgres psql
Então:
\password postgres
Então, para sair psql
:
\q
Se isso não funcionar, reconfigure a autenticação.
Edite /etc/postgresql/9.1/main/pg_hba.conf
(o caminho será diferente) e mude:
local all all peer
para:
local all all md5
Em seguida, reinicie o servidor:
$ sudo service postgresql restart
\p
, ele me dará a senha; se eu digitar \password postgres
dá os avisos senha e depois\p extra argument "assword" ignored; \p extra argument "postgres" ignored
sudo passwd postgres
Você pode e deve ter a senha do usuário criptografada:
ALTER USER username WITH ENCRYPTED PASSWORD 'password';
The password is always stored encrypted in the system catalogs. The ENCRYPTED keyword has no effect, but is accepted for backwards compatibility.
Acredito que a melhor maneira de alterar a senha é simplesmente usar:
\password
no console do Postgres.
Fonte:
É necessário ter cuidado ao especificar uma senha não criptografada com este comando. A senha será transmitida ao servidor em texto não criptografado e também poderá ser registrada no histórico de comandos do cliente ou no log do servidor. O psql contém um comando \ senha que pode ser usado para alterar a senha de uma função sem expor a senha de texto não criptografado.
de https://www.postgresql.org/docs/9.0/static/sql-alterrole.html .
\password username
Para alterar a senha usando a linha de comando do Linux, use:
sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"
Para alterar a senha
sudo -u postgres psql
então
\password postgres
agora insira Nova senha e confirme
depois \q
sair
Vá para o seu Postgresql Config e edite pg_hba.conf
sudo vim /etc/postgresql/9.3/main/pg_hba.conf
Então mude esta linha:
Database administrative login by Unix domain socket
local all postgres md5
para :
Database administrative login by Unix domain socket
local all postgres peer
Reinicie o serviço PostgreSQL via comando SUDO e, em seguida,
psql -U postgres
Agora você entrará e verá o terminal Postgresql
então entre
\password
e digite a NOVA senha para o usuário padrão do Postgres. Após alterar a senha com êxito novamente, vá para pg_hba.conf e reverta a alteração para "md5"
agora você estará logado como
psql -U postgres
com sua nova senha.
Deixe-me saber se você encontrar algum problema nele.
user@user-NC10:~$ psql -U postgres psql: FATAL: Peer authentication failed for user "postgres"
$version,' /usr/bin/psql: psql: line 26:
meu ($ version, $ cluster, $ db, $ port , $ host); ' Obrigado pela ajuda!
A configuração que eu tenho no meu servidor foi muito personalizada e só consegui alterar a senha depois de definir a autenticação confiável no pg_hba.conf
arquivo :
local all all trust
Não se esqueça de mudar isso de volta para senha ou md5
sudo systemctl restart postgresql.service
Este foi o primeiro resultado no google, quando eu estava procurando como renomear um usuário, então:
ALTER USER <username> WITH PASSWORD '<new_password>'; -- change password
ALTER USER <old_username> RENAME TO <new_username>; -- rename user
Alguns outros comandos úteis para o gerenciamento de usuários:
CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;
Mover usuário para outro grupo
ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;
Para o meu caso no Ubuntu 14.04 instalado com o postgres 10.3. Preciso seguir os seguintes passos
su - postgres
mudar usuário para postgres
psql
entrar no shell do postgres\password
então digite sua senha\q
sair da sessão shellEm seguida, você volta ao root executando exit
e configurando o seu pg_hba.conf
(o meu está em /etc/postgresql/10/main/pg_hba.conf
), certificando-se de ter a seguinte linha
local all postgres md5
service postgresql restart
postgres
usuário e insira o shell do postgres novamente. Ele solicitará uma senha.usa isto:
\password
digite a nova senha desejada para esse usuário e confirme-a. Se você não se lembra da senha e deseja alterá-la, pode efetuar login como postgres e, em seguida, usar o seguinte:
ALTER USER 'the username' WITH PASSWORD 'the new password';
Semelhante a outras respostas na sintaxe, mas deve-se saber que você também pode passar um md5 da senha para não transmitir uma senha de texto sem formatação.
Aqui estão alguns cenários de consequências não intencionais da alteração de uma senha de usuário em texto sem formatação.
log_statement = ddl
ou superiores, sua senha de texto sem formatação será exibida nos logs de erro.
Com isso dito, aqui é como podemos alterar a senha de um usuário criando um md5 da senha.
ex: "md5" + md5 (senha + nome de usuário)
Na festança:
~$ echo -n "passwordStringUserName" | md5sum | awk '{print "md5"$1}'
md5d6a35858d61d85e4a82ab1fb044aba9d
[PSCredential] $Credential = Get-Credential
$StringBuilder = New-Object System.Text.StringBuilder
$null = $StringBuilder.Append('md5');
[System.Security.Cryptography.HashAlgorithm]::Create('md5').ComputeHash([System.Text.Encoding]::ASCII.GetBytes(((ConvertFrom-SecureStringToPlainText -SecureString $Credential.Password) + $Credential.UserName))) | ForEach-Object {
$null = $StringBuilder.Append($_.ToString("x2"))
}
$StringBuilder.ToString();
## OUTPUT
md5d6a35858d61d85e4a82ab1fb044aba9d
ALTER USER
comando parecerá ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
A senha é sempre armazenada criptografada nos catálogos do sistema. A palavra-chave ENCRYPTED não tem efeito, mas é aceita para compatibilidade com versões anteriores. O método de criptografia é determinado pelo parâmetro de configuração password_encryption. Se a string de senha apresentada já estiver no formato criptografado por MD5 ou SCRAM, ela será armazenada como está, independentemente da senha_encryption (já que o sistema não pode descriptografar a string de senha criptografada especificada para criptografá-la em um formato diferente). Isso permite recarregar senhas criptografadas durante o dump / restore.
Em geral, basta usar a pg admin UI para realizar atividades relacionadas ao banco de dados.
Se, em vez disso, você se concentrar mais na automação da configuração do banco de dados para o seu desenvolvimento local, ou CI, etc.
Por exemplo, você pode usar uma combinação simples como esta.
(a) Crie um superusuário fictício via jenkins com um comando semelhante a este:
docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001
isso criará um super usuário chamado experiment001 em seu postgres db.
(b) Dê a esse usuário alguma senha executando um comando SQL NÃO Interativo.
docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "
O Postgres é provavelmente o melhor banco de dados disponível para ferramentas de linha de comando (não interativas). Criando usuários, executando SQL, fazendo backup do banco de dados etc ... Em geral, tudo é bastante básico com o postgres e, em geral, é bastante trivial integrá-lo aos scripts de instalação do desenvolvimento ou à configuração automatizada do IC.
e a maneira totalmente automatizada com bash e expect ( neste exemplo , provisionamos um novo administrador do postgres com o recém-provisionado postgres pw no nível de tempo de execução do SO e do postgres)
# the $postgres_usr_pw and the other bash vars MUST be defined
# for reference the manual way of doing things automated with expect bellow
#echo "copy-paste: $postgres_usr_pw"
#sudo -u postgres psql -c "\password"
# the OS password could / should be different
sudo -u root echo "postgres:$postgres_usr_pw" | sudo chpasswd
expect <<- EOF_EXPECT
set timeout -1
spawn sudo -u postgres psql -c "\\\password"
expect "Enter new password: "
send -- "$postgres_usr_pw\r"
expect "Enter it again: "
send -- "$postgres_usr_pw\r"
expect eof
EOF_EXPECT
cd /tmp/
# at this point the postgres uses the new password
sudo -u postgres PGPASSWORD=$postgres_usr_pw psql \
--port $postgres_db_port --host $postgres_db_host -c "
DO \$\$DECLARE r record;
BEGIN
IF NOT EXISTS (
SELECT
FROM pg_catalog.pg_roles
WHERE rolname = '"$postgres_db_useradmin"') THEN
CREATE ROLE "$postgres_db_useradmin" WITH SUPERUSER CREATEROLE
CREATEDB REPLICATION BYPASSRLS
PASSWORD '"$postgres_db_useradmin_pw"' LOGIN ;
END IF;
END\$\$;
ALTER ROLE "$postgres_db_useradmin" WITH SUPERUSER CREATEROLE
CREATEDB REPLICATION BYPASSRLS
PASSWORD '"$postgres_db_useradmin_pw"' LOGIN ;
"
TLDR:
Em muitos sistemas, a conta de um usuário geralmente contém um período ou algum tipo de punção (usuário: john.smith, horise.johnson). Nesses casos, uma modificação deverá ser feita na resposta aceita acima. A alteração requer que o nome de usuário seja citado duas vezes.
Example:
ALTER USER "username.lastname" WITH PASSWORD 'password';
Racional:
O Postgres é bastante exigente quando usar uma 'aspas duplas' e quando usar uma 'aspas simples'. Normalmente, ao fornecer uma string, você usaria uma aspas simples.