Start mysql fra kommandolinjen. Hvordan koble til MySQL på kommandolinjen på Windows

Populært databasestyringssystem MySQL mye brukt til ulike behov, først og fremst som en de facto standard innen internetthosting. Ikke mindre utbredt er pakken for å administrere dette DBMS - phpMyAdmin. Uten tvil er dette et godt, praktisk produkt, men veldig ofte skjer det at ferdighetene til å jobbe med dette produktet fullstendig erstatter ferdighetene til å jobbe med selve DBMS. Derfor bestemte vi oss i dette materialet for å introdusere leserne våre til hvordan de utfører grunnleggende MySQL-administrasjonsoppgaver fra kommandolinjen.

Som våre vanlige lesere kanskje har lagt merke til, motsetter vi oss konsekvent bruken av ulike typer kontrollpaneler av nybegynnere, uansett hvor praktiske og utbredte de måtte være. Samtidig benekter vi ikke deres eksistens, og vi bruker dem selv med glede i våre daglige aktiviteter.

Men det er en stor forskjell: en spesialist som vet hvordan man jobber med kommandolinjen ved å bruke panelet, erstatter ikke evnen til å jobbe med produktet, men gjør det bare lettere for seg selv å utføre daglige oppgaver. Og en nybegynner, vant til å utføre alle handlinger i panelet, hvis det er utilgjengelig, faller i en stille panikk, for nå trenger han å legge inn noen "trollformler" i denne uforståelige svarte konsollen ...

Faktisk er det ikke vanskelig å jobbe med en DBMS på kommandolinjenivå, og noen administrasjonsoppgaver er enklere og mer praktiske å utføre i den. La oss gjøre en reservasjon med en gang: Med administrasjon mener vi administrasjonen av DBMS-serveren, og ikke selve databasene. Selvfølgelig kan du også jobbe med dem fra kommandolinjen, men det er bedre å bruke mer passende verktøy for dette.

Administrere databaser og brukere i MySQL

Hvis du skulle begynne å danse fra ovnen, bør arbeidet med et DBMS begynne med å lage databaser og brukere av disse databasene. Oppgavene er i hovedsak enkle og kan løses perfekt, og viktigst av alt, enkelt, fra konsollen. Et verktøy med samme navn er laget for å fungere med MySQL-serveren mysql, som jobbes med i interaktiv modus, så først kobler vi til serveren:

Mysql -u root -s

Der -u-bryteren spesifiserer brukernavnet, og -p spesifiserer passordautentisering, lar kommandosyntaksen deg spesifisere passordet ved å skrive det inn uten mellomrom umiddelbart etter nøkkelen, men i dette tilfellet vil det bli lagret i kommandohistorikken, som er ikke helt bra, så det er bedre å skrive inn passordet interaktivt. Etter å ha utført denne kommandoen, vil vi befinne oss i MySQL-miljøet, som indikert av den endrede kommandolinjeprompten.

Arbeid i dette miljøet har sine egne egenskaper: hver kommando må avsluttes med symbolet ; eller \g, som det for øvrig er skrevet om i første linje i hilsenen. Denne modusen avsluttes med kommandoen:

La oss snakke om en veldig vanlig feil: å glemme å sette semikolon på slutten av kommandoen. Hva å gjøre? Ingen big deal, bare fyll inn de manglende tegnene i neste linje.

La oss først se på listen over databaser:

Vis databaser;

Som de sier, uten unødvendige detaljer, men for de fleste administrative oppgaver er dette nok:

Å finne ut listen over brukere er litt vanskeligere; den er lagret i form av en tjenestedatabasetabell mysql, så vi skriver en liten forespørsel:

Velg bruker, vert fra mysql.user;

Team plukke ut velger de angitte kolonnene bruker, vert, indikerer fra-alternativet hvor vi velger dem fra, nemlig fra brukertabellen til databasen mysql.

Den første kolonnen indikerer brukeren, den andre - verten som denne brukeren har lov til å koble til, % - angir enhver verdi. Vær oppmerksom på at hvis ivanov har i innstillinger lokal vert, deretter når den er koblet til mysql ved adressen 127.0.0.1 han vil ikke kunne få tilgang, dette må tas i betraktning når du spesifiserer tilkoblingsdata til DBMS-serveren i applikasjonene dine.

Du kan se databaseeiere ved å bruke følgende spørring:

Velg vert,db,bruker fra mysql.db;

Her kreves ingen spesielle kommentarer. For eksempel, ivanov har rettigheter til databaser med prefikset ivanov_ når tilkoblet via lokal vert, og andrey til baser med et prefiks andrey_ på hvilken som helst vert. Du kan se brukerprivilegier med kommandoen:

Vis tilskudd for "ivanov"@"localhost";

Vi pakker inn brukernavn og vert i enkle anførselstegn.

Den første linjen rapporterer at den angitte brukeren ikke har privilegier ( BRUK) til enhver tabell i enhver database ( *.* ), den andre linjen snakker om alle hovedrettighetene for alle tabeller i alle databaser med prefikset ivanov_.

En detaljert analyse av MySQL-rettighetssystemet går langt utover omfanget av denne artikkelen, la oss bare si ALLE PRIVELEGER gir brukeren alle rettigheter til sine databaser, men lar ham ikke administrere tilgangsrettigheter for andre brukere. For å gjøre dette brukes et sett med rettigheter ALLE PRIVELEGERMED TILSKUDSMULIGHET, som har som standard rot. For en enkel bruker er dette settet med rettigheter overflødig.

La oss prøve å opprette en ny bruker:

Opprett bruker "petrov"@"localhost" identifisert med "passord";

Kommandosyntaksen er enkel, vi spesifiserer brukernavn og vert, samt identifikasjonsdata i form av et passord. Alle beståtte verdier er pakket inn i enkle anførselstegn. Etter å ha opprettet en bruker, må du tildele ham rettigheter, dette gjøres med kommandoen STIPEND. Først vil vi helt klart frata ham privilegier til andres databaser:

Gi bruk på *.* til "petrov"@"localhost";

Deretter kan vi sette rettigheter etter eget skjønn, for eksempel å utstede fulle rettigheter til databaser med en navnemal petrov_:

Gi alle privilegier på `petrov\_%`.* til "petrov"@"localhost";

Vær oppmerksom på at mønsteret skal pakkes inn med tegn gravis (` ), som er plassert på nøkkelen med den russiske bokstaven E.

Du kan gi rettigheter til en separat database slik:

Gi alle privilegier på andrey_drupal8.* til "petrov"@"localhost";

For å velge rettigheter, bruk bare REVOKE-kommandoen, som har en lignende syntaks til (til hvem), erstatte den med fra (WHO). For eksempel:

Opphev alle privilegier på andrey_drupal8.* fra "petrov"@"localhost";

For at MySQL-serveren skal bruke rettighetene, må du tvinge den til å laste inn rettighetsbufferen på nytt med kommandoen:

Skyll privilegier;

Du må kanskje også endre brukerpassordet:

Angi passord for "petrov"@"localhost" = passord("nytt passord");

Gi nytt navn, og å gi nytt navn betyr ikke nødvendigvis å endre brukernavnet; du kan endre både navnet og verten, i hvilken som helst kombinasjon:

Gi nytt navn til brukeren "petrov"@"localhost" til "petr"@"127.0.0.1";

Og til slutt, slett kontoen:

Slipp bruker "petr"@"127.0.0.1";

La oss gå videre fra brukere til databaser; i det enkleste tilfellet, for å opprette en ny database, er kommandoen nok:

Opprett database petrov_newdb;

Dette vil opprette en database med standard kodesett og sammenligningskoding. Hvis DBMS-serveren ikke ble konfigurert separat, vil denne kodingen mest sannsynlig være det latin1_svensk_ci, som i noen tilfeller kan forårsake problemer, om ikke nå, så i fremtiden, så det er en god tommelfingerregel å eksplisitt angi kodingen når du oppretter databasen. For UTF-8 ville det vært slik:

Opprett database petrov_newdb standard tegnsett utf8 collate utf8_general_ci;

For Windows-1251:

Opprett database petrov_newdb standard tegnsett cp1251 sortere cp1251_general_ci;

For å fjerne databasen, bruk:

Slipp databasen petrov_newdb;

Sjekke, optimalisere, fikse feil i MySQL-databaser

Ettersom MySQL fungerer aktivt, kan databaser bli fragmenterte og kan inneholde feil i tabelldata. Vi snakker ikke nå om alvorlige feil; slike situasjoner bør vurderes individuelt, men om de enkleste feilene som med hell kan elimineres ved hjelp av selve DBMS. For å sjekke, reparere og optimalisere er det praktisk å bruke mysqlcheck-verktøyet.

For å sjekke databasen gjør du hvor andrey_drupal8- databasenavn:

Mysqlcheck -u root -p --sjekk andrey_drupal8

Alle databaser kan sjekkes samtidig med kommandoen:

Mysqlcheck -u root -p --check --all-databases

Og siden hele utgangen mest sannsynlig ikke vil passe på skjermen, er det fornuftig å omdirigere den til kommandoen mindre:

Mysqlcheck -u root -p --sjekk --alle-databaser | mindre

noter det mindre lar deg rulle utgangen både ned og opp ved hjelp av pilene, trykk for å avslutte q.

Hvis det ble funnet feil i noen av databasene, bør du prøve å rette dem, for å gjøre dette, angi:

Mysqlcheck -u root -p --auto-reparer andrey_drupal8

For å optimalisere, bruk tasten - -optimalisere, kan du optimalisere en enkelt database eller flere, for å gjøre dette, liste dem etter nøkkelen --databaser:

Mysqlcheck -u root -p --optimize --databaser andrey_drupal8 petrov_newdb

og alt på en gang:

Mysqlcheck -u root -p --optimize --all-databases

Laster opp og laster MySQL-databasedumper

En annen vanlig oppgave når du administrerer en hvilken som helst DBMS, databasedumper brukes både for sikkerhetskopiering og for å overføre eller lage kopier. Hvis sikkerhetskopiering er en automatisert prosess, må opprettelse av kopier for overføring til en annen server eller før noen vesentlige inngrep i databasestrukturen gjøres manuelt.

Og hvis det kommer til store databaser, så her phpMyAdmin en dårlig hjelper, det påvirker utførelsestiden for skript, størrelsen på den nedlastede filen, tilgjengelig minne, etc. Og selv om du fortsatt kan laste opp en stor dump ved å bruke den, kan det hende du ikke kan laste den opp igjen.

La oss starte med å lage dumps; verktøyet brukes til disse formålene mysqldump, hvis syntaks følger syntaksen mysqlcheck. For å laste ned dumpen, bruk kommandoen:

Mysqldump -u root -p andrey_drupal8 > ~/drupal8.sql

For å laste ut flere databaser samtidig, bruk nøkkelen --databaser eller --alle-databaser for å lage en dump av alle databaser samtidig. Utdataene fra kommandoen skal sendes til en fil og angi plasseringen, i vårt tilfelle er dette filen drupal8.sql i hjemmekatalogen din. Du kan også sende utdataene til arkiveren og motta arkivet umiddelbart:

Mysqldump -u root -p andrey_drupal8 | gzip > ~/drupal8.sql.gz

Generelt anbefaler vi ikke å bruke én dump for flere databaser samtidig; det beste alternativet vil være sin egen dump for hver database, samtidig med en nøkkel --alle-databaser berettiget i tilfeller hvor du raskt må ta en sikkerhetskopi av hele serveren, for eksempel ved oppdatering eller reinstallering av et DBMS, slik at du raskt kan gjenopprette informasjon hvis noe går galt.

For å gjenopprette databasen må du sende dumpen til inngangen til mysql-verktøyet; for enkeltdumper bør du alltid spesifisere måldatabasen, for eksempel:

Mysql -u root -p andrey_drupal8< ~/drupal8.sql

Destinasjonen trenger ikke nødvendigvis å være kildedatabasen, men vær oppmerksom på at hvis databasen allerede eksisterer, vil alt innholdet erstattes av innholdet i dumpen.

For dumps som inneholder mer enn én database, spesifiser du:

Mysql -u root -s< ~/all.sql

I dette tilfellet vil hver database lastes inn i sin egen kilde; hvis kildedatabasen ikke eksisterer, vil den bli opprettet.

Som du kan se, opprettes og gjenopprettes dumper ved hjelp av kommandolinjen bokstavelig talt på én linje og er mye enklere og raskere enn å bruke phpMyAdmin eller lignende verktøy.

Gjenopprette et glemt MySQL root-passord

En annen veldig populær oppgave. La oss si med en gang at det er umulig å gjenopprette MySQL-superbrukerpassordet, som enhver annen bruker, men du kan endre det. For å gjøre dette må du ha superbrukerrettigheter til operativsystemet. Først, la oss stoppe DBMS-tjenesten:

Tjenesten mysql stopp

Deretter kjører vi den i sikker modus, og hopper over privilegietabellene:

Mysqld_safe --hopp over-grant-tabeller &

Vær oppmerksom på at etter å ha utført denne kommandoen, vil kommandolinjemeldingen forsvinne og bare etterlate en blinkende markør. Vi skriver direkte der:

Mysql -u rot

og vi befinner oss i mysql-miljøet med root-rettigheter uten å skrive inn et passord.

Det virker for oss som om mange allerede har gjettet hva de skal gjøre videre, men lag et passord det vil ikke fungere i denne modusen, så du må gå en annen vei. Husk at informasjon om brukere lagres i en tabell bruker tjenestedatabase mysql. Deretter kjører vi følgende spørring:

Oppdater mysql.user sett passord = passord ("nytt passord") der bruker = rot";

Viktig! I nye versjoner av MySQL, i stedet for en kolonne passord tabeller bruker kolonne brukes autentiseringsstreng, Så istedenfor lag et passord skal angis sett autentiseringsstreng.

Denne forespørselen vil angi et nytt passord Nytt passord for alle rader i en kolonne bruker som er oppført rot.

La oss oppdatere rettighetsbufferen:

Skyll privilegier;

La oss gå ut av modusen:

La oss stoppe tjenesten og starte den i normal modus:

Tjenesten mysql stopp
tjeneste mysql start

Vi håper at etter å ha lest denne artikkelen vil du tilegne deg innledende ferdigheter i å jobbe med MySQL fra kommandolinjen og vil være i stand til å føle deg trygg selv når phpMyAdmin ikke er tilgjengelig, og kanskje til og med sette pris på bekvemmeligheten av konsollkommandoer og vil ha mindre sannsynlighet for å gå inn panelet, og foretrekker å administrere serveren direkte.

Denne kommandoen vil starte mysql-demonen i bakgrunnen. Windows 95/98 støtter ikke kjøring av mysqld som en tjeneste. På Windows 2000 kjører mysql-demonen som en tjeneste.

Du kan kjøre winmysqladmin.exe, i dette tilfellet er alle innstillinger oppført i my.ini-filen

Når du starter mysqld, kan du spesifisere følgende alternativer:

B, --basedir=

Banen til katalogen der mysql er installert

H, --datadir

Banen til katalogen der databasene er lagret

L, --log=

Transaksjonsloggnavn

L, --språk=

Standardspråk (vanligvis engelsk)

P, --port=

Tilkoblingsport

Hopp over-stipend-tabeller

Ignorer rettighetstabeller. Dette gir alle FULL tilgang til alle bord. Standardbrukere bør ikke gis tillatelse til å kjøre mysqld

Hopp over-navn-løs

Lar deg bare gi tilgang til de verter hvis IP-adresser er oppført i rettighetstabellene. Brukes for høyere beskyttelsesnivå

Hopp over nettverksbygging

Bruk kun tilkoblinger gjennom det lokale vertsgrensesnittet

Vis versjonsinformasjon

Tilstedeværelsen av et trafikklysikon med en aktiv grønn farge i statuslinjen indikerer at serveren kjører (fig. 9).

Ris. 9. winmysqladmin-applikasjonen kjører

Hvis den røde fargen er aktiv, må du starte serveren, som vist i fig. 10 ved å klikke på ikonet med høyre museknapp.

Ris. 10. Aktivering av MySQL-serveren

Nå kan du prøve å logge på serveren. Hvis du har tenkt å administrere serveren via konsollen, må du bruke kommandoen mysql. I utgangspunktet er det en enkelt bruker som får påloggingsrettigheter - rot som ikke har passord. Det første du må gjøre er å logge på som rot registrere en ny bruker og angi et passord for ham. Team mysql kan bruke følgende alternativer:

Merk. Mysqld- og mysql-kommandoene har noen andre alternativer, men de er ikke av stor interesse for øyeblikket.

Oppstart fra en DOS-sesjon utføres som vist nedenfor (i dette tilfellet opprettes en tilkobling til MySQL-databasen - Fig. 11,12).

Ris. 11. Start MYSQL-konsollen

Ris. 12. Vellykket lansering av konsollen

Hvis du mottar dette, betyr det at du har logget på mysql-konsollen, som brukes til å administrere serveren. Visning av listen over databaser tilgjengelig på serveren utføres med kommandoen SHOW DATABASES.

Team BRUKMYSQL; velg gjeldende database, der MYSQL er navnet på databasen.

Når du kobler til en server med mysql, må du vanligvis skrive inn et MySQL-brukernavn og i de fleste tilfeller et passord. Hvis serveren kjører på en annen datamaskin du logget på fra, må du også spesifisere vertsnavnet. Du kan finne ut tilkoblingsparametrene (nemlig det tilsvarende vertsnavnet, brukeren og passordet) fra administratoren. Etter å ha mottatt de riktige parameterne, kan du koble til serveren som følger:

shell> mysql -h vert -u bruker -p

Oppgi passord: ********

Symbolene ******** indikerer passordet ditt; skriv det inn når mysql viser skriv inn passord-ledeteksten: Shell er et DOS-skall.

Hvis alt fungerer, skal informasjonen og kommandolinjeetiketten mysql> vises på skjermen, som vist i fig. 4.

I noen MySQL-installasjoner er det mulig å koble til en server som kjører på lokal vert uten å skrive inn et brukernavn (anonym bruker). Hvis systemet ditt er konfigurert på denne måten, kan du koble til serveren ved å starte mysql uten parametere:

Når tilkoblingen er opprettet, kan du når som helst koble fra serveren ved å skrive QUIT-kommandoen på mysql>-kommandolinjen:

De fleste eksemplene nedenfor er bygget med antagelsen om at en tilkobling til serveren allerede er etablert. Dette kan sees fra tilstedeværelsen av mysql> kommandolinjen i dem.

Disse operasjonene kan utføres ved hjelp av spesialisert programvare, for eksempel MySQL-Front, som også har en mekanisme som sikrer at brukere gis visse rettigheter (se fig. 13, 14).

Ris. 13. Start MySQL-fronten

Ris. 14. Redigere brukerrettigheter


Mysqld-serveren kan startes og betjenes av enhver bruker. For å konfigurere mysqld til å kjøre under Unix-brukeren brukernavn, må du gjøre følgende:

    Hvis serveren kjører, stopp den (bruk mysqladmin avslutning).

    Endre katalogene og databasefilene slik at brukernavn har rettigheter til å lese og skrive filer i disse katalogene (dette må kanskje gjøres fra Unix-rotkontoen):

    Shell> chown -R brukernavn /path/to/mysql/datadir

    Hvis det er symbolske lenker mellom katalogene eller filene i MySQL-datakatalogen, må du også følge disse koblingene og endre katalogene og filene de peker til. chown -R håndterer kanskje ikke symbolske lenker.

    Kjør serveren som brukernavn eller, hvis du har MySQL 3.22 eller høyere, kjør mysqld som root Unix-konto og bruk --user=brukernavn-alternativet. mysqld vil bytte til å kjøre i sammenheng med Unix-brukeren brukernavn før den begynner å betjene tilkoblingsforespørsler.

    For å starte serveren som en gitt bruker automatisk når systemet starter opp, legg til linjebrukeren, som indikerer brukernavnet, i /etc/my.cnf options filgruppen eller my.cnf options filen fra serverdatakatalogen. For eksempel:

    Bruker=brukernavn

På dette tidspunktet skal mysqld-prosessen kjøre problemfritt under Unix-brukernavnet. Innholdet i rettighetstabellene endres imidlertid ikke. Som standard (umiddelbart etter utføring av mysql_install_db-rettighetstabellinstallasjonsskriptet), er MySQL-brukerroten den eneste brukeren med rettigheter til å få tilgang til mysql-databasen, samt til å opprette og slette databaser. Hvis du ikke har endret disse tillatelsene, er de fortsatt gyldige. Innlogging som en annen Unix-bruker enn root hindrer deg ikke i å få tilgang til MySQL som MySQL-rotbruker; bare gi klientprogrammet rotalternativet -u.

Merk at du arbeider med MySQL som MySQL-brukerrot ved å spesifisere -u root på kommandolinjen har ingenting til felles kjører MySQL under Unix-brukerroten, eller under en hvilken som helst Unix-bruker i det hele tatt. MySQL-brukernavn og tilgangsprivilegier er ikke relatert til Unix-brukernavn. Den eneste forbindelsen med Unix-brukernavn er at hvis -u-alternativet ikke er spesifisert når klientprogrammet startes, vil klienten forsøke å koble til ved å bruke Unix-kontonavnet som MySQL-brukernavn.

Hvis Unix-serveren ikke er veldig godt beskyttet eller ikke trenger økte sikkerhetstiltak, bør du i det minste sette et passord for MySQL-rootbrukeren i privilegietabellene. Ellers kan enhver bruker med en konto på denne maskinen kjøre mysql -u root db_name og gjøre hva de vil i MySQL.


Vennene mine stiller meg ofte visse spørsmål om administrasjon, og jeg tenkte, hvorfor ikke, i stedet for å forklare det samme 100 ganger, skrive slike artikkelnotater på nettstedet? I tillegg er dette en utmerket mulighet, om nødvendig, til å bruke et slikt notat selv, fordi du selv vet at noen ganger er det ikke mulig å holde alt i hodet og på en eller annen måte noen ganger må du gå til en oppslagsbok, så la en av delene av denne siden bli en slik bok. I dag skal vi snakke om hvordan du jobber med MySQL DBMS fra kommandolinjen, ja, noen vil si - "Hvilken? Tross alt er det phpMyAdmin,” svarer jeg - hvorfor kaste bort dyrebare serverressurser på å installere all slags dritt som WebMin, phpMyAdmin, etc., hvis det samme enkelt kan gjøres med pålitelige, velprøvde verktøy. Å sette opp fra en terminal via en SSH-tunnel er vårt valg!

Vel, la oss komme i gang. Vi kobler til serveren via SSH, for eksempel gjennom den velkjente PuTTY (A Free Telnet/SSH Client). La oss nå gå videre til beskrivelsen av kommandoene.

Logg på MySQL-serveren med mysql-programmet:

mysql -u root -h localhost -s

Alternativet -u spesifiserer brukeren som skal logges på. Alternativet -h spesifiserer verten. Dette er vanligvis localhost hvis du setter opp en ikke-ekstern server. Til slutt, -p forteller mysql-klientprogrammet at et passord vil bli oppgitt for å få tilgang til databasen. Legg merke til mysql>-ledeteksten. Det er her du skriver inn alle kommandoene dine. Nå som vi er i mysql-miljøet som root-bruker, kan vi begynne å sette opp databasen.

Vi logget på og mysql-prompten dukket opp på skjermen. Først, la oss ta en titt på listen over eksisterende databaser. For å gjøre dette, skriv inn kommandoen SHOW DATABASES.

Svaret gjør det klart at kommandoen ble utført uten noen feil. I dette tilfellet er en linje endret. Dette refererer til mysql-hoveddatabasen som inneholder en liste over alle databaser. Men du trenger ikke bekymre deg for mye om små detaljer. Det siste tallet angir utførelsestiden for spørringen. Vi kan bekrefte at databasen er opprettet ved å kjøre kommandoen SHOW DATABASES på nytt.

For å begynne å lage tabeller i den nye testdatabasen, må vi sette den som gjeldende. For å gjøre dette, bruk USE-kommandoen. Parameteren til denne kommandoen spesifiserer navnet på databasen som må gjøres gjeldende. Du kan også installere gjeldende database på kommandolinjen ved å spesifisere navnet etter parameteren -D. La oss gå videre og bytte til testdatabasen.
Bytte database:

BRUK test;

Privilegier i MySQL

Gi privilegier av et team STIPEND.
Privilegier bestemmer en brukers mulighet til å få tilgang til databaser, tabeller... nesten hva som helst. Foreløpig er det bare MySQL-rot-superbrukeren som kan få tilgang til testdatabasen, i henhold til disse tillatelsene. La oss opprette en annen bruker, for eksempel admin, som skal få tilgang til testdatabasen og jobbe med informasjon fra den. Men før vi begynner, la oss ta en titt på det noe forenklede formatet til GRANT-kommandoen.

Merk: GRANT-kommandoen anses som en måte å opprette en bruker på. Senere versjoner av MySQL inneholder imidlertid også funksjonen CREATE_USER, selv om GRANT fortsatt foretrekkes.
Nå trenger vi privilegier som kan tildeles. Ved å bruke alle de ovennevnte, kan du angi følgende privilegier:

Merk Merk: Hvis du bruker MySQL til å kommunisere med en nettapplikasjon, er CREATE, SELECT, INSERT-privilegiene forklart her, samt SLETTE- og OPPDATERING-privilegiene (beskrevet i MySQL-manualen, seksjonen GRANT og REVOKE-syntaks) som er de eneste som vil trolig være nødvendig. Mange gjør den feilen å gi bort alle privilegiene når det egentlig ikke er nødvendig. Sjekk med applikasjonsutviklerne for å se om slike tillatelser faktisk vil forårsake driftsproblemer.

Opprette en administratorbruker:

Så brukere er opprettet; La oss nå teste dem. Først, la oss avslutte mysql ved å skrive quit ved ledeteksten:

Alternativene er forklart i GRANT-kommandodelen. Nå vil vi nekte brukeren enhver form for tilgang. La oss si at vi finner ut at administratorkontoen forårsaker sikkerhetsproblemer. Vi bestemmer oss for å tilbakekalle alle rettigheter. Vi logger inn som root og gjør det nødvendige.
Tilbakekalle tillatelser for administratorbrukeren:

REVOKE ALT PÅ test.* FRA "admin" @"localhost" ;

Merk: I dette tilfellet er brukertilgang enkel, så det er ikke noe problem å tilbakekalle rettigheter til én database. Men generelt vil du sannsynligvis bruke *.* i stedet for test.* for å tilbakekalle brukerens tilgang til alle andre databaser samtidig.

La oss nå ta en titt på hvordan du sletter en konto fullstendig ved å bruke DELETE-kommandoen og se på MySQL-brukertabellen.

Sletting av kontoer med en kommando SLETT.
En MySQL-brukertabell er en liste over brukere og deres informasjon. Sørg for at du er logget inn som root. Bruk hoved MySQL-databasen.

Ved å bruke hoved-mysql-databasen:

Brukertabellen er det du trenger. Den har 30 forskjellige felt og er vanskelig å lese. For å gjøre det lettere å lese bruker vi den tredje formen av SELECT-kommandoen. Feltene du ser etter er vert og bruker.
Finne admin-brukeren i brukertabellen:

Nå som vi har informasjonen, kan vi kvitte oss med admin-brukeren. Dette gjøres med DELETE-kommandoen; her er syntaksen:

Du har kanskje lagt merke til at SLETT-formatet ligner litt på SELECT-formatet. La oss spesifisere brukerfeltet og admin-verdien. Dette vil fjerne oppføringen fra brukertabellen der brukeren er admin, og kontoen vår slettes. La oss gjøre dette:
Fjerning av admin-brukeren:

Kommandoen FLUSH PRIVILEGES er nødvendig for å oppdatere tillatelser.

Det var alt for i dag. Enig, det er enkelt! ;)

Nedenfor er en liste over de mest nyttige og mest brukte kommandoene MySQL med eksempler.

mysql på begynnelsen av linjen betyr at kommandoen utføres etter innlogging MySQL.

Symbolet # eller $ på begynnelsen av linjen betyr at kommandoen utføres fra kommandolinjen.

For å sjekke serverstatusen MYSQL gjøre:

Til FreeBSD:

# tjeneste mysql-server status

V CentOS/RHEL:

# tjeneste mysqld-status

MySQL fra konsollen hvis serveren MySQL er på samme vert:

For å koble til serveren MySQL fra konsollen hvis serveren MySQL er plassert på den eksterne verten db1.example.com:

$ mysql -u brukernavn -p -h db1.example.com

Arbeide med databaser og tabeller - vise, slette, redigere poster. Konsoll

Opprett en database på MySQL server:

Mysql opprette database

Vis en liste over alle databasene på serveren MySQL:

mysql bruk;

Vis alle tabeller i databasen:

Mysql vise tabeller;

Se tabellformatet i databasen:

mysql beskrive ;

Slett database:

Mysql drop database ;

Slett en tabell fra databasen:

Mysql drop table ;

Vis alt tabellinnhold:

Mysql SELECT * FROM ;

Vis kolonner og kolonneinnhold i den valgte tabellen:

Mysql viser kolonner fra ;

Vis rader i en spesifikk tabell som inneholder " whatever ":

Mysql SELECT * FROM WHERE = "hva som helst";

Vis alle poster i en spesifikk tabell som inneholder "Bob" og telefonnummeret "3444444:

Mysql SELECT * FRA HVOR navn = "Bob" OG telefonnummer = "3444444";

Vis alle oppføringer, IKKE som inneholder navnet "Bob" og telefonnummeret "3444444", sortert etter telefonnummerfeltet:

Mysql SELECT * FROM WHERE navn != " Bob " AND phone_number = " 3444444 " bestill etter telefonnummer;

Vis alle oppføringer som begynner med bokstavene "bob" og telefonnummeret "3444444" i en bestemt tabell:

Mysql SELECT * FRA HVOR navn som "Bob %" OG phone_number = "3444444";

Vis alle oppføringer som begynner med bokstavene "bob" og telefonnummeret "3444444", og begrense oppføringene 1 til 5:

Mysql SELECT * FRA HVOR navn som "Bob %" OG phone_number = "3444444" grense 1,5;

Bruke regulære uttrykk ("REGEXP BINARY") for å søke etter poster. For et søk som ikke skiller mellom store og små bokstaver, finner du for eksempel alle poster som begynner med bokstaven A:

Mysql SELECT * FRA HVOR rec RLIKE "^a";

Vis alle unike oppføringer:

Mysql VELG DISTINCT FROM ; mysql SELECT , FROM ORDER BY DESC;

Vis antall rader i tabellen:

Mysql VELG ANTALL(*) FRA ;

Mysql VELG SUM(*) FRA ;

Fjerne en kolonne:

Mysql alter table drop kolonne ;

Legge til en kolonne i databasen:

Mysql endre tabell legg til kolonne varchar(20);

Endre kolonnenavnet:

Mysql endre tabell endring varchar(50);

Lag en kolonne med et unikt navn for å unngå dupliserte navn:

Mysql alter table add unique();

Endre størrelsen på en kolonne:

Mysql endre tabell endre VARCHAR(3);

Fjerne en kolonne fra en tabell:

Mysql alter table drop index ;

Mysql LOAD DATA INFILE " /tmp/filename.csv " replace INTO TABLE FELT TERMINATED BY "," LINES TERMINATED BY "n" (field1,field2,field3);

MySQL-serverbrukere, passord - legge til, endre brukere og passord. Konsoll

Opprette en ny bruker - koble til serveren MySQL som root, bytt til database, legg til bruker, oppdater privilegier:

# mysql -u rot -p mysql bruk mysql; mysql INSERT INTO bruker (Vert, Bruker, Passord) VERDIER("%"," brukernavn ", PASSORD(" passord ")); mysql flush privilegier;

Endre brukerpassordet fra konsollen på den eksterne verten db1.example.org:

# mysqladmin -u brukernavn -h db1.example.org -p passord " nytt-passord "

Endre brukerpassordet fra konsollen MySQL- koble til som root, oppdater passord, oppdater privilegier:

# mysql -u root -p mysql SETT PASSORD FOR " bruker "@" vertsnavn " = PASSORD(" passordher "); mysql flush privilegier;

Gjenopprette/endre passordet til rotserveren MySQL- Stoppe MySQL, start uten rettighetstabeller, koble til som root, angi et nytt passord, avslutt og start på nytt MySQL.

# /etc/init.d/mysql stop # mysqld_safe -skip-grant-tables & # mysql -u root mysql bruk mysql; mysql oppdatering brukersett passord=PASSORD(" nytt rotpassord ") hvor Bruker="root"; mysql ; skyllerettigheter; mysql quit # /etc/init.d/mysql stop # /etc/init.d/mysql start

Angi et root-passord hvis det er et root-passord.

# mysqladmin -u root passord nytt passord

Oppdater root-passord:

# mysqladmin -u root -p gammelt passord nytt passord

Sette rettigheten til å koble til serveren fra vertslokalverten med passordet "passwd" - koble til subroot, bytte til databasen, angi privilegier, oppdatere privilegier:

# mysql -u rot -p mysql bruk mysql; mysql gi bruk på *.* til bob @localhost identifisert av " passwd "; mysql flush privilegier;

Angi brukerrettigheter for å bruke databasen - koble til som root, bytte til databasen, angi privilegier, oppdatere privilegier:

# mysql -u rot -p mysql bruk mysql; mysql INSERT INTO db (Vert,Db,Bruker,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VERDIER ("%","databasenavn","brukernavn","Y","Y","Y"," Y", "Y", "N"); mysql flush privilegier;

Mysql gi alle privilegier på databasenavn .* til brukernavn @localhost; mysql flush privilegier;

Oppdatering av informasjon i databasen:

Mysql UPDATE SET Select_priv = "Y",Insert_priv = "Y",Update_priv = "Y" hvor = bruker";

Slette en rad i en tabell:

Mysql DELETE from where = "whatever";

Oppdatering av rettigheter i databasen:

Mysql flush-privilegier;

Sikkerhetskopier - opprette, gjenopprette databaser. Konsoll

Lag en sikkerhetskopi (dump) av alle databaser i alldatabases.sql-filen:

# mysqldump -u root -p passord -opt ; /tmp/alldatabases.sql

Sikkerhetskopier én database til filen databasename.sql:

# mysql dump -u brukernavn -p passord -databaser databasenavn ; /tmp/databasenavn.sql

Sikkerhetskopier én tabell til filen databasename.tablename.sql:

# mysql dump -c -u brukernavn -p passord databasenavn tabellnavn ; /tmp/databasenavn.tabellnavn.sql

Gjenopprette en database (eller tabell) fra en sikkerhetskopi:

# mysql -u brukernavn -p passord databasenavn< /tmp/databasename.sql

Oppretting av databasetabeller. Konsoll

kolonnenavn er angitt med små bokstaver;
STORE bokstaver - typer og attributter til kolonner;
i (parentes) - verdien av kolonnetypen.

Lag en tabell, eksempel 1:

mysql CREATE TABLE (fornavn VARCHAR(20), mellominitial VARCHAR(3), etternavn VARCHAR(35), suffiks VARCHAR(3), kontorid VARCHAR(10), brukernavn VARCHAR(15), brukernavn VARCHAR(8), e-post VARCHAR(35) ), telefon VARCHAR(25), grupper VARCHAR(15), datostempel DATO, tidsstempel TID, pgpemail VARCHAR(255));

Lag en tabell, eksempel 2:

Mysql create table (personid INT(50) NOT NULL AUTO_INTCREMENT PRIMARY KEY, fornavn VARCHAR(35), mellomnavn VARCHAR(50), etternavn VARCHAR(50) standard "bato");