Rails: FATAL - Otentikasi rekan gagal untuk pengguna (PG :: Kesalahan)


143

Saya menjalankan pengembangan saya di Ubuntu 11.10, dan RubyMine

Ini adalah pengaturan pengembangan saya untuk database.yml: yang dibuat RubyMine untuk saya

development:
  adapter: postgresql
  encoding: unicode
  database: mydb_development
  pool: 5
  username: myuser
  password:

ketika saya mencoba menjalankan aplikasi, saya mendapatkan kesalahan ini di bawah, sepertinya saya belum membuat pengguna 'proyek', tetapi, bagaimana saya bisa membuat pengguna dan memberikannya basis data di postgres? jika ini masalahnya, lalu, alat apa yang disarankan untuk digunakan di Ubuntu untuk tugas ini? jika ini bukan masalahnya, mohon saran.

Exiting
/home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `initialize': FATAL:  Peer authentication failed for user "project" (PG::Error)
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `new'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `connect'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:303:in `new_connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:313:in `checkout_new_connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:237:in `block (2 levels) in checkout'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:232:in `loop'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:232:in `block in checkout'
    from /home/sam/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:229:in `checkout'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `retrieve_connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/model_schema.rb:308:in `clear_cache!'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/railtie.rb:91:in `block (2 levels) in <class:Railtie>'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:418:in `_run__757346023__prepare__404863399__callbacks'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:405:in `__run_callback'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:385:in `_run_prepare_callbacks'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:81:in `run_callbacks'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/actionpack-3.2.3/lib/action_dispatch/middleware/reloader.rb:74:in `prepare!'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/actionpack-3.2.3/lib/action_dispatch/middleware/reloader.rb:48:in `prepare!'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/application/finisher.rb:47:in `block in <module:Finisher>'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `instance_exec'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `run'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `each'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `run_initializers'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/application.rb:136:in `initialize!'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /home/sam/RubymineProjects/project/config/environment.rb:5:in `<top (required)>'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `block in require'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
    from /home/sam/RubymineProjects/project/config.ru:4:in `block in <main>'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
    from /home/sam/RubymineProjects/project/config.ru:1:in `new'
    from /home/sam/RubymineProjects/project/config.ru:1:in `<main>'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:40:in `parse_file'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:200:in `app'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands/server.rb:46:in `app'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:301:in `wrapped_app'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:252:in `start'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands/server.rb:70:in `start'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:55:in `block in <top (required)>'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:50:in `tap'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:50:in `<top (required)>'
    from /home/sam/RubymineProjects/project/script/rails:6:in `require'
    from /home/sam/RubymineProjects/project/script/rails:6:in `<top (required)>'
    from -e:1:in `load'
    from -e:1:in `<main>'

Process finished with exit code 1

Jawaban:


315

Jika Anda menginstal postresql di server Anda, maka hanya host: localhost ke database.yml, saya biasanya melemparkannya di sekitar tempat mengatakan pool: 5. Kalau tidak, itu bukan localhost pasti memberi tahu aplikasi itu di mana menemukan database-nya.

development:
  adapter: postgresql
  encoding: unicode
  database: kickrstack_development
  host: localhost
  pool: 5
  username: kickrstack
  password: secret

Pastikan kredensial pengguna Anda ditetapkan dengan benar dengan membuat basis data dan menetapkan kepemilikan kepada pengguna aplikasi Anda untuk membuat koneksi. Untuk membuat pengguna baru di postgresql 9 jalankan:

sudo -u postgres psql

atur kata sandi pengguna postgresql jika belum, itu hanya kata sandi backslash.

postgres=# \password

Buat pengguna dan kata sandi baru dan basis data baru pengguna:

postgres=# create user "guy_on_stackoverflow" with password 'keepitonthedl';
postgres=# create database "dcaclab_development" owner "guy_on_stackoverflow"; 

Sekarang perbarui file database.yml Anda setelah Anda mengonfirmasi membuat database, pengguna, kata sandi, dan atur hak istimewa ini. Jangan lupa host: localhost.


2
jika Anda masih mengalami kesulitan masuk dan menyelesaikan koneksi melalui localhost kemudian kembali ke terminal postgresql melalui dan menerapkan beberapa konvensi 8.2 ini untuk membangun hak-hak pengguna menghubungkan Anda, sintaksnya adalah GRANT ALL ON DATABASE [dbname] ke [usrname]. Sintaks ini bekerja pada psql 9+ sama saja, tetapi Anda mungkin hanya dapat beralih izin pada database yang dimiliki oleh pengguna sebelum GRANT ALL: postgresql.org/docs/8.2/static/sql-grant.html
Bent Cardan

38
host: localhostdan pool: 5hilang dalam konfigurasi saya. Setelah menambahkannya, kesalahan menghilang.
Amit Patel

21
Bagi saya host: localhosthilang. setelah saya menambahkan itu, semuanya bekerja. Ini ada di Ubuntu 13.04
Jesse

7
Juga penting untuk ditekankan: JANGAN LUPA SEMIKOLON .
Maarten

Secara pribadi saya pikir sangat penting untuk dapat menjalankan setup dengan rake db: setup. Kalau tidak, Anda akan memiliki masalah menghasilkan lingkungan penyebaran baru, tetapi deskripsi ini berfungsi untuk lingkungan pengembangan.
Ashley Raiteri

54

Ini adalah cara yang paling mudah untuk membuat aplikasi rel Anda bekerja dengan postgres di lingkungan pengembangan di Ubuntu 13.10.

1) Buat aplikasi rel dengan postgres YAML dan permata 'pg' di Gemfile:

$ rails new my_application -d postgresql

2) Berikan beberapa fungsi CRUD. Jika Anda hanya melihat apakah postgres berfungsi, buat scaffold:

$ rails g scaffold cats name:string age:integer colour:string

3) Pada rails 4.0.1satu -d postgresqlopsi menghasilkan YAML yang tidak termasuk parameter tuan rumah. Saya menemukan saya membutuhkan ini. Edit bagian pengembangan dan buat parameter berikut:

encoding: UTF-8
host: localhost
database: my_application_development
username: thisismynewusername
password: thisismynewpassword 

Perhatikan databaseparameter untuk database yang belum keluar, dan usernamedan passwordkredensial untuk peran yang juga tidak ada. Kami akan membuatnya nanti!

Ini adalah bagaimana config/database.ymlharus melihat (tidak ada rasa malu dalam copypasting: D):

development:
  adapter: postgresql
  pool: 5
  # these are our new parameters
  encoding: UTF-8
  database: my_application_development
  host: localhost
  username: thisismynewusername
  password: thisismynewpassword

test:
  # this won't work 
  adapter: postgresql
  encoding: unicode
  database: my_application_test
  pool: 5
  username: my_application
  password:

production:
  # this won't work 
  adapter: postgresql
  encoding: unicode
  database: my_application_production
  pool: 5
  username: my_application
  password:

4) Mulai postgres shell dengan perintah ini:

$ psql

4a) Anda mungkin mendapatkan kesalahan ini jika pengguna Anda saat ini (seperti pada pengguna komputer Anda) tidak memiliki peran postgres administrasi yang sesuai.

psql: FATAL:  role "your_username" does not exist

Sekarang saya hanya menginstal postgres sekali, jadi saya mungkin salah di sini, tapi saya pikir postgres secara otomatis membuat peran administrasi dengan kredensial yang sama dengan pengguna yang Anda instal postgres.

4b) Jadi ini berarti Anda perlu mengubah ke pengguna yang menginstal postgres untuk menggunakan perintah psql dan memulai shell:

$ sudo su postgres

Dan kemudian jalankan

$ psql

5) Anda akan tahu Anda berada di shell postgres karena terminal Anda akan terlihat seperti ini:

$ psql
psql (9.1.10)
Type "help" for help.

postgres=# 

6) Menggunakan sintaks postgresql, mari kita membuat user kita ditentukan di config/database.yml's pembangunan bagian:

postgres=# CREATE ROLE thisismynewusername WITH LOGIN PASSWORD 'thisismynewpassword';

Sekarang, ada beberapa kehalusan di sini jadi mari kita membahasnya.

  • Nama pengguna peran, thisismynewusername , tidak memiliki tanda kutip apa pun di sekitarnya
  • Tentukan kata kunci MASUK setelah DENGAN . Jika tidak, peran masih akan dibuat, tetapi tidak akan bisa masuk ke database!
  • Kata sandi peran, kata sandi pintasini , harus dalam tanda kutip tunggal. Bukan kutipan ganda .
  • Tambahkan tanda titik koma di akhir;)

Anda harus melihat ini di terminal Anda:

postgres=#
CREATE ROLE
postgres=#

Itu berarti, "ROLE CREATED", tetapi peringatan postgres 'tampaknya mengadopsi konvensi imperatif yang sama dari git hub.

7) Sekarang, masih dalam postgres shell, kita perlu membuat database dengan nama yang kita atur di YAML. Jadikan pengguna yang kami buat di langkah 6 sebagai pemiliknya:

postgres=# CREATE DATABASE my_application_development OWNER thisismynewusername;

Anda akan tahu jika Anda berhasil karena Anda akan mendapatkan hasilnya:

CREATE DATABASE

8) Keluar dari postgres shell:

\q

9) Sekarang saat kebenaran:

$ RAILS_ENV=development rake db:migrate

Jika Anda mendapatkan ini:

==  CreateCats: migrating =================================================
-- create_table(:cats)
   -> 0.0028s
==  CreateCats: migrated (0.0028s) ========================================

Selamat, postgres bekerja dengan sempurna dengan aplikasi Anda.

9a) Di mesin lokal saya, saya terus mendapatkan kesalahan izin. Saya tidak dapat mengingatnya dengan tepat, tetapi itu adalah kesalahan di sepanjang baris

Can't access the files. Change permissions to 666.

Meskipun saya akan menyarankan untuk memikirkan dengan sangat hati-hati tentang pengaturan rekursif menulis privaledges pada mesin produksi, secara lokal, saya memberikan seluruh hak istimewa baca tulis aplikasi saya seperti ini:

9b) Naiki satu level direktori:

$ cd ..

9c) Tetapkan izin direktori my_application dan semua kontennya ke 666:

$ chmod -R 0666 my_application

9d) Dan jalankan migrasi lagi:

$ RAILS_ENV=development rake db:migrate

==  CreateCats: migrating =================================================
-- create_table(:cats)
   -> 0.0028s
==  CreateCats: migrated (0.0028s) ========================================

Beberapa tips dan trik jika Anda membuat kesalahan

Coba ini sebelum memulai kembali semua langkah ini:

Pengguna mynewusername tidak memiliki hak istimewa untuk CRUD ke my_app_developmentdatabase? Jatuhkan basis data dan buat kembali dengan mynewusername sebagai pemilik:

1) Mulai shell postgres:

$ psql

2) Jatuhkan my_app_developmentbasis data. Hati-hati! Drop berarti benar-benar menghapus!

postgres=# DROP DATABASE my_app_development;

3) Buat yang lain my_app_developmentdan jadikan nama pengguna mynewus:

postgres=# CREATE DATABASE my_application_development OWNER mynewusername;

4) Keluar dari shell:

postgres=# \q

The mynewusernamepengguna tidak bisa login ke dalam database? Anda pikir Anda menulis kata sandi yang salah di YAML dan tidak bisa mengingat kata sandi yang Anda masukkan menggunakan postgres shell? Cukup ubah peran dengan kata sandi YAML:

1) Buka YAML Anda, dan salin kata sandi ke papan klip Anda:

 development:
      adapter: postgresql
      pool: 5
      # these are our new parameters
      encoding: UTF-8
      database: my_application_development
      host: localhost
      username: thisismynewusername
      password: musthavebeenverydrunkwheniwrotethis

2) Mulai postgres shell:

$ psql    

3) Perbarui mynewusernamekata sandi. Rekatkan kata sandi, dan ingat untuk menempatkan tanda kutip tunggal di sekitarnya:

postgres=# ALTER ROLE mynewusername PASSWORD `musthavebeenverydrunkwheniwrotethis`;

4) Keluar dari shell:

postgres=# \q

Mencoba terhubung ke localhost melalui penampil basis data seperti Dbeaver, dan tidak tahu apa kata sandi pengguna postgres Anda? Ubah seperti ini:

1) Jalankan passwdsebagai superuser:

$ sudo passwd postgres

2) Masukkan kata sandi akun Anda untuk sudo(tidak ada hubungannya dengan postgres):

[sudo] password for starkers: myaccountpassword

3) Buat passwod baru akun postgres:

Enter new UNIX password: databasesarefun
Retype new UNIX password: databasesarefun
passwd: password updated successfully

Menerima pesan kesalahan ini ?:

Run `$ bin/rake db:create db:migrate` to create your database
$ rake db:create db:migrate
PG::InsufficientPrivilege: ERROR:  permission denied to create database

4) Anda harus memberi pengguna Anda kemampuan untuk membuat basis data. Dari shell psql:

ALTER ROLE thisismynewusername WITH CREATEDB

1
Saya berharap saya bisa memberi Anda lebih banyak +1 untuk solusi brilian ini, saya akan lebih bahagia jika itu berhasil untuk saya. jawaban masih brilian. pertanyaan cepat, apakah itu backtick di sekitar kata sandi dalam mengubah peran? juga, Anda tidak perlu menggunakan backticks sebelumnya bukan?
Mike HR

@ MikeH-R Terima kasih, malu itu tidak berhasil untuk Anda! Apakah Anda yakin memiliki YAML yang relevan host: localhost? Itulah gotcha yang sebenarnya bagi saya. Di sekitar kata sandi Anda memerlukan tanda kutip tunggal. Di keyboard saya itu shift+ @. Dengan shell psql Anda hanya perlu tanda kutip tunggal di sekitar beberapa parameter. Anda membutuhkannya di sekitar kata sandi, dan bukan di sekitar nama peran, misalnya. Sangat jujur ​​untuk jujur, tapi oke setelah Anda tahu itu adalah nuansa :)
Starkers

@ MikeH-R Saya sudah mengubah jawaban saya untuk membuat semuanya lebih jelas. Pertimbangkan untuk mencoba lagi!
Starkers

beres sekarang, terima kasih lagi untuk jawaban yang brilian, sebagian besar jawaban lain yang saya temui adalah tentang melonggarkan keamanan yang jelas tidak baik dalam produksi.
Mike HR

29

Untuk solusi permanen:

Masalahnya dengan pg_hba Anda. Garis ini:

local   all             postgres                                peer

Seharusnya

local   all             postgres                                md5

Kemudian restart server postgresql Anda setelah mengubah file ini.

Jika Anda menggunakan Linux, perintahnya adalah

sudo service postgresql restart

1
Terima kasih! Inilah jawaban sebenarnya.
skplunkerin pada

9

Saya menghadapi masalah yang sama pada mesin Ubuntu jadi saya menghapus kesalahan ini dengan mengikuti beberapa langkah. Beralih ke pengguna postgres

$ sudo su - postgres

itu akan meminta kata sandi dan kata sandi standarnya adalah postgres

Setelah mengalihkan pengguna ke postgres, buka konsol psql

$ psql

jadi periksa versi postgres jika beberapa versi tersedia

psql=# select VERSION();

PostgreSQL 9.1.13 on x86_64-unk....         # so version is 9.1

Sekarang buka postgres user

vim /etc/postgresql/9.1/main/pg_hba.conf

9.1 adalah versi return form atas perintah

dan ganti

local   all             postgres                                peer

untuk

local   all             postgres                                md5

Mulai ulang layanan

sudo service postgresql restart

Saya menulis langkah-langkah di blog saya juga

http://tarungarg402.blogspot.in/2014/10/set-up-postgresql-on-ubuntu.html


Anda telah memberikan jawaban yang benar, hanya melewatkan satu hal yang tidak perlu Anda periksa versinya. Anda dapat mengubah kata sandi dengan menjalankan perintah ini setelah psql Mengubah "username" pengguna mengatur kata sandi 'xyz';
vishu

Ingatlah bahwa md5otentikasi memerlukan kata sandi non-null untuk pengguna basis data Anda (baru saja diketahuinya hari ini ketika mencoba memaksimalkan kemalasan saat membuat aplikasi Rails).
Mark Leighton Fisher

5

Anda dapat pergi ke file /var/lib/pgsql/data/pg_hba.conf Anda dan menambahkan kepercayaan di tempat Ident It bekerja untuk saya.

local   all all trust
host    all 127.0.0.1/32    trust

Untuk perincian lebih lanjut, lihat masalah ini. Identifikasi identitas gagal untuk pengguna


Centos 6.6, coba:/var/lib/pgsql/9.2/data/pg_hba.conf
Patrick

4

Menambahkan host: localhostadalah keajaiban bagi saya

development:
  adapter: postgresql
  database: database_name_here
  host: localhost
  username: user_name_here

0

Jika Anda mendapatkan pesan kesalahan ( Peer authentication failed for user (PG::Error)) saat menjalankan tes unit, pastikan database tes ada.


0

Saya juga menghadapi masalah yang sama saat bekerja di lingkungan pengembangan saya, masalahnya adalah saya meninggalkan host: localhostkomentar di config/database.ymlfile.

Jadi aplikasi saya tidak dapat terhubung ke database PostgreSQL, hanya menghapus komentar itu menyelesaikan masalah.

development:
  <<: *default
  database: database_name

  username: database_username 

  password: database_password

  host: localhost

Itu saja.

saya harap ini membantu

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.