MySQL 101: Arbeide med MySQL DB på Linux


Noen mennesker er født til å være en databaseadministrator, og andre har databaseadministrasjon dyttet på dem. Hvis du er i førstnevnte gruppe, og du må utføre noen veldig grunnleggende operasjoner, som å lage og sikkerhetskopiering av databaser, finner du det er mye enklere enn det høres ut. La oss ta en titt på noen helt grunnleggende MySQL administrasjon å komme i gang.

Når jeg sier grunnleggende, jeg mener grunnleggende. Denne opplæringen vil ikke
gjøre deg til en databaseadministrator eller MySQL ekspert. Men du må nok MySQL for å få av for noen standard scenarier som å sette opp WordPress eller gjøre en rask backup av en MySQL database.

Du kan også gjøre disse tingene med phpMyAdmin, og mange folk gjør, så hvorfor se på kommandolinjen? Den første grunnen er at bruk av kommandolinjeklienten gir en mindre stykke programvare å installere, vedlikeholde og bekymre seg for. Hvis du finner deg selv i samspill med MySQL sjelden, er det ikke mye grunn til å bekymre seg for å installere et eget stykke programvare for å samhandle med det.

Også vite hvordan man skal gjøre ting på kommandolinjen betyr å være i stand til å gjøre dem ved hjelp av skript. Du kan ikke script samhandling med phpMyAdmin (ikke lett, uansett). Så hvis du ønsker å skrive et skript for å sikkerhetskopiere databasen på en ukentlig eller daglig basis, må du vite hvordan du gjør det fra kommandolinjen.

I denne opplæringen jeg skal dekke det aller bare grunnleggende for å arbeide med MySQL – opprette en database og tabeller, opprette brukere, slippe en database og tabeller, reparere en database, og arbeider med sikkerhetskopier. Forutsetningen her er at du allerede har MySQL installert, og trenger bare å komme i gang med kommandoene.

Logger inn

La oss starte med de virkelig enkle ting, logge inn på MySQL skallet. Bare kjøre mysql -u brukernavn
-p. Dette vil logge deg inn i skallet. For å se hvilke databaser er tilgjengelige, kjør:

 mysql > vis databaser; 

Legg merke til; I slutten. Det forteller MySQL at kommandoen er ferdig. Uten det, forutsetter det en ekstra linje med innspill kommer. Dette kan være nyttig for å legge inn lengre SQL-kommandoer.

Du vil også merke seg at MySQL skallet sparer sin historie. Hit pil opp og du vil se den samme kommandoen du nettopp kjørte

Når du ønsker å arbeide med en bestemt database, kjøre bruk database.
; der database
er navnet på MySQL database du ønsker å arbeide med. Hva om du trenger for å lage en database? Ikke noe problem.

Opprette en database og tabeller

Opprette en database er enkelt. På MySQL skallet, kjører opprette database database_foo
. Det vil skape database_foo
, uten tabeller. Du kan også gjøre dette ved hjelp av bash shell bruker mysqladmin verktøyet, som så:

 mysqladmin -u  bruker: -p skape  database 

Dette er raskere hvis du bare kommer til å opprette databasen fra kommandolinjen, men tregere hvis du skal bruke en haug med kommandoer. Hvorfor? Fordi du trenger å angi passordet (-p) hver gang. Merk at du kan
omgå dette ved å opprette en .my.cnf konfigurasjonsfil med ditt brukernavn og passord. Jeg anbefaler ikke dette, men som det er mindre sikker.

Du kan også bruke mysqladmin verktøyet til å starte, stoppe, og legg MySQL, samt mange andre administrative oppgaver. Trenger du å stenge MySQL ned for noen grunn? Kjør mysqladmin -u bruker: -p nedleggelse. . Kjør mysqladmin --help for en liste over kommandoer

For å lage en tabell, er syntaksen ligner til å skape en database: opprette tabellen table_foo Hotell og deretter alternativene for tabellen. Siden hver tabell kan ha ganske mange felt med ulike datatyper, standardinformasjon, etc., kan disse kommandoene få lange. Her er et eksempel utsagn som skaper wp_users tabell for WordPress:

 CREATE TABLE `wp_users` (` ID` bigint (20) unsigned NOT NULL AUTO_INCREMENT, `user_login` varchar (60) NOT NULL standard '',` user_pass` varchar (64) NOT NULL standard '', `user_registered` datetime NOT NULL standard '0000-00-00 00:00:00',` display_name` varchar (250) NOT NULL standard '', `spam` tinyint ( 2) NOT NULL standard '0', `deleted` tinyint (2) NOT NULL standard" 0 ", PRIMARY KEY (` ID`), unik nøkkel `user_login` (` user_login`), KEY `user_login_key` (` user_login` ), KEY `user_nicename` (` user_nicename`)) MOTOR = MyISAM AUTO_INCREMENT = 5 DEFAULT CHARSET = latin1; 

jeg utelatt flere av uttalelsene for korthets skyld, men den grunnleggende smaken er der fortsatt. Etter opprette tabellen uttalelse, ser du at du angir feltnavn, datatypen, hvis et felt kan være NULL (dvs. har ingen verdi), og standardverdiene. Felt uttalelser er atskilt med komma, og den siste linjen angir den motoren som MySQL vil bruke (i dette tilfellet, MyISAM), og andre alternativer for tabellen.

Hvis det ser ut som vrøvl, ikke bekymre deg . Dette blir måte
utover 101 administrasjon og inn faktisk lage skjema. Hvis du arbeider med programmer som har forhåndsdefinerte databaseskjema, bør du ikke trenger å vite hvordan å komme opp med noen av disse utsagnene.

Sette opp en bruker:

For å starte med bør du ha en root bruker for MySQL, som er forskjellig fra root brukeren for systemet. Men du ikke ønsker å bruke root-kontoen for alt, du bør lage en vanlig MySQL brukeren i tillegg. For eksempel har jeg en annen bruker for min WordPress database som har færre rettigheter enn root brukeren

Opprette en bruker er enkel, bare logge inn i MySQL skall og kjøre følgende:.

 Opprett bruker 'bob' @ 'localhost' identifisert av 'passord'; 

Du vil ønske å endre detaljene, selvfølgelig. Å ha en bruker ikke gjøre noe godt, men uten å gi tilgang til en eller flere databaser. . Så hvis du ønsker å gi tillatelse til en bruker å ha alle rettigheter for en gitt database, vil du gjøre noe som dette:

 Gi alle rettigheter PÅ wordpress_db * til 'bob' @ 'localhost'; < p> Du kan begrense rettighetene som brukeren har til operasjoner som velger, slette, sette inn, etc. Se MySQL referansehåndboken for mer informasjon der. 

Opprette en database med tipp

MySQL-databaser lagres på disk som binære filer med data, pluss indeksfiler og en fil som beskriver formatet på tabellen. Så for hver database vil du ha en katalog under /var /lib /mysql pluss tre filer for hvert bord, og en .opt fil med alternativer for databasen.

Jeg tror det er mulig å gjenopprette en database ved hjelp filene på disken, men det er lettere å jobbe med en database dump. Hvordan får du en? Enkel. MySQL har et verktøy som heter, ganske beskrivende, mysqldump. For å opprette en dump av en database som heter wordpress, vil du kjøre:

 mysqldump -u  bruker: -p wordpress > wordpress.sqlThis oppretter en tekstfil, muligens ganske stor hvis databasen er ganske store, som har data og instruksjoner for MySQL for å opprette en ny database. Som et eksempel, er min WordPress database 39MB på disken, og teksten fil laget med mysqldump er 41MB. Så det er ikke mye større, men det vil være noen overhead. 

Legg merke til at du kan bruke dette verktøyet i en mer finkornet mote. Det vil si, mysqldump kan brukes til å lage en dump av individuelle tabeller.

Hvis du vil gjenopprette fra en MySQL dumpfil er enda enklere. La oss si at du ønsker å gjenopprette en database kalt " wordpress " fra en dumpfil kalt wordpress.sql (som vist i eksemplet ovenfor). Alt du trenger er banen til dumpfil og navnet på databasen, pluss en gyldig bruker med de riktige rettighetene:

 mysql -u  bruker: -p wordpress < wordpress.sql 

Databasen må eksistere før du kan gjenopprette dataene. Så hvis du flytter en MySQL-basert applikasjon fra ett system til et annet, må du opprette databasen (tom) før du gjenoppretter data.

Selvfølgelig er det mye, mye mer å lære om MySQL administrasjon og SQL-setninger, etc. Som jeg nevnte, kan du også gjøre en god del av MySQL administrasjon med phpMyAdmin. Vi skal se på det, og mer avanserte MySQL-bruk, i en fremtidig opplæringen. Inntil da, jeg håper at denne korte guiden er nyttig for brukere som bare trenger å utføre enkle MySQL operasjoner uten å dykke inn DBA opplæring.