programing

Postgre를 변경하는 방법SQL 사용자 암호?

topblog 2023. 5. 23. 21:19
반응형

Postgre를 변경하는 방법SQL 사용자 암호?

Postgre의 암호를 변경하는 방법SQL 사용자?

암호 없이 로그인하기

sudo -u user_name psql db_name

암호를 잊어버린 경우 재설정하기

ALTER USER user_name WITH PASSWORD 'new_password';

Postgre 변경하기SQL 사용자의 암호는 다음 단계를 따릅니다.

  1. psql 콘솔에 로그인합니다.

    sudo -u postgres psql
    
  2. 그런 다음 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>';"

참고:

안 될 에는 그도작않경편집인재증다구니합성여하우래는동지하▁byication▁editingfigure▁recon▁if▁authent를 편집하여 인증을 재구성합니다./etc/postgresql/9.1/main/pg_hba.conf( 것) 및을 변경합니다 (으)ㄹ 수 있습니다.

local     all         all             peer # change this to md5

로.

local     all         all             md5 # like this

그런 다음 서버를 다시 시작합니다.

sudo service postgresql restart

사용자의 암호를 암호화할 수 있으며 암호화해야 합니다.

ALTER USER username WITH ENCRYPTED PASSWORD 'password';

암호를 변경하는 가장 좋은 방법은 단순히 다음을 사용하는 것입니다.

\password

Postgres 콘솔에서.

ALTER USER 설명서:

이 명령으로 암호화되지 않은 암호를 지정할 때는 주의해야 합니다.암호는 일반 텍스트로 서버에 전송되며 클라이언트의 명령 기록이나 서버 로그에 기록될 수도 있습니다. psql에는 일반 텍스트 암호를 노출하지 않고 역할의 암호를 변경하는 데 사용할 수 있는 명령 \password가 포함되어 있습니다.

참고:ALTER USER는 의 별칭입니다.ALTER ROLE

Linux 명령줄을 사용하여 암호를 변경하려면 다음을 사용합니다.

sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"

암호 변경하기

 sudo -u postgres psql

그리고나서

\password postgres

이제 새 암호를 입력하고 확인합니다.

그리고나서\q종료합니다.

자신의 포스트그레로 이동SQL 구성 및 파일 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

그런 다음 Postgre를 다시 시작합니다.sudo' 명령을 통한 SQL 서비스.그리고나서

psql -U postgres

이제 입력되고 Postgre가 표시됩니다.SQL 터미널.

입력합니다.

\password

Postgre의 새 암호를 입력합니다.SQL 기본 사용자입니다.암호를 다시 변경한 후 pg_hba.conf로 이동하여 변경 내용을 "md5"로 되돌립니다.

이제 다음으로 로그인됩니다.

psql -U postgres

새 암호를 사용합니다.

postgres 역할에 대한 암호 설정

sudo -u postgres psql

다음과 같은 메시지가 표시됩니다.

postgres=#

암호를 Postgre로 변경사용자 게시물에 대한 SQL

ALTER USER postgres WITH ENCRYPTED PASSWORD 'postgres';

다음과 같은 정보를 얻을 수 있습니다.

ALTER ROLE

이렇게 하려면 pg_hba.conf 파일을 편집해야 합니다.

(nano를 원하는 편집기로 자유롭게 교체하십시오.)

sudo nano /etc/postgresql/9.5/main/pg_hba.conf

pg_hba.conf 파일에서 업데이트

아래 내용이 있는 주석이 없는 줄(#으로 시작하지 않는 줄)을 찾습니다.띄어쓰기는 약간 다르겠지만, 단어는 같아야 합니다.

    local   postgres   postgres   peer

로.

    local   postgres   postgres   md5

이제 우리는 Postgre를 다시 시작해야 합니다.SQL을 사용하면 변경 사항이 적용됩니다.

sudo service postgresql restart

postgres 사용자의 새 암호를 요청하려면(명령에 암호를 표시하지 않고):

sudo -u postgres psql -c "\password"

이것은 제가 사용자 이름을 바꾸는 방법을 찾고 있을 때 구글에서 나온 첫 번째 결과입니다.

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>;

Windows(윈도우)에 있는 경우.

열다.pg_hba.conf파일 작성 및 변경md5로.peer.

cmd를 열고 입력합니다.psql postgres postgres.

다음 입력\password새 암호를 입력하라는 메시지가 표시됩니다.

자세한 내용 및 세부 단계는 이 중간 게시물을 참조하십시오.

서버의 구성이 많이 사용자 지정되었으며, 파일에 신뢰 인증을 설정한 후에야 암호를 변경할 수 있었습니다.

local   all   all   trust

암호 또는 md5로 다시 변경하는 것을 잊지 마십시오.

나의 경우, Ubuntu 14.04(Trusty Tahr), Postgre와 함께 설치됨SQL 10.3: 다음 단계를 따라야 합니다.

  • su - postgres사용자를 로 전환postgres

  • psql포스트그레에 들어가다SQL 셸

  • \password그런 다음 암호를 입력합니다.

  • Q 셸 세션을 그만두다

  • 그런 다음 를 실행하여 루트로 다시 전환합니다.exit구성합니다.pg_hba.conf(내 것은)/etc/postgresql/10/main/pg_hba.conf) 다음 줄이 있는지 확인합니다.

    local all postgres md5

  • Postgre를 다시 시작합니다.SQL 서비스 기준service postgresql restart

  • 이제 다음으로 전환합니다.postgres사용자 및 Postgre 입력SQL 셸이 다시 시작되었습니다.암호를 입력하라는 메시지가 표시됩니다.

사용:

\password

해당 사용자에 대해 원하는 새 암호를 입력한 후 확인합니다.암호를 기억하지 못하고 변경하려는 경우 "postgres"로 로그인한 후 다음을 사용할 수 있습니다.

ALTER USER 'the username' WITH PASSWORD 'the new password';

TLDR:

대부분의 시스템에서 사용자의 계정에는 마침표나 구두점(사용자: john.smith, horise)이 포함되어 있습니다.존슨).이 경우 위의 승인된 답변을 수정해야 합니다.변경하려면 사용자 이름을 이중 따옴표로 묶어야 합니다.

ALTER USER "username.lastname" WITH PASSWORD 'password';

근거:

PostgreSQL은 '이중 따옴표'를 사용할 시기와 '단일 따옴표'를 사용할 시기에 대해 상당히 까다롭습니다.일반적으로 문자열을 제공할 때는 하나의 따옴표를 사용합니다.

이는 구문에서 다른 답변과 유사하지만 암호의 MD5 해시 값도 전달할 수 있으므로 일반 텍스트 암호를 전송하지 않는다는 것을 알아야 합니다.

다음은 일반 텍스트에서 사용자 암호를 변경할 때 발생하는 의도하지 않은 결과에 대한 몇 가지 시나리오입니다.

  1. SSL이 없고 원격으로 수정하는 경우 네트워크를 통해 일반 텍스트 암호를 전송하는 것입니다.
  2. DDL 문을 기록하도록 로깅 구성을 설정한 경우log_statement = ddl또는 그 이상이면 일반 텍스트 암호가 오류 로그에 표시됩니다.
  3. 이러한 로그를 보호하지 않으면 문제가 됩니다.
  4. 이러한 로그/ETL을 수집하여 다른 사용자가 액세스할 수 있는 위치에 표시하면 이 암호 등이 표시될 수 있습니다.
  5. 사용자에게 암호 관리를 허용하면 로그 검토를 담당하는 관리자 또는 하위 수준 직원에게 비밀번호가 자신도 모르게 노출됩니다.

따라서 암호의 MD5 해시 값을 작성하여 사용자의 암호를 변경하는 방법은 다음과 같습니다.

  • PostgreSQL은 암호를 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는 여전히 지원됩니다.)

  • 역할 생성

  • 암호는 항상 시스템 카탈로그에 암호화되어 저장됩니다.암호화된 키워드는 적용되지 않지만 이전 버전과의 호환성을 위해 허용됩니다.암호화 방법은 구성 매개 변수 password_encryption에 의해 결정됩니다.제시된 암호 문자열이 이미 MD5 암호화 또는 SCRAM 암호화 형식인 경우에는 password_encryption에 관계없이 그대로 저장됩니다(시스템이 지정된 암호 문자열을 해독할 수 없으므로 다른 형식으로 암호화할 수 없음).이렇게 하면 덤프/복원 중에 암호화된 암호를 다시 로드할 수 있습니다.

  • password_encryption에 대한 구성 설정

  • PostgreSQL 암호 인증 문서

  • 건물 포스트그레SQL 암호 MD5 해시 값

또한 Bash 및 expect를 통해 완전히 자동화된 방식( 예에서는 새로운 Postgre를 프로비저닝함)새로 프로비저닝된 Postgre를 사용하는 SQL 관리자OS 및 Postgre의 SQL 암호SQL 런타임 레벨):

  # The $postgres_usr_pw and the other Bash variables 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' executable 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 ;
 "

사용자 "postgres"에 대한 암호를 "postgres"로 변경합니다.

# ALTER USER postgres WITH ENCRYPTED PASSWORD '<NEW-PASSWORD>';

서버 (Postgre) 2019; Postgre(Postgre)), SQL 10).local 연결type connections)pg_hba.conf:local all all peer는 지원되지 는 지원되지 않습니다.

다음은 Windows 및 Unix 시스템에서 모두 작동합니다.

  1. pg_hba.confpg_hba.orig.conf
  2. 를 만들다pg_hba.conf이것만 있으면 됩니다.host all all 127.0.0.1/32 trust
  3. 다시 시작 페이지(서비스)
  4. 실행에 옮기다psql -U postgres -h 127.0.0.1
  5. enter (pgctl 솔콘)alter user postgres with password 'SomePass';
  6. 을 복원pg_hba.conf 이상부터

pg_hba.conf 파일을 확인합니다.

인증 방법이 'peer'인 경우 클라이언트의 운영 체제 사용자 이름/비밀번호가 데이터베이스 사용자 이름 및 비밀번호와 일치해야 합니다.이 경우 Linux 사용자 'postgres'와 DB 사용자 'postgres'의 암호를 동일하게 설정합니다.

자세한 내용은 설명서 19.1을 참조하십시오. pg_hba.conf 파일

일반적으로 데이터베이스 관련 작업을 수행하려면 pgAdmin UI를 사용하십시오.

대신 로컬 개발, CI 등을 위한 데이터베이스 설정 자동화에 더 중점을 두고 있습니다.

예를 들어, 이렇게 간단한 조합을 사용할 수 있습니다.

다음과 유사한 명령을 사용하여 Jenkins를 통해 더미 슈퍼 사용자를 만듭니다.

docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001

이것은 당신의 Postgre에서 experiment001이라는 슈퍼 유저를 생성할 것입니다.SQL 데이터베이스.

NON-Interactive SQL 명령을 실행하여 이 사용자에게 암호를 지정합니다.

docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "

PostgreSQL은 명령줄(비인터랙티브) 툴링에 가장 적합한 데이터베이스입니다.사용자 생성, SQL 실행, 데이터베이스 백업 등

일반적으로 Postgre에서는 모두 매우 기본적입니다.SQL을 개발 설정 스크립트나 자동화된 CI 구성에 통합하는 것은 전반적으로 매우 간단합니다.

pgAdmin 4 사용:

메뉴 개체 → 암호 변경...

대부분 정답이었지만 사소한 것들도 주의해야 합니다.문제는 "postgres"의 비밀번호를 설정하지 않았기 때문에 비밀번호를 변경할 수 있는 SQL 명령줄에 로그인할 수 없었다는 것입니다.성공적으로 사용한 단계는 다음과 같습니다(대부분 또는 모든 명령에는 sudo 또는 root 사용자가 필요함).

  • 을 합니다.pg_hba.conf연결하려는 DB 클러스터의 데이터 디렉토리에 있는 파일입니다.

    • systemd 명령줄을 검사하여 데이터 디렉토리의 폴더를 찾을 수 있습니다. systemd 명령줄은 다음을 사용하여 쉽게 얻을 수 있습니다.systemctl status postgresql@VERSION-DB_CLUSTERVERSION을 psql 버전으로 바꾸고 DB_Cluster를 데이터베이스 클러스터의 이름으로 바꿉니다.이것은 자동으로 생성된 경우 기본값일 수 있으므로, 예를 들어,postgresql@13-main내 은 "" "" "" "" "" "" "" "" "" ""를 입력한 후 기능을 했습니다.postgresql@하거나 모든 목록에서 Postgrey 사이의 . 를 찾아볼 수 . (SQL 서비스)systemctl -a다음에 두 는 다소 , 로 합니다. ) 상 그 출 CG 찾 명 을 이 은 명 줄 다 령 소 길 야 어 합 니 다 고 줄 령 태 번 째/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(md5scram-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특명

  • 암호 무시 해결 방법을 제거하고 서버를 재시작하여 구성을 적용해야 합니다.

효과가 있었습니다.

  1. pg_hba.conf에는 항목을 하나만 입력합니다.모두 호스트::1/128 트러스트

  2. 윈도우즈 pg_ctl이 다시 로드되면 관리자로부터 cmd를 실행해야 합니다. -D "C:\Program Files\PostgreSQL\15\Data"

  3. psql을 시작하면 암호와 연결을 묻지 않습니다.

  4. 이제 암호를 재설정합니다.postgres=# 비밀번호 'postgres'로 사용자 postgres 변경; ALTER ROLE

  5. 이제 Pgadmin으로 이동하여 암호를 입력합니다. connected...빙고!

언급URL : https://stackoverflow.com/questions/12720967/how-can-i-change-a-postgresql-user-password

반응형