PostgreSQL: PostgreSQL පරිශීලක මුරපදය වෙනස් කරන්නේ කෙසේද?


1034

PostgreSQL පරිශීලකයා සඳහා මුරපදය වෙනස් කරන්නේ කෙසේද?

Answers:


1456

මුරපදය අඩු ප්‍රවේශයක් සඳහා:

sudo -u user_name psql db_name

ඔබට අමතක වී ඇත්නම් මුරපදය නැවත සැකසීමට:

ALTER USER user_name WITH PASSWORD 'new_password';

129
මෙය පරිශීලකයාගේ postgresql විධාන ඉතිහාසයේ පැහැදිලි මුරපදය ලබා දේ.
ග්‍රෙග්

122
@greg: එබැවින් එය මකන්න:rm ~/.psql_history
රිකීඒ

44
මාතෘකාව ලකුණු නමුත් ඕනෑම කෙනෙකුට "ආකාරය පරිශීලක වෙනස් නම" සොයන වඩා නම් ALTER USER myuser RENAME TO newname;... යම් හේතුවක් නිසා මම ඒ :) හෆීස් විට ගූගල් මෙතන මට යොමු විය සඳහා
equivalent8

10
ඔබ "සහ" උපුටා දැක්වීම් දෙකම භාවිතා කරන්නේ ඇයි? මම අදහස් කළේ, වෙනසක් ඇති අතර, ඩීඑම්එල් විමසුමක දී නූල් සමඟ ගනුදෙනු කිරීමේදී ඔබ භාවිතා කළ යුතු නමුත් ඒවා දෙකම මෙහි භාවිතා කිරීමට විශේෂ හේතුවක් තිබේද?
බෝයාන්

8
පරිශීලකයා වස්තුවක් මිස නූලක් නොවේ. ALTER TABLE "table_name" සමඟ සසඳන්න හෝ "table_name" වෙතින් * තෝරන්න. වගු සමඟ මෙම සන්දර්භය තුළ ඔබට තනි උපුටා දැක්වීම් භාවිතා කළ නොහැකි අතර එය පරිශීලකයින් / භූමිකාවන් සමඟ සමාන වේ.
පී ඩැඩි

646

ඉන්පසු ටයිප් කරන්න:

$ 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

3
postgres සඳහා සුපුරුදු මුරපදය කුමක්ද? එය අහම්බෙන් වෙනස් කළේය; නැවත සැකසිය හැකිද?
සාද්

2
(psql 9.2 මත) මා ටයිප් කළහොත් \pඑය මට මුරපදය ලබා දෙයි; මා \password postgresඑය ටයිප් කළහොත් මුරපදය ලබා දී අනතුරු ඇඟවීම් ලබා දෙයි\p extra argument "assword" ignored; \p extra argument "postgres" ignored
ඩේවිඩ් ලෙබවර්

2
SQL විධාන ඉතිහාසයේ මුරපදය තැබීමට වඩා මෙය හොඳය.
otocan

1
Ac සැචරිස්කොට් ඔබ කියන්නේ කුමක්ද?
TheRealChx101

2
ලිනක්ස් හි sudo passwd postgres
පෝස්ට්ග්‍රෙස්

91

පරිශීලකයන්ගේ මුරපදය සංකේතනය කර ගැනීමට ඔබට හැකිය සහ තිබිය යුතුය:

ALTER USER username WITH ENCRYPTED PASSWORD 'password';

46
මෙම අනුවාදය වත්මන් අනුවාදය සඳහා වැදගත් නොවේ. සිට postgresql.org/docs/current/static/sql-createrole.html The password is always stored encrypted in the system catalogs. The ENCRYPTED keyword has no effect, but is accepted for backwards compatibility.
John29

7
පරෙස්සම් වන්න! 29 ජෝන් 29 අදහස් දැක්වීම සත්‍ය වන්නේ Postgresql 10 සහ ඊට ඉහළින් පමණි. අනෙක් සියලුම අනුවාද සඳහා එන්ක්‍රිප්ටඩ් ධජය වැදගත් වේ.
phep

මෙම දරුණු දෝශයකි මුරපදය මගින් rememberd වේ psqlඉතිහාසය හෝ ෂෙල් ... hashed (උදා. SHA1) මුරපදය භාවිතා කරන්නේ කෙසේද?
පීටර් ක්‍රවුස්

57

මුරපදය වෙනස් කිරීමට හොඳම ක්‍රමය සරලවම භාවිතා කිරීම බව මම විශ්වාස කරමි:

\password

Postgres කොන්සෝලය තුළ.

මූලාශ්රය:

මෙම විධානය සමඟ සංකේතාංකනය නොකළ මුරපදයක් සඳහන් කිරීමේදී ප්‍රවේශම් විය යුතුය. මුරපදය පැහැදිලි පා text යෙන් සේවාදායකයට සම්ප්‍රේෂණය වන අතර, එය සේවාදායකයාගේ විධාන ඉතිහාසය හෝ සේවාදායක ලොගය තුළද ලොග් විය හැක. psql හි විධාන \ මුරපදයක් අඩංගු වන අතර එය පැහැදිලි මුරපදය නිරාවරණය නොකර භූමිකාවේ මුරපදය වෙනස් කිරීමට භාවිතා කළ හැකිය.

https://www.postgresql.org/docs/9.0/static/sql-alterrole.html වෙතින් .


10
වෙනත් පරිශීලකයින් සඳහා මුරපද වෙනස් කිරීමටද මෙය භාවිතා කළ හැකිය:\password username
මාටින්

36

ලිනක්ස් විධාන රේඛාව භාවිතයෙන් මුරපදය වෙනස් කිරීමට, භාවිතා කරන්න:

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

6
මෙය ඔබගේ විධාන ඉතිහාසයේ db හි පරිශීලක මුරපදය සුරකිනු ඇති බව මතක තබා ගන්න.
පේද්‍රෝ කෝඩෙයිරෝ

2
ඔබට මෙහි පරිසර විචල්‍යයන් භාවිතා කළ හැකිද?
යෙදවුම් පිටපතකින්

29

මුරපදය වෙනස් කිරීමට

 sudo -u postgres psql

එවිට

\password postgres

දැන් නව මුරපදය ඇතුළත් කර තහවුරු කරන්න

ඉන්පසු \qපිටවීමට


24

ඔබගේ Postgresql Config වෙත ගොස් 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"
GM

හරි, වෙනත් ක්‍රමයක් කරන්න sudo su - postgres psql ඔබ ටර්මිනලයට ඇතුළු වී එහි මුරපදය වෙනස් කරනු ඇත, මෙය මේ සඳහා විකල්ප ක්‍රමයකි. මෙය ඔබ වෙනුවෙන් වැඩ
කරන්නේද

mm මම උත්සාහ කර ඇති නමුත් මට තවත් දෝෂයක් තිබේ: / usr / bin / psql: 19 වන පේළිය: use: විධානය හමු නොවීය / usr / bin / psql: 21 වන පේළිය: භාවිතා කරන්න: විධානය හමු නොවීය / usr / bin / psql: 23 වන පේළිය: use: විධානය හමු නොවීය / usr / bin / psql: line 24: use: command found / usr / bin / psql: psql: line 26: අනපේක්ෂිත ටෝකනය අසල සින්ටැක්ස් දෝෂය $version,' /usr/bin/psql: psql: line 26: මගේ ($ අනුවාදය, $ පොකුරු, $ db, $ වරාය , $ සත්කාරක); ' ඔබගේ සහයට ස්තූතියි!
GM

11

Postgres පරිශීලකයා සඳහා නව මුරපදයක් ඉල්ලීමට (එය විධානයෙහි නොපෙන්වා):

sudo -u postgres psql -c "\password"

10

මගේ සේවාදායකයේ මා සතුව ඇති වින්‍යාසය බොහෝ අභිරුචිකරණය කර ඇති අතර මුරපදය වෙනස් කිරීමට මට හැකි වූයේ මා ගොනුවේ විශ්වාස සත්‍යාපනය සැකසීමෙන් පසුව පමණි :pg_hba.conf

local   all   all   trust

මෙය මුරපදය හෝ md5 ලෙස වෙනස් කිරීමට අමතක නොකරන්න


1
වෙනස්කම් බලාත්මක කිරීම සඳහා ඔබ ඔබේ sudo systemctl restart postgresql.service
තැපැල්

මෙම pg_hba.conf ගොනුව යා යුත්තේ කොතැනටද?
JMStudios.jrichardson

9

ගූගල් හි පළමු ප්‍රති result ලය මෙයයි, මම පරිශීලකයෙකු නැවත නම් කරන්නේ කෙසේදැයි සොයමින් සිටියදී,

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

7

උබුන්ටු 14.04 හි මගේ නඩුව සඳහා පෝස්ට්ග්‍රෙස් 10.3 සමඟ ස්ථාපනය කර ඇත. මට පහත පියවර අනුගමනය කළ යුතුය

  • su - postgres පරිශීලකයා වෙත මාරු වීමට postgres
  • psql postgres shell එකට ඇතුළු වීමට
  • \password ඉන්පසු ඔබගේ මුරපදය ඇතුළත් කරන්න
  • \q ෂෙල් සැසියෙන් ඉවත් වීමට
  • ඔබ පහත දැක්වෙන රේඛාව ඇති බවට වග බලා ගැනීමෙන් exitඔබේ pg_hba.conf(මගේ ස්ථානයේ /etc/postgresql/10/main/pg_hba.conf) ක්‍රියාත්මක කිරීමෙන් නැවත මූලයට මාරු වේ

    local all postgres md5

  • ඔබගේ Postgres සේවාව නැවත ආරම්භ කරන්න service postgresql restart
  • දැන් postgresපරිශීලකයා වෙත මාරු වී නැවත postgres shell එක ඇතුලත් කරන්න. එය මුරපදය සමඟ ඔබෙන් විමසනු ඇත.

මුරපදය වෙනස් කිරීමෙන් පසු ඔබට postgresql සේවාව නැවත ආරම්භ කළ යුතු යැයි මම නොසිතමි. මුරපදය නැවත ආරම්භ කිරීමෙන් එය නැවත සැකසීමට මට හැකි විය. මුරපදය ඉක්මන්ම ක්‍රමයයි. නැතිනම් ඔබට ALTER USER විධානය අවශ්‍ය වේ.
ආකිට් කපූර්

4

TLDR:

බොහෝ පද්ධති වල, පරිශීලකයාගේ ගිණුමේ බොහෝ විට කාල පරිච්ඡේදයක් හෝ යම් ආකාරයක විරාමයක් අඩංගු වේ (පරිශීලක: john.smith, horise.johnson). මෙම අවස්ථා වලදී ඉහත පිළිගත් පිළිතුරට වෙනස් කිරීමක් කළ යුතුය. වෙනස සඳහා පරිශීලක නාමය ද්වි-උපුටා දැක්වීමක් අවශ්‍ය වේ.

Example:

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

තාර්කික:

'ද්විත්ව උපුටා දැක්වීමක්' භාවිතා කරන්නේ කවදාද සහ 'තනි උපුටා දැක්වීමක්' භාවිතා කරන්නේ කවදාද යන්න පිළිබඳව පෝස්ට්ග්‍රෙස් ඉතා පැහැදිලිය. සාමාන්‍යයෙන් නූලක් සපයන විට ඔබ තනි උපුටා දැක්වීමක් භාවිතා කරයි.


3

මෙය භාවිතා කරන්න:

\password

එම පරිශීලකයාට අවශ්‍ය නව මුරපදය ඇතුළත් කර එය තහවුරු කරන්න. ඔබට මුරපදය මතක නැතිනම් ඔබට එය වෙනස් කිරීමට අවශ්‍ය නම්, ඔබට තැපැල් ලිපි ලෙස ලොග් වී මෙය භාවිතා කළ හැකිය:

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

3

වාක්‍ය ඛණ්ඩයේ වෙනත් පිළිතුරු වලට සමාන නමුත් ඔබට සාමාන්‍ය මුරපදයක් සම්ප්‍රේෂණය නොකිරීමට මුරපදයේ md5 එකක් ද ලබා දිය හැකි බව දැන සිටිය යුතුය.

පරිශීලක මුරපදයක් සරල පා in යකින් වෙනස් කිරීමෙන් බලාපොරොත්තු නොවූ ප්‍රතිවිපාක පිළිබඳ අවස්ථා කිහිපයක් මෙන්න.

  1. ඔබට SSL නොමැති නම් සහ දුරස්ථව වෙනස් කරන්නේ නම් ඔබ සරල පෙළ මුරපදය ජාලය හරහා සම්ප්‍රේෂණය කරයි.
  2. ඔබේ ල ging ු-සටහන් වින්‍යාසය ඩීඩීඑල් ප්‍රකාශන ලොග් කිරීමට සකසා ඇත්නම් log_statement = ddl හෝ ඊට වැඩි , එවිට ඔබේ සරල පෙළ මුරපදය ඔබගේ දෝෂ ලොග් වල පෙන්වනු ඇත.
    1. ඔබ මෙම ල logs ු-සටහන් ආරක්ෂා නොකරන්නේ නම් එය ගැටළුවක්.
    2. ඔබ මෙම ල logs ු-සටහන් / ඊටීඑල් එකතු කර අනෙක් අයට ප්‍රවේශය ඇති තැන ඒවා ප්‍රදර්ශනය කළහොත් ඔවුන්ට මෙම මුරපදය දැකීම අවසන් විය හැකිය.
    3. පරිශීලකයෙකුට ඔවුන්ගේ මුරපදය කළමනාකරණය කිරීමට ඔබ ඉඩ දෙන්නේ නම්, ඔවුන් නොදැනුවත්වම මුරපදයක් පරිපාලක හෝ පහත් මට්ටමේ සේවකයෙකුට හෙළි කරයි.

මුරපදයේ md5 එකක් තැනීමෙන් පරිශීලකයාගේ මුරපදය වෙනස් කළ හැකි ආකාරය මෙහි දක්වා ඇත.

  • මුරපදය md5 ලෙස හැෂ් කරන විට Postgres, පරිශීලක නාමය සමඟ මුරපදය ලුණු දැමූ විට "md5" පා text ය එහි ප්‍රති .ලයක් ලෙස ඇති හැෂ් වෙත සූදානම් කරයි.
  • උදා: "md5" + md5 (මුරපදය + පරිශීලක නාමය)

  • කඩිනමින්:

    ~$ 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';
  • අදාළ සබැඳි (සටහන මම පැරණි ලියකියවිලි වල නවතම අනුවාද වලට පමණක් සම්බන්ධ කරමි, එය සමහරක් වෙනස් කරයි, නමුත් md5 තවමත් ආපසු යා හැකි මාර්ගයකට සහය දක්වයි.)
  • භූමිකාව නිර්මාණය කරන්න
  • මුරපදය සෑම විටම පද්ධති නාමාවලිවල සංකේතනය කර ඇත. ENCRYPTED යතුරුපදය කිසිදු බලපෑමක් නැත, නමුත් පසුගාමී අනුකූලතාව සඳහා පිළිගනු ලැබේ. සංකේතාංකන ක්‍රමය තීරණය වන්නේ වින්‍යාස පරාමිතිය වන password_encryption මගිනි. ඉදිරිපත් කරන ලද මුරපද පේළිය දැනටමත් MD5- සංකේතාත්මක හෝ SCRAM- සංකේතාත්මක ආකෘතියක තිබේ නම්, එය මුරපද_ක්‍රිප්ෂන් නොසලකා ගබඩා කර ඇත (පද්ධතියට නිශ්චිත සංකේතාත්මක මුරපද පේළිය විකේතනය කළ නොහැකි බැවින් එය වෙනත් ආකෘතියකින් සංකේතනය කිරීමට). ඩම්ප් / ප්‍රතිස්ථාපනය කිරීමේදී සංකේතාත්මක මුරපද නැවත පූරණය කිරීමට මෙය ඉඩ දෙයි.

  • password_encryption සඳහා වින්‍යාස සැකසුම
  • postgres මුරපද සත්‍යාපන ලේඛනය
  • postgres මුරපදය ගොඩනැගීම md5

2

සහ සම්පුර්ණයෙන්ම ස්වයංක්‍රීයව බාෂ් සහ අපේක්‍ෂා කරන ආකාරය ( මෙම උදාහරණයේ දී අපි 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 ;
 "

1

පොදුවේ ගත් කල, db ආශ්‍රිත ක්‍රියාකාරකම් කිරීම සඳහා pg admin UI භාවිතා කරන්න.

ඒ වෙනුවට ඔබ වැඩි අවධානයක් යොමු කරන්නේ ඔබේ ප්‍රාදේශීය සංවර්ධනය සඳහා දත්ත සමුදාය සැකසීම හෝ සීඅයි ආදිය සඳහා ය.

උදාහරණයක් ලෙස, ඔබට මේ වගේ සරල සංයෝජනයක් භාවිතා කළ හැකිය.

(අ) මෙයට සමාන විධානයක් සහිත ජෙන්කින්ස් හරහා ව්‍යාජ සුපිරි පරිශීලකයෙකු සාදන්න:

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

මෙය ඔබ තුළ අත්හදා බැලීම් 001 නමින් සුපිරි පරිශීලකයෙකු නිර්මාණය කරනු ඇත.

(ආ) NON-Interactive SQL විධානයක් ක්‍රියාත්මක කිරීමෙන් මෙම පරිශීලකයාට මුරපදයක් ලබා දෙන්න.

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

විධාන රේඛාව (අන්තර්ක්‍රියාකාරී නොවන) මෙවලම් සඳහා හොඳම දත්ත ගබඩාව Postgres විය හැකිය. පරිශීලකයින් නිර්මාණය කිරීම, SQL ධාවනය කිරීම, දත්ත සමුදායේ උපස්ථ සෑදීම යනාදිය ... පොදුවේ ගත් කල එය පෝස්ට්ග්‍රෙස් සමඟ තරමක් මූලික වන අතර මෙය ඔබේ සංවර්ධන සැකසුම් ස්ක්‍රිප්ට් වලට හෝ ස්වයංක්‍රීය සීඅයි වින්‍යාසයට ඒකාබද්ධ කිරීම සමස්තයක් වශයෙන් සුළුපටු ය.


1

ඔබ කවුළු මත නම්.

pg_hba.confගොනුව විවෘත කර සිට වෙනස් md5කරන්නpeer

විවෘත cmd, ටයිප් කරන්න psql postgres postgres

\passwordනව මුරපදයක් ඇතුළත් කිරීමට ඔබෙන් විමසීමට ටයිප් කරන්න.

වැඩි විස්තර සඳහා මෙම මධ්‍යම පෝස්ටය වෙත යොමු වන්න .


1
මෙම සබැඳිය ප්‍රශ්නයට පිළිතුරු සැපයිය හැකි අතර, පිළිතුරේ අත්‍යවශ්‍ය කොටස් මෙහි ඇතුළත් කිරීම සහ යොමු කිරීම සඳහා සබැඳිය සැපයීම වඩා හොඳය. සම්බන්ධිත පිටුව වෙනස් වුවහොත් සබැඳි පමණක් පිළිතුරු අවලංගු විය හැකිය. - සමාලෝචනයෙන්
බ්‍රයන් මින්ටන්

ස්තූතියි ri බ්‍රයන්මිටන් හිස ඔසවා තැබීම ගැන.
තිමෝති මචාරියා
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.