PostgreSQL 사용자의 비밀번호는 어떻게 변경합니까?
질문자 :Saad
비밀번호 없이 로그인하려면:
sudo -u user_name psql db_name
비밀번호를 잊어버린 경우 비밀번호를 재설정하려면:
ALTER USER user_name WITH PASSWORD 'new_password';
solaimuruganv
postgres 사용자의 비밀번호를 변경하려면 다음 단계를 따르십시오.
- psql에 로그인합니다.
$ sudo -u postgres psql
- 그런 다음 psql 콘솔에서 암호를 변경하고 종료합니다.
postgres=# \password postgres Enter new password: <new-password> postgres=# \q
또는 쿼리를 사용하여
ALTER USER postgres PASSWORD '<new-password>';
또는 한 줄로
sudo -u postgres psql -c "ALTER USER postgres PASSWORD '<new-password>';"
메모:
/etc/postgresql/9.1/main/pg_hba.conf
(경로가 다름)를 편집하여 인증을 재구성하고 다음을 변경하십시오.
local all all peer # change this to md5 ## to local all all md5 # like this
그런 다음 서버를 다시 시작합니다.
$ sudo service postgresql restart
Clint Bugs
다음과 같이 사용자의 비밀번호를 암호화할 수 있고 또 해야 합니다.
ALTER USER username WITH ENCRYPTED PASSWORD 'password';
yglodt
비밀번호를 변경하는 가장 좋은 방법은 다음을 사용하는 것입니다.
\password
Postgres 콘솔에서.
ALTER USER
문서에 따라 :
이 명령으로 암호화되지 않은 암호를 지정할 때는 주의해야 합니다. 암호는 일반 텍스트로 서버에 전송되며 클라이언트의 명령 기록이나 서버 로그에도 기록될 수 있습니다. psql에는 일반 텍스트 암호를 노출하지 않고 역할의 암호를 변경하는 데 사용할 수 있는 \password 명령이 포함되어 있습니다.
참고: ALTER USER
ALTER ROLE
의 별칭입니다.
Viktor Nordling
Linux 명령줄을 사용하여 암호를 변경하려면 다음을 사용하십시오.
sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"
Vajira Lasantha
비밀번호를 변경하려면
sudo -u postgres psql
그 다음에
\password postgres
이제 새 비밀번호를 입력하고 확인하십시오.
그런 다음 \q
를 종료합니다.
Akitha_MJ
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 포스트그레스
새 비밀번호로.
모든 문제가 발견되면 알려주십시오.
Murtaza Kanchwala
postgres 사용자의 새 비밀번호를 요청하려면(명령에 표시하지 않고):
sudo -u postgres psql -c "\password"
lcnicolau
이것은 사용자 이름을 바꾸는 방법을 찾고 있었을 때 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>;
Salvador Dali
당신이 윈도우에 있다면.
pg_hba.conf
파일을 열고 md5
에서 peer
cmd를 열고 psql postgres postgres
그런 다음 \password
를 입력하여 새 암호를 입력하라는 메시지를 표시합니다.
추가 정보 및 세부 단계는 이 매체 게시물을 참조하세요.
Timothy Macharia
내 서버에 있는 구성은 많이 사용자 정의 pg_hba.conf
파일 에서 신뢰 인증을 설정한 후에야 암호를 변경할 수 있었습니다.
local all all trust
이것을 암호 또는 md5로 다시 변경하는 것을 잊지 마십시오.
ruruskyi
postgres 10.3과 함께 설치된 Ubuntu 14.04의 경우. 다음 단계를 따라야 합니다.
-
su - postgres
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
사용자로 전환하고 postgres 셸을 다시 입력합니다. 암호를 묻는 메시지가 표시됩니다.
haxpor
이것을 사용하십시오:
\password
해당 사용자에 대해 원하는 새 암호를 입력한 다음 확인하십시오. 비밀번호가 기억나지 않아 변경하려는 경우 postgres로 로그인한 다음 다음을 사용할 수 있습니다.
ALTER USER 'the username' WITH PASSWORD 'the new password';
Chris Dare
TLDR:
많은 시스템에서 사용자 계정에는 마침표나 일종의 구두점이 포함되는 경우가 많습니다(사용자: john.smith, horise.johnson). 이러한 경우 위의 허용된 답변을 수정해야 합니다. 변경하려면 사용자 이름을 큰따옴표로 묶어야 합니다.
Example: ALTER USER "username.lastname" WITH PASSWORD 'password';
합리적인:
Postgres는 '큰 따옴표'를 사용할 때와 '작은 따옴표'를 사용할 때를 매우 까다롭습니다. 일반적으로 문자열을 제공할 때 작은따옴표를 사용합니다.
FlyingV
구문의 다른 답변과 유사하지만 일반 텍스트 암호를 전송하지 않도록 암호의 md5를 전달할 수도 있습니다.
다음은 일반 텍스트로 된 사용자 암호 변경의 의도하지 않은 결과에 대한 몇 가지 시나리오입니다.
- SSL이 없고 원격으로 수정하는 경우 네트워크를 통해 일반 텍스트 암호를 전송하는 것입니다.
-
log_statement = ddl
이상을 기록하도록 로깅 구성을 설정한 경우 일반 텍스트 암호가 오류 로그에 표시됩니다.- 이러한 로그를 보호하지 않으면 문제가 됩니다.
- 이러한 로그/ETL을 수집하고 다른 사람이 액세스할 수 있는 위치에 표시하면 결국 이 암호 등을 볼 수 있습니다.
- 사용자가 자신의 비밀번호를 관리하도록 허용하면 관리자 또는 로그 검토를 담당하는 하위 직원에게 자신도 모르게 비밀번호를 노출하게 됩니다.
여기에서 암호의 md5를 빌드하여 사용자 암호를 변경할 수 있는 방법이 있습니다.
- Postgres는 암호를 md5로 해시할 때 암호를 사용자 이름과 함께 솔트링한 다음 결과 해시에 텍스트 "md5"를 추가합니다.
예: "md5"+md5(비밀번호 + 사용자 이름)
배쉬에서:
~$ echo -n "passwordStringUserName" | md5sum | awk '{print "md5"$1}' md5d6a35858d61d85e4a82ab1fb044aba9d
- PowerShell에서:
[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';
- 관련 링크(참고: 이전 버전의 문서만 최신 버전으로 링크하겠습니다. 일부 변경되지만 md5는 여전히 이전 버전을 지원합니다.)
- 역할 생성
암호는 항상 시스템 카탈로그에 암호화되어 저장됩니다. ENCRYPTED 키워드는 효과가 없지만 이전 버전과의 호환성을 위해 허용됩니다. 암호화 방법은 구성 매개변수 password_encryption에 의해 결정됩니다. 제시된 암호 문자열이 이미 MD5 암호화 또는 SCRAM 암호화 형식인 경우 password_encryption에 관계없이 그대로 저장됩니다(시스템이 지정된 암호화된 암호 문자열을 해독하여 다른 형식으로 암호화할 수 없기 때문에). 이렇게 하면 덤프/복원 중에 암호화된 암호를 다시 로드할 수 있습니다.
- password_encryption에 대한 구성 설정
- 포스트그레스 비밀번호 인증 문서
- 포스트그레스 비밀번호 md5 빌드
jkdba
bash 및 예상을 사용하는 완전히 자동화된 방식( 이 예 에서는 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 ; "
Yordan Georgiev
일반적으로 db 관련 활동을 수행하려면 pg admin UI를 사용하십시오.
대신 로컬 개발 또는 CI 등을 위한 데이터베이스 설정 자동화에 더 집중하고 있다면...
예를 들어 이와 같은 간단한 콤보를 사용할 수 있습니다.
(a) 다음과 유사한 명령을 사용하여 젠킨스를 통해 더미 수퍼유저를 생성합니다.
docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001
이것은 postgres db에 Experiment001이라는 수퍼유저를 생성할 것입니다.
(b) NON-Interactive SQL 명령을 실행하여 이 사용자에게 일부 암호를 제공합니다.
docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "
Postgres는 아마도 명령줄(비대화형) 도구를 위한 최고의 데이터베이스일 것입니다. 사용자 생성, SQL 실행, 데이터베이스 백업 등... 일반적으로 postgres에서는 모든 것이 매우 기본적이며 이를 개발 설정 스크립트나 자동화된 CI 구성에 통합하는 것은 전반적으로 매우 간단합니다.
99Sono
확인 pg_hba.conf
인증 방법이 'peer'인 경우 클라이언트의 운영 체제 사용자 이름/암호는 데이터베이스 사용자 이름 및 암호와 일치해야 합니다. 이 경우 Linux 사용자 'postgres'와 DB 사용자 'postgres'의 비밀번호를 동일하게 설정합니다.
자세한 내용은 문서를 참조하십시오: https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html
Sufyan Elahi
저는 Windows(Server 2019; PG 10)에 있었기 때문에 local
유형 연결( pg_hba.conf
: local all all peer
)이 지원되지 않습니다. 다음은 Windows 및 Unix 시스템에서 모두 작동해야 합니다.
-
pg_hba.conf
를pg_hba.orig.conf
백업 예: - 이것만으로
pg_hba.conf
생성host all all 127.0.0.1/32 trust
- 페이지를 다시 시작하십시오(서비스)
-
psql -U postgres -h 127.0.0.1
실행 - (pgctl 콘솔에서)
alter user postgres with password 'SomePass';
- 1. 위의
pg_hba.conf
복원
Andreas Covidiot
대부분의 답변이 대부분 맞았지만 사소한 부분에 주의해야 합니다. 내가 가진 문제는 postgres의 암호를 설정하지 않았기 때문에 암호를 변경할 수 있는 SQL 명령줄에 로그인할 수 없다는 것이었습니다. 다음은 내가 성공적으로 사용한 단계입니다(대부분 또는 모든 명령에는 sudo/root 사용자가 필요함).
- 연결하려는 DB 클러스터의 데이터 디렉터리에서
pg_hba.conf
를 편집합니다.-
systemctl status postgresql@VERSION-DB_CLUSTER
쉽게 얻을 수 있는 systemd 명령줄을 검사하여 찾을 수 있습니다. VERSION을 PSQL 버전으로 바꾸고 DB_CLUSTER를 데이터베이스 클러스터 이름으로 바꿉니다. 이것은 자동으로 생성된 경우 기본이 될 수 있습니다. 예를 들면 다음과 같습니다.postgresql@13-main
.postgresql@
입력 후 자동 완성을 제공하므로 시도해 보거나 모든 서비스 목록(systemctl -a
)에서 postgresql 서비스를 찾을 수 있습니다. 상태 출력이 나오면 CGroup 다음의 두 번째 명령줄을 찾으십시오. 이 명령줄은 다소 길어야 하며/usr/lib/postgresql/13/bin/postgres
또는 이와 유사한 것으로 시작합니다(버전, 배포판 및 설치 방법에 따라 다름). .-D
다음에 디렉토리를 찾고 있습니다(예:/var/lib/postgresql/13/main
.
-
- 다음 행을 추가하십시오.
host all all 127.0.0.1/32 trust
. 이를 통해 모든 데이터베이스의 모든 사용자는 암호를 묻지 않고 무조건 로컬 머신의 IPv4를 통해 데이터베이스에 연결할 수 있습니다. 이것은 임시 수정 사항이며 나중에 이 줄을 다시 제거하는 것을 잊지 마십시오. 확실히 하기 위해host all all 127.0.0.1/32 md5
(md5는 scram-sha-256으로 대체될 수 있음)를 주석 처리했으며 동일한 로그인 데이터에 유효하며 비밀번호만 있으면 됩니다. - 데이터베이스 서비스를 다시 시작하십시오:
systemctl restart postgresql@...
다시, 이전에 찾은 정확한 서비스를 사용하십시오. -
systemctl status postgresql@...
서비스가 제대로 시작되었는지 확인합니다. - psql과 연결하고 매우 중요한 것은 psql이 암호를 묻지 않도록 하는 것 입니다. 내 경험상 서버가 신경 쓰지 않아도 암호를 묻고 암호가 잘못된 경우 로그인을 거부합니다.
-w
플래그를 사용하여 수행할 수 있습니다. 전체 명령줄은 다음과 같습니다.sudo -u postgres psql -w -h 127.0.0.1 -p 5432
. 여기에서postgres
는 사용자이며 변경했을 수 있습니다.5432
는 클러스터별 서버의 포트이며 둘 이상의 클러스터를 실행하는 경우 더 높을 수 있습니다(예: 5434가 있음). -
\password
특수 명령으로 암호를 변경하십시오. - 암호 무시 해결 방법을 제거하고 서버를 다시 시작하여 구성을 적용해야 합니다.
kleines filmröllchen
출처 : http:www.stackoverflow.com/questions/12720967/postgresql-how-to-change-postgresql-user-password
'etc. > StackOverFlow' 카테고리의 다른 글
동일한 분기에 있는 두 개의 다른 커밋 간에 동일한 파일을 어떻게 구별합니까? (0) | 2023.04.23 |
---|---|
사용자 정의 개체가 있는 NSMutableArray를 어떻게 정렬합니까? (0) | 2023.04.23 |
HTML에서 "역할" 속성의 목적은 무엇입니까? (0) | 2023.04.23 |
파일이 있는 폴더를 Unix/Linux의 다른 폴더로 복사하려면 어떻게 합니까? [닫은] (0) | 2023.04.23 |
프로젝트를 Eclipse로 가져온 후 '수퍼클래스 메서드를 재정의해야 함' 오류 (0) | 2023.04.23 |