Installation af Postgres på Windows til brug sammen med Ruby-on-Rails

Indlæg af Hanne Mølgaard Plasc

Problem



I øjeblikket får jeg følgende fejl:



  PGError (FATAL: password authentication mislykkedes for brugeren 'postgres'):



når min app forsøger at få adgang til databasen.


Jeg ønskede at teste min SQL-opkald mod postgres, da min app regelmæssigt bryder, når den skubbes op til produktion på Heroku på grund af de strengere krav til postgres (som jeg synes er sandsynligvis en sund ting) over sqlite 3. Så jeg har en lignende anmodning herom for en ikke forældet tutorial til installation af postgres til brug med rubin på skinner på windows (7) venligst. Jeg troede det ville være en hurtig 20 minutters download og installation men 2 og en smule timer senere, og jeg tror ikke jeg er meget tæt endnu. Indtil videre har jeg:


Downloadet og installeret Postgres Version 8.4.8-1 herfra [32]


Indstil mine miljøvariabler sådan, at sti (for bruger) er: C:Ruby192in;C:Program Files (x86)PostgreSQL8.4in


Gemfile:



gem 'pg', '0.11.0'  # instead of gem 'sqlite3', '1.3.3'



løb bundle install til min skinner app tilsyneladende succesfuldt, men har ikke fundet nemme måde at validere installationen endnu.


indstil database.yml som foreslået her til: [33]


development:
  adapter: postgresql
  database: db/development
  username: postgres
  password: secret
  host: localhost
  encoding: UTF8
  pool: 5
  timeout: 5000


Jeg ved, at jeg skal oprette et brugernavn og en adgangskode til Postgres, måske også starte postgres-serveren, oprette forbindelse til den (?) Og lægge i min lokale IP-adresse jeg vil oprette forbindelse til en config-filer et sted og derefter redigere en af ​​de andre .conf filer i 'C: \ Program Files (x86) \ PostgreSQL \ 8.4 \ data' osv. ... [34] [35] [36]


Jeg tror, ​​at Rails har gjort mig blød, overvejer jeg at tænke på ting, eller er det faktisk temmelig vanskeligt at oprette, og jeg skal bare gå tilbage til Sqlite3, for der er også den awesomely nyttige SQLite Manager, Firefox plugin?


Jeg søger stadig efter en nybegyndervejledning til installation og brug af Postgres til skinner, men hidtil er kun forvekslet med de fleste af de ting, jeg ser på/forsøgt at følge som dette, dette, dette, dette (til Snow Leopard), dette (linux). [37] [38] [39] [40] [41] [42]


Enhver pointer ville blive meget værdsat. Tak!


James

Bedste reference


En tilgang til installation af Postgres på Windows 7 til brug som PostgreSQL database til et rails 3 (3.0.7) projekt.





Præambel (du kan springe over denne bit)


Så det første at påpege er, at Postgres ikke bare er en anden filtypenavn fra .sqlite3, det er en hel mekanisme til styring af dine databaser. Som sådan har den en klient/server model, som du skal konfigurere både at bruge Postgres som databasen til din skinner app.


Motivation for at gennemgå betydelige smerter ved Postgres setup i forhold til næsten ubesværet sqlite setup: Hvis du genudfører til Heroku, bruger de for tiden Postgres, så nogle af dine SQL-opkald, der er fine på sqlite3, vil bryde, når de bruges sammen med Postgres. Det er meget nemmere at debugere postgres lokalt snarere end når det er på Heroku 's servere.


Så jeg gjorde følgende ting:
(Ansvarsfraskrivelse: Jeg har muligvis glemt at inkludere nogle af de ting, jeg gjorde ... det tog mig over 48 timer med on og off smerte for at få det til at fungere ... hvis følgende råd ikke virker for dig så den enorme (2300 sider !!), men meget grundig Postgres-dokumentation skal hjælpe. Jeg anbefaler at downloade dette alligevel, hvis du er seriøs med at bruge Postgres, da det har meget materiale, jeg kun har lige begyndt at forstå betydningen af.)
(Anden ansvarsfraskrivelse: Jeg har næsten helt sikkert brudt 20 fornuftige Postgres-retningslinjer og eksponerede sikkerhedshuller i Postgres-databasen, mens du gør det. Hvis der er nogle indlysende ting, som en erfaren Postgres-bruger er uenig i, skal du redigere mit indlæg.) [43]





.Step 1. Hent og installer PostgreSQL v9.0.4-1 herfra, fordi her sagde kun 9.0.x ville blive understøttet på Windows 7. Jeg holdt alle standardindstillingerne og brugte bare 'hemmelige' som adgangskode, når du bliver bedt om det af Postgres installatøren for en (igen ikke helt sikker på, hvad konsekvenserne af at dele den information på internettet er ... vil snart finde ud af, jeg er sikker). Du skal bruge denne adgangskode i trin 3. [44] [45]


.Step 2. Skift miljøvariabler sådan, at sti ( for system , ikke bruger (jeg er ikke sikker på om dette er signifikant eller ej)) er: C:Program FilesPostgreSQL9.0in]]

(f.eks. Jeg er på 64-bit windows, og det er derfor ikke installeret til 32-bit i 'C: \ Program Files (x86) \ PostgreS ...') [46]


Glem ikke at ændre adgangsrettigheder til mappen PostgreSQL \ 9.0 og fjern eventuelle standardlæselige rettigheder i mappen eller indholdet.
(Du skal måske også genstarte din computer, for at disse får virkning - tak @Gavin - selvom det ikke er sandsynligt).


.Step 3. Test Postgres-installationen ved at prøve at oprette en ny database:
Fra kommandolinjen: createdb -U postgres mydb\_as\_postgres.
Du skal blive bedt om at indtaste adgangskoden nu, hvis du ikke kan være, at du først skal starte serveren (jeg kan ikke huske, om jeg skulle gøre det eller ej). Den nemmeste måde er gennem pgAdmin III, som skal være 'pgAdmin3.exe' i en mappe et sted som C:Program FilesPostgreSQL9.0in. Når du har startet pgAdmin III, skal der være et panel til venstre kaldet 'Object Browser'. I dette skal der være et træ med:


Server Grupper> Servere> PostgreSQL 9.0 (localhost: 5432)


Højreklik på 'PostgreSQL 9.0 (localhost: 5432)' og vælg 'Connect'.


Kommandoen createdb -U postgres mydb\_as\_postgres skal oprette en ny database kaldet 'mydb\_as\_postgres', som du kan tjekke ved at starte pgAdmin III og dobbeltklikke på 'PostgreSQL 9.0 (localhost: 5432)'. Under dette skal der være:


Databases (2) som skal indeholde 2 databaser kaldet mydb\_as\_postgres og postgres


Jeg kaldte det \_as\_postgres fordi -U postgres delen af ​​kommandoen fortæller Postgres at oprette databasen med postgres-brugeren som sin ejer, som du skal angive, når du ikke er logget ind som postgres bruger. Jeg har alle mine filer gemt som 'AJames' -bruger, men så hvis du er den samme og vil fortsætte med at udvikle din app, når du logger ind som en anden bruger, skal du oprette en Postgres-rolle for denne bruger nu (se trin 4).


.Step 4. Gennem pgAdmin III. Højreklik på Login Roller (som er for mig):


Objektbrowser> Servergrupper> Servere> PostgreSQL 9.0 (localhost: 5432)> Login Roller


Højreklik på Login Roller og vælg 'Ny Login Roll ...'
i rollen navn, indsæt dit operativsystem brugernavn, som for mig er ajames,
og udfyld dit kodeord under fanen 'Rolle privilegier', har jeg markeret alle felterne, men en erfaren postgres-bruger vil sandsynligvis stærkt anbefale at kun kontrollere 'arve rettigheder fra forældre roller' og 'kan oprette databaseobjekter' men jeg ' Jeg er ikke en erfaren bruger og vil bare debugere Rails SQL-opkald i Postgres, så jeg også tjekket 'Superuser' og 'Can create roles', bare i tilfældet.


.Step 5. Du skal nu kunne oprette en ny database uden at blive logget ind som postgres-brugeren. Prøv at skrive:


createdb mydb\_as\_user


Forhåbentlig bør det fungere for dig.


.Step 6. Okay, så du har en development.sqlite3-fil i din rails 'db/' -katalog. I første omgang skulle jeg indstille den næste test som konverterer denne fra sqlite3 til psql. < br>
Jeg kunne ikke få det til at fungere, men jeg forlod mine forsøg her, da den løsning, jeg brugte krævede, at have dataene i en Rails-app på Heroku.com (se i stedet løsningen fra trin 7 og fremad). For dem, der kun har en lokal app og ingen data i Heroku, kan de ikke bruge den samme tilgang, så de må muligvis undersøge noget som dette:


x6.1 Prøv først 'psql' ved at prøve en kommando fra din kommandolinje som:


psql mydb\_as\_user


dette skal vise noget som nedenfor (efter du har indtastet din adgangskode):


C:>psql mydb\_as\_user
Password:
psql (9.0.4)
WARNING: Console code page (850) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

mydb5=# 


x6.2 Prøv at indtaste:


CREATE TABLE users\_table (id integer, "name" text);


Det skal vise:


CREATE TABLE
mydb5=#


Hvis du tjekker pgAdmin III, skal du se bordet der under:


Objektbrowser> Servergrupper> Servere> PostgreSQL 9.0 (localhost: 5432)> Databaser> mydb\_as\_user> Schemas> public> Tabeller> users\_table>


x6.3 Okay, ud for at prøve konverteringen. Downloadet sqlite-shell prækompileret binært til Windows.

x6.4 Opret en ny mappe, jeg brugte 'C: \ temp' og sætte sqlite3.exe og dine development.sqlite3 filer i den.

x6.5 Brug følgende kommandoer (som er herfra) til at dumpe development.sqlite3-databasen til Postgres. [47] [48]


sqlite3 development .dump | psql development2


du får måske en fejl som:


psql: FATAL: database "development2" does not exist


x6.6 så jeg gik ind i pgAdmin III og lavede en udvikling 2 database, prøvede kommandoen igen og fik:


ERROR:  syntax error at or near "PRAGMA"
LINE 1: PRAGMA foreign\_keys=OFF;
        ^
BEGIN
COMMIT


Som jeg sagde, kunne jeg ikke få det til at fungere. Jeg er sikker på at der er en måde at omgå den fejl, men jeg tænkte på en anden måde, og jeg brugte i stedet denne løsning (som kræver en Heroku-konto for at få dine data og gør konverteringen fra sqlite3 til psql ved hjælp af Taps gemmen (jeg tror):


.Step 7. i pgAdmin III Jeg oprettede en anden database. Under fanen Egenskaber sætter jeg navn: 'udvikling', ejer: 'AJames' (erstat dette med dit eget Windows-brugernavn). Og under fanen privilegier skal du sætte rolle: 'offentlig' og tjekke ALLE-indstillingen (troede, at dette nulstilles til ukontrolleret, så jeg er ikke sikker på at det er nødvendigt).


.Step 8. tilføj
gem 'pg', '0.11.0'
til din perlefil. Du vil sikkert også fjerne:
gem 'sqlite3'
på dette tidspunkt også.


.Step 9. Indstil database.yml som foreslået her til: [49]


development:
  adapter: postgresql
  database: db/development
  username: AJames # replace this with your own user name
  password: secret # replace this with your own password
  host: localhost
  encoding: UTF8
  pool: 5
  timeout: 5000


Hvis du arbejder på et open source-projekt og ikke vil have dit adgangskode offentliggjort, skal du kigge på nogle af svarene på Sikker udlevering af adgangskoden til databasen i en Rails-app.


.Step 10. fra kommandolinjen i din skinner appens rodkatalog kør:
rake db:migrate
Dette vil skabe det nye skema og alle tabeller i Postgres databasen.


.Step 11. Kør heroku db:pull fra din kommandolinje (igen fra i rodskemaet på din skinnerapp) for at trække alle dine data ned og ind i din nye, tomme Postgres-database. Jeg tror på dette tidspunkt, at din taps perle vil gøre dette arbejde for dig.





.Step 12. Forhåbentlig er der ingen trin 12! ... og det skulle nu fungere for dig. Glad RoR PostgreSQL fejlfinding! Rediger, eller lad mig vide, om der er fejl i dette.


Her er også en liste over ekstra ting, der kan være interessante/nyttige:



  • Dette er et blogindlæg om Postgres-adgangskoder, hvad de er for,
    hvorfor du har brug for dem, hvordan du ændrer dem osv.

  • Dette, under 'Oprettelse af en rumlig database', er nyttigt for nybegyndere til
    forstå hvad pg\_hba.conf handler om, og det andet link der
    Reno gav ovenfor, under 'Brug af pgAdmin III GUI' er nyttigt at
    test for at se om postgres rent faktisk virker, før du forsøger at passe
    det med Rails (dvs. prøv at oprette en database og lægge et bord og
    nogle data ind i det).

  • I den store, men meget omfattende Postgres-dokumentation, 'd
    start på side 58, 'I. tutorial'. Så på pdf side 431 (!) Er der s
    'Kapitel 17. Serveropsætning og drift', som jeg også fandt nyttige.


Andre referencer 1


Ingen af ​​dine links syntes at være den (uden tvivl) mest nyttige dokumentation - de officielle postgresql-dokumenter. Jeg har for nylig konfigureret en Linux Mint-boks med postgresql og django ved hjælp af en kombination af disse dokumenter og disse, selvom sidstnævnte er specifikke for Linux. [51] [52] [53] [54] [53] 55]] [56]


Jeg bekymrer mig mere om at validere postgresql-siden af ​​ting, mindre om skinner. Det vil sige, at dit spørgsmål skal være 'Hvordan kan jeg oprette og teste en postgresql-server på en Windows 7-boks', mere end du behøver at vide hvordan man får det låst i skinner.


Redigere:
Måske kan dette også være til nytte for dig - officiel postgresql wiki med detaljerede installationsguider. [57]


Held og lykke!

Andre referencer 2


svaret fra AJP er det rigtige med bare en lille genkonfiguration.
Linjen


    database: db/development 


virker ikke for mig.
Jeg skal ændre det til


    database: development


Jeg bruger dette til rubin på skinner til kommandoen


    rake db:create 


og


    rake db:migrate


at arbejde