Installere og bruke PHPMyAdmin for webutvikling

Hva du skal skape

PHPMyAdmin (PMA) er en utmerket gratis, åpen kildekodebasert databaseklient som kan brukes til å samhandle lettere med MySQL og applikasjonsdatabaser. Jeg vil beskrive hvordan du installerer det, sikre det og noen vanlige scenarier som det kan hjelpe deg med i databasedrift. Her er en online demo av PMA for deg å utforske.

I tillegg til å tilby et visuelt GUI for databasetjenester, setter jeg også pris på å kunne kjøre kommandolinjens SQL-operasjoner via nettleseren min uten å måtte logge på serveren via SSH. For eksempel, noen WiFi-tilkoblinger og mobile hotspots avslutter jevnlig vedvarende SSH-økter, noe som gjør databasen oppgaver problematisk.

Installere PHPMyAdmin

Komme i gang med PMA er ganske grei på Linux. Jeg skal beskrive hvordan du gjør det med Ubuntu 14.x på Digital Ocean. Logg inn på serveren din via SSH.

apt-get installer phpmyadmin

Du kan bruke standardinnstillingene under installasjonen eller tilpasse dem etter eget ønske.

Når du begrenser MySQL-tilgang til bare localhost (som du burde), er det ikke noen eksterne porter til MySQL for en hacker å prøve å få tilgang til. De kan prøve å bryte inn via SSH eller prøve SQL-injeksjonsangrep mot dine applikasjoner, men de kan ikke direkte angripe databasen. Når du har installert PMA, kan alle kjøre nettbaserte angrep mot det for å få kontroll over databasen din, så det er nødvendig å ta vare på det.

Det er noen forholdsregler jeg anbefaler når du konfigurerer PMA.

1. Bruk veldig sterke passord for alle dine MySQL-kontoer, spesielt root-kontoen. f.eks 25 tegn for root-passordet.

2. Bruk forskjellige MySQL-kontoer og privilegier for hvert program / nettsted som kjører på en enkelt server. På denne måten hvis ett passord er kompromittert, blir bare ett nettsteds database kompromittert.

3. Endre standard nettadressen som brukes av PMA. På denne måten kan folk ikke besøke http://yourblog.com/phpmyadmin. Selv om denne sikkerheten ved dunkelhet ikke er en veldig effektiv teknikk, gir den noe beskyttelse.

Legg til et alias til apache.conf fil:

nano /etc/phpmyadmin/apache.conf
Alias ​​/ myobscuredpma / usr / share / phpmyadmin

Last opp apache:

service apache2 reload

Så, for å få tilgang til PMA, besøk http://yourblog.com/myobscuredpma

Hvis du må endre PHPMyAdmin-passordet ditt, kan du redigere config-db.php her:

nano /etc/phpmyadmin/config-db.php

4. Konfigurer webgodkjenning for PMA-nettstedet. Dette vil kreve at du skriver inn et ekstra passord for å få tilgang til PMA, i tillegg til databasens passord, slik:

For å konfigurere Apache brukerbegrensninger, følg disse trinnene:

Installere htpasswd som en del av apache2-utils:

apt-get install apache2-utils

Lag en katalog for å lagre passordene dine:

mkdir / etc / htpasswd

Legg til htaccess støtte for PMA: 

nano /etc/phpmyadmin/apache.conf 

Legg til Tillat Override All under 

 Alternativer FollowSymLinks DirectoryIndex index.php AllowOverride All

Konfigurer brukerautentisering for PMA:

nano /usr/share/phpmyadmin/.htaccess

AuthType Basic AuthName "Login Required for Access" AuthUserFile /etc/htpasswd/.htpasswd Krev gyldig bruker

Angi passordet ditt:

htpasswd -c /etc/htpasswd/.htpasswd brukernavn

Og start Apache på nytt:

service apache2 restart

Bla gjennom til ditt PMA-nettsted, og du blir bedt om ditt brukernavn og passord som vist ovenfor.

Bruke PHPMyAdmin under webutvikling

1. Opprette og slippe databaser

Jeg finner PMA spesielt nyttig i utviklings- og testfaser der jeg kanskje vil tilbakestille databasen eller sikkerhetskopiere operasjoner gjentatte ganger.

Uten PMA, ville jeg logge på serveren min via SSH. Logg inn på MySQL, og kjør deretter:

opprett database myapp; gi alle privilegier på myapp_database. * TIL "ditt-mysql-brukernavn" @ "localhost" identifisert av "ditt-mysql-passord"; flush privilegier;

Med PMA kan du kjøre alle kommandolinjespørsmål med det visuelle grensesnittet. Klikk på SQL-fanen og lim inn MySQL-databasens instruksjoner ovenfor. Klikk deretter på Gå for å opprette databasen.

Du kan også bruke det visuelle grensesnittet direkte:

Du kan også legge til brukere og definere privilegier på denne måten. Klikk på fanen privilegier:

Klikk på Legg til bruker, og definer privilegiene for databasen du ønsker:

For din typiske applikasjonsdatabasekonto, vil du sjekke boksene i Datamaskin og strukturfeltene.

For å slette en database, besøk databasemenyen. Klikk på databasen du vil slippe, og klikk på Drop:

2. Sikkerhetskopiere databasen

Det er en veldig god ide å sikkerhetskopiere søknadsdatabasen før du utfører utvidede operasjoner på databasen eller oppgraderingen av koden. Hvis noe går galt, kan du gjenopprette nettstedet ditt fra sikkerhetskopien.

Bruk PMA-webgrensesnittet, klikk på databasen, klikk på Export-fanen og velg Tilpasset.


Aktiver "Legg til tabellen Tabell / Vis / Prosedyre / Funksjon / Hendelse":

Når du klikker på Go, laster PMA ned en sikkerhetskopi av hele databasen. Hvis du er ikke konfigurert for Apache PHP-tidsavbrudd, kan noen lange filnedlastinger avbryte og mislykkes. Du kan justere dette inn php.ini som jeg beskriver på nettstedet mitt.

3. Testing Queries

PMA er fantastisk for testing av SQL-spørringer under utviklingen. Da jeg opprettet Geogram (se også min kommende veiledning MapApp on Tuts +), trengte jeg å lære og teste en rekke komplekse geolocation-spørringer for nabolaget shapefiles, f.eks. finn nærmeste nabolag til adressen min. PMA gjorde dette mye lettere.

Velg databasen din, klikk på Spørring. Lim inn eller rediger dine komplekse søk og test dem direkte fra PMA:

Når jeg hadde spørsmålene mine, kunne jeg skrive programmatisk ActiveRecord kode lettere. Bare som et eksempel:

$ kriterier = nye CDbCriteria; $ Criteria-> sammen = true; $ kriterier-> har = "avstand < 100"; $criteria->ordre = "avstand ASC"; $ kriterium-> med = array ('place_geometry' => array ('select' => 'place_id, center,'. Ny CDbExpression ('(3959 * acos (cos (radianer ('. $ lat. ')) * cos (radianer (X (senter))) * cos (radianer (Y (senter)) - radianer ('. $ lon.')) + synd (radianer ('. $ lat.')) * sin senter))))) som avstand "))); $ dataProvider = ny CActiveDataProvider (Plass :: modell () -> aktiv () -> inkludererMember ($ id), array ('criteria' => $ kriterier, 'pagination' => array ('pageSize' => 10,) ,));

4. Reparer databaseoppføringer

Hvis du er en utvikler, har du sannsynligvis hatt en feil i en app, ødelagt databasen din. Jeg vet, ikke sant?

For eksempel, noen av mine e-postadministrasjonsapps blir noen ganger fast på uvanlige meldinger som kommer inn; Disse feilene er vanskelig å finne i vanlig testing. Når dette skjer, har jeg funnet det nyttig å endre databasen direkte med PMA for å løsne oppgaver og få siden til å kjøre igjen. I noen tilfeller er det bare å være i stand til enkelt å bla tabeller som kan hjelpe deg med å diagnostisere hva som er ødelagt.

I PMA, åpne databasen og velg tabellen. Dobbeltklikk på en kolonne for å redigere den direkte på plass. Gjør endringen du trenger og trykk på retur:

5. Tilbakestille databasen for overføringer

Hvis du bruker et rammeverk (som Yii), kan du bruke programmatiske databasemigrasjoner. Databasemigrasjoner gjør det enklere å gjenkjenne funksjonutvikling og oppgradere dine applikasjoner. Testing av dem kan imidlertid ødelegge ting i din lokale database.

Vanligvis vil jeg komme inn i migreringsfeil, og jeg kan ikke migrere opp eller ned på grunn av ubemerkede indekser, utenlandske nøkler eller tabeller. I dette tilfellet kan jeg bruke PMA til å slippe et bord og slette uønskede indeksfiler.

I PMA, velg databasen din, klikk på SQL-fanen og skriv inn SQL for å slippe din utenlandske nøkkel eller indeks. Her er et par eksempler:

Jeg håper du har funnet dette nyttig. Vennligst legg inn eventuelle kommentarer, rettelser eller flere ideer nedenfor. Du kan bla gjennom mine andre Tuts + tutorials på min forfatterside eller følge meg på Twitter @ reifman.