답변:
비밀번호가 적은 로그인의 경우 :
sudo -u user_name psql db_name
잊어 버린 경우 비밀번호를 재설정하려면 다음을 수행하십시오.
ALTER USER user_name WITH PASSWORD 'new_password';
rm ~/.psql_history
ALTER USER myuser RENAME TO newname;
... 어떤 이유로 Google에서 인터넷 검색을 할 때 여기에서 나를 가리키고있었습니다 :)
그런 다음 다음을 입력하십시오.
$ sudo -u postgres psql
그때:
\password postgres
그런 다음 종료합니다 psql
:
\q
그래도 작동하지 않으면 인증을 다시 구성하십시오.
편집 /etc/postgresql/9.1/main/pg_hba.conf
(경로가 다름) 및 변경 :
local all all peer
에:
local all all md5
그런 다음 서버를 다시 시작하십시오.
$ sudo service postgresql restart
\p
하면 암호가 제공됩니다. 에서 I 형 경우 \password postgres
는 암호 다음 경고를 제공합니다\p extra argument "assword" ignored; \p extra argument "postgres" ignored
sudo passwd postgres
사용자의 비밀번호를 암호화 할 수 있고 있어야합니다.
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.
암호를 변경하는 가장 좋은 방법은 단순히 사용하는 것입니다.
\password
Postgres 콘솔에서.
출처:
이 명령으로 암호화되지 않은 비밀번호를 지정할 때는주의해야합니다. 암호는 일반 텍스트로 서버에 전송되며 클라이언트의 명령 기록 또는 서버 로그에 기록 될 수도 있습니다. psql에는 일반 텍스트 비밀번호를 노출시키지 않고 역할 비밀번호를 변경하는 데 사용할 수있는 \ password 명령이 포함되어 있습니다.
에서 https://www.postgresql.org/docs/9.0/static/sql-alterrole.html .
\password username
Linux 명령 행을 사용하여 비밀번호를 변경하려면 다음을 사용하십시오.
sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"
비밀번호를 변경하려면
sudo -u postgres psql
그때
\password postgres
이제 새 비밀번호를 입력하고 확인
그런 다음 \q
종료
Postgresql 설정으로 이동하여 pg_hba.conf를 편집하십시오
sudo vim /etc/postgresql/9.3/main/pg_hba.conf
그런 다음이 줄을 변경하십시오.
Database administrative login by Unix domain socket
local all postgres md5
~까지 :
Database administrative login by Unix domain socket
local all postgres peer
그런 다음 SUDO 명령을 통해 PostgreSQL 서비스를 다시 시작한 다음
psql -U postgres
당신은 이제 입력되고 Postgresql 터미널을 볼 것입니다
그런 다음 입력
\password
Postgres 기본 사용자의 새 비밀번호를 입력합니다. 비밀번호를 성공적으로 다시 변경 한 후 pg_hba.conf로 이동하여 변경 내용을 "md5"로 되돌립니다.
지금 당신은로 로그인됩니다
psql -U postgres
새 비밀번호로.
문제가 있으면 알려주세요.
user@user-NC10:~$ psql -U postgres psql: FATAL: Peer authentication failed for user "postgres"
$version,' /usr/bin/psql: psql: line 26:
my 근처의 구문 오류 , $ host); ' 당신의 도움을 주셔서 감사합니다!
내 서버에있는 구성은 많이 사용자 정의 되었으며 파일 에서 신뢰 인증을 설정 한 후에 만 비밀번호를 변경할 수있었습니다 .pg_hba.conf
local all all trust
비밀번호 또는 md5로 다시 변경하는 것을 잊지 마십시오
sudo systemctl restart postgresql.service
이것은 사용자 이름을 바꾸는 방법을 찾고 있었을 때 Google의 첫 번째 결과였습니다.
ALTER USER <username> WITH PASSWORD '<new_password>'; -- change password
ALTER USER <old_username> RENAME TO <new_username>; -- rename user
사용자 관리에 유용한 몇 가지 다른 명령 :
CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;
다른 그룹으로 사용자 이동
ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;
postgres 10.3과 함께 설치된 Ubuntu 14.04의 경우. 다음 단계를 따라야합니다
su - postgres
사용자를 전환 postgres
psql
postgres 쉘을 입력\password
그런 다음 비밀번호를 입력하십시오\q
쉘 세션을 종료그런 다음 실행하여 루트로 다시 전환 하고 다음 줄이 있는지 확인 exit
하여 pg_hba.conf
(광산이 있음 /etc/postgresql/10/main/pg_hba.conf
) 구성하십시오.
local all postgres md5
service postgresql restart
postgres
사용자로 전환하고 postgres shell을 다시 입력하십시오. 암호를 묻는 메시지가 나타납니다.구문의 다른 답변과 유사하지만 일반 텍스트 비밀번호를 전송하지 않도록 비밀번호의 md5를 전달할 수도 있음을 알아야합니다.
다음은 사용자 암호를 일반 텍스트로 변경했을 때 의도하지 않은 결과에 대한 몇 가지 시나리오입니다.
log_statement = ddl
이상 을 기록하도록 설정 한 경우 일반 텍스트 비밀번호가 오류 로그에 표시됩니다.
여기에 md5의 비밀번호를 만들어서 사용자의 비밀번호를 변경하는 방법이 있습니다.
예 : "md5"+ md5 (암호 + 사용자 이름)
bash에서 :
~$ 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
명령은 ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
비밀번호는 항상 시스템 카탈로그에 암호화되어 저장됩니다. ENCRYPTED 키워드는 효과가 없지만 이전 버전과의 호환성을 위해 허용됩니다. 암호화 방법은 구성 매개 변수 password_encryption에 의해 결정됩니다. 제시된 비밀번호 문자열이 이미 MD5 암호화 또는 SCRAM 암호화 형식 인 경우, 비밀번호 암호화와 상관없이 그대로 저장됩니다 (시스템이 지정된 암호화 된 비밀번호 문자열을 해독하여 다른 형식으로 암호화 할 수 없기 때문에). 이를 통해 덤프 / 복원 중에 암호화 된 비밀번호를 다시로드 할 수 있습니다.
일반적으로 db 관련 활동을 수행하려면 pg admin UI를 사용하십시오.
대신 로컬 개발 또는 CI 등을 위해 데이터베이스 설정을 자동화하는 데 더 집중하고 있습니다.
예를 들어, 이와 같은 간단한 콤보를 사용할 수 있습니다.
(a) 다음과 비슷한 명령으로 jenkins를 통해 더미 수퍼 유저를 만듭니다.
docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001
postgres db에 experiment001이라는 슈퍼 유저가 생성됩니다.
(b) 비 대화식 SQL 명령을 실행하여이 사용자에게 암호를 제공하십시오.
docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "
Postgres는 아마도 명령 줄 (비 대화식) 툴링을위한 최고의 데이터베이스 일 것입니다. 사용자 생성, SQL 실행, 데이터베이스 백업 등 ... 일반적으로 postgres에서는 기본적으로이 기능을 개발 설정 스크립트 또는 자동화 된 CI 구성에 통합하는 것이 매우 간단합니다.
bash 및 expect를 사용한 완전히 자동화 된 방법 ( 이 예 에서는 OS 및 postgres 런타임 레벨 모두에서 새로 프로비저닝 된 postgres pw를 사용하여 새 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 :
많은 시스템에서 사용자 계정에는 종종 마침표 또는 일종의 펑션 (사용자 : john.smith, horise.johnson)이 포함됩니다. 이 경우 위의 허용 된 답변을 수정해야합니다. 변경하려면 사용자 이름을 큰 따옴표로 묶어야합니다.
Example:
ALTER USER "username.lastname" WITH PASSWORD 'password';
합리적 :
Postgres는 '큰 따옴표'를 사용할 때와 '단일 따옴표'를 사용할 때에 상당히 까다 롭습니다. 일반적으로 문자열을 제공 할 때는 작은 따옴표를 사용합니다.