PHPMyAdmin (PMA) är en utmärkt fri, öppen källkodsbaserad databasklient som kan användas för att interagera lättare med MySQL och applikationsdatabaser. Jag beskriver hur man installerar det, säkrar det och några vanliga scenarier som det kan hjälpa dig med i databasadministrationen. Här är en online-demo av PMA för dig att utforska.
Förutom att erbjuda en visuell GUI för databasoperationer uppskattar jag också att kunna köra kommandorads SQL-operationer via min webbläsare utan att behöva logga in på servern via SSH. Till exempel, vissa WiFi-anslutningar och mobila hotspots avslutar regelbundet uthålliga SSH-sessioner, vilket gör databasuppgifter problematiska.
Att komma igång med PMA är ganska enkelt på Linux. Jag beskriver hur man gör det med Ubuntu 14.x på Digital Ocean. Logga in på din server via SSH.
apt-get installera phpmyadmin
Du kan använda standardinställningarna under installationen eller anpassa dem efter eget tycke.
När du begränsar MySQL-åtkomst till endast localhost (vilket du borde) finns det inga fjärrportar till MySQL för att hackare ska försöka komma åt. De kan försöka bryta in via SSH eller prova SQL-injektionsattacker mot dina applikationer, men de kan inte direkt attackera databasen. När du har installerat PMA kan vem som helst köra webbaserade attacker mot det för att få kontroll över din databas, så det är viktigt att ta hand om det.
Det finns några försiktighetsåtgärder som jag rekommenderar när du konfigurerar PMA.
1. Använd mycket starka lösenord för alla dina MySQL-konton, särskilt root-kontot. t.ex. 25 tecken för root-lösenordet.
2. Använd olika MySQL-konton och behörigheter för varje applikation / webbplats som körs på en enda server. På det här sättet om ett lösenord äventyras är bara en webbplats databas komprometterad.
3. Ändra standardadressen som används av PMA. På så vis kan människor inte besöka http://yourblog.com/phpmyadmin. Medan denna säkerhet genom dunkelhet inte är en mycket effektiv teknik, lägger den till ett visst skydd.
Lägg till ett alias till apache.conf
fil:
nano /etc/phpmyadmin/apache.conf
Alias / myobscuredpma / usr / share / phpmyadmin
Uppdatera apache:
service apache2 reload
Då, för att komma åt PMA, besök http://yourblog.com/myobscuredpma
Om du behöver ändra ditt PHPMyAdmin lösenord kan du redigera config-db.php
här:
nano /etc/phpmyadmin/config-db.php
4. Konfigurera webbautentisering för PMA-webbplatsen. Detta kräver att du anger ett extra lösenord för att få tillgång till PMA, utöver ditt databaslösenord, så här:
Så här konfigurerar du användarbegränsningar för Apache: Följ dessa steg:
Installera htpasswd
som en del av apache2-utils:
apt-get install apache2-utils
Gör en katalog för att lagra dina lösenord:
mkdir / etc / htpasswd
Lägg till htaccess
stöd för PMA:
nano /etc/phpmyadmin/apache.conf
Lägg till TillåtOverride All
Nedan
Alternativ FollowSymLinks DirectoryIndex index.php AllowOverride All
Konfigurera din användarautentisering för PMA:
nano /usr/share/phpmyadmin/.htaccess
AuthType Basic AuthName "Logga in krävs för åtkomst" AuthUserFile /etc/htpasswd/.htpasswd Kräv giltig användare
Ange ditt lösenord:
htpasswd -c /etc/htpasswd/.htpasswd användarnamn
Och starta om Apache:
service apache2 omstart
Bläddra till din PMA-webbplats, och du blir uppmanad till ditt användarnamn och lösenord som visas ovan.
Jag tycker att PMA är särskilt användbar under utvecklings- och testfaser, där jag kanske vill återställa databasen eller säkerhetskopiera operationerna flera gånger.
Utan PMA skulle jag logga in på min server via SSH. Logga in på MySQL och kör sedan:
skapa databas myapp; bevilja alla privilegier på myapp_database. * Till "ditt-mysql-användarnamn" @ "localhost" identifierat av "ditt-mysql-lösenord"; spola privilegier;
Med PMA kan du köra kommandoraden med det visuella gränssnittet. Klicka på SQL-fliken och klistra in MySQL-databasinstruktionerna ovan. Klicka sedan på Gå för att skapa databasen.
Eller du kan använda det visuella gränssnittet direkt:
Du kan också lägga till användare och definiera privilegier på det här sättet. Klicka på fliken privilegier:
Klicka på Lägg till användare och definiera privilegierna för databasen som du önskar:
För ditt typiska applikationsdatabaskonto vill du kolla rutorna i rutorna Data och struktur.
För att släppa en databas, besök databasmenyn. Klicka på databasen du vill släppa och klicka på Drop:
Det är en mycket bra idé att säkerhetskopiera din applikationsdatabas innan du utför några utökade operationer på databasen eller koduppgraderingar. Om något går fel kan du återställa din webbplats från säkerhetskopian.
Använd PMAs webbgränssnitt, klicka på din databas, klicka på fliken Exportera och välj Anpassad.
Aktivera "Lägg till tabellen Tabell / Visa / Förfarande / Funktion / Händelse":
När du klickar på Go kommer PMA att ladda ner en säkerhetskopia av hela din databas. Om du är inställd på Apache PHP-tidsgränssnittet är det inte säkert att vissa långa filhämtningar går ut och misslyckas. Du kan justera detta i php.ini
som jag beskriver på min webbplats.
PMA är fantastiskt för att testa dina SQL-frågor under utveckling. När jag skapade Geogram (se även min kommande handledning MapApp on Tuts +), behövde jag lära mig och testa ett antal komplexa geolocation-frågor för grannskapsformat, t.ex. hitta närmaste grannskap till min adress PMA gjorde det mycket lättare.
Välj din databas, klicka på Query. Klistra in eller redigera dina komplexa frågor och testa dem direkt från PMA:
När jag hade mina frågor fungerade, kunde jag lättare skriva programmatisk ActiveRecord-kod. Precis som ett exempel:
$ kriterier = nya CDbCriteria; $ Criteria-> tillsammans = true; $ kriterier-> har = "avstånd < 100"; $criteria->order = "avstånd ASC"; $ criteria-> with = array ('place_geometry' => array ('select' => 'place_id, center,'. Ny CDbExpression ('(3959 * acos (cos (radianer ('. $ lat. ')) * cos (radianer (X (center))) * cos (radianer (Y (center)) - radianer ('. $ lon.')) + synd (radianer ('. $ lat. centrum))))) som avstånd "))); $ dataProvider = ny CActiveDataProvider (Plats :: modell () -> aktiv () -> innehållerMember ($ id), array ('criteria' => $ kriterier, 'pagination' => array ('pageSize' => 10,) ,));
Om du är en utvecklare har du troligen haft en bugg i en app korrumperad din databas. Eller hur?
Till exempel kommer vissa av mina e-posthanteringsappar ibland fastna på ovanliga meddelanden som kommer in; Dessa buggar är svåra att hitta i regelbunden testning. När det händer har jag funnit det användbart att ändra databasen direkt med PMA för att lossa mina uppgifter och få webbplatsen att köra igen. I vissa fall kan bara du enkelt kunna bläddra tabeller hjälpa dig att diagnostisera vad som är trasigt.
I PMA, öppna databasen och välj ditt bord. Dubbelklicka på en kolumn för att direkt redigera den på plats. Gör ändringen du behöver och slå tillbaka:
Om du använder ett ramverk (som Yii) kan du använda programmatiska databasmigreringar. Databasmigreringar gör det lättare att iterera funktionutveckling och uppgradera dina applikationer. Att testa dem kan dock bryta saker i din lokala databas.
Vanligtvis kommer jag att köra in migrationsfel och jag kan inte migrera upp eller ner på grund av oöppnade index, utländska nycklar eller tabeller. I det här fallet kan jag använda PMA för att släppa ett bord och radera oönskade indexfiler.
I PMA, välj din databas, klicka på SQL-fliken och skriv in SQL för att släppa din utländska nyckel eller index. Här är några exempel:
Jag hoppas att du har hittat det här användbart. Vänligen skicka några kommentarer, korrigeringar eller ytterligare idéer nedan. Du kan bläddra i mina andra Tuts + handledning på min författarsida eller följa mig på Twitter @ reifman.