Å komme inn
Alle datahemmeligheter for nybegynnere og profesjonelle
  • Beskyttelse av informasjon og personopplysninger
  • Til russiske kunder fra Microsoft Azure-skyen
  • Fotoutstilling: tass åpner arkiv
  • Last ned CSS v34 fra TheAmonDit Last ned cs-kilde med skinn for våpen
  • Last ned minecraft for Android versjon 1
  • Installere og oppdatere Huawei og Honor-firmware
  • Hvordan jobbe med mysql på kommandolinjen. Manuell installasjon av MySQL på Windows. Kobler til MySQL-serveren i konsollen

    Hvordan jobbe med mysql på kommandolinjen.  Manuell installasjon av MySQL på Windows.  Kobler til MySQL-serveren i konsollen

    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 utenfor rammen 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 eksplisitt 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 ville være sin egen dump for hver database, samtidig med å bruke en nøkkel --alle-databaser berettiget i tilfeller der 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 dersom 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, oppretting og gjenoppretting av dumps ved hjelp av kommandolinjen skjer 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.

    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, sette 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");

    God dag, kollegaer :)

    Ja, akkurat kolleger, for for en ren dødelig er MySQL-kommandolinjen (eller MySQL Shell, som utviklere også liker å kalle det), så vel som å jobbe med MySQL i konsollen, neppe nyttig.

    For at dette emnet skal være interessant, må du som et minimum være en nybegynner systemadministrator som i prinsippet ikke bruker phpMyAdmin og andre grensesnitt.

    Personlig foretrekker jeg selv å bruke phpMyAdmin som den viktigste for å jobbe med MySQL, fordi... Jeg er en visuell person av natur. Noen ganger i praksis er det imidlertid situasjoner hvor kunnskap om MySQL-kommandolinjen og muligheten til å jobbe med MySQL i serverkonsollen ganske enkelt er nødvendig.

    Jeg har for øyeblikket tre av dem:

    1. Første gang jeg møtte å jobbe i MySQL-konsollen var da jeg trengte å importere en stor databasedump. Det ble ikke lastet helt gjennom phpMyAdmin, fordi... falt av et sted i midten på grunn av tidsavbrudd, til tross for endring av innstillingene for operasjonens utførelsestid og størrelsen på de nedlastede filene. I prinsippet var det mulig å velge de nødvendige verdiene, men det syntes jeg var en for lang prosess.
    2. Neste gang jeg skulle jobbe med MySQL via kommandolinjen var å deaktivere sjekk av fremmednøkler, da jeg trengte å slette data fra en tabell som var koblet til andre ved hjelp av nøkler. Jeg kunne bare ikke finne hvordan jeg gjør dette i phpMyAdmin.
    3. Seriøse selskaper bruker bare konsollen for å jobbe med MySQL uten noen phpMyAdmins. Jeg vet ikke nøyaktig hvorfor, men kunnskapsrike folk sa at det hadde noe med sikkerhet å gjøre. Som et resultat måtte alle jobbe med MySQL-kommandolinjen, inkludert meg :)

    Men igjen, å jobbe med MySQL i konsollen og kommandolinjen er ganske egnet for daglig bruk. Alle kjente visuelle programmer for arbeid med databaser fungerer fortsatt basert på MySQL-konsollkommandoer. Derfor, som du vil :)

    Kjører konsollen på et annet operativsystem

    Siden jeg skal demonstrere hvordan du bruker MySQL-kommandolinjen i serverkonsollen, vil det være en god idé å begynne med den først.

    Handlingen er enkel, kjent for mange, for hvilken kunnskap om "hurtigtastene" er nok.

    Starter konsollen på Windows:

    • Win+R for å åpne Windows-ledeteksten med administratorrettigheter;
    • Skriv inn kommandoen cmd
    • Klikk Tast inn på tastaturet

    Lansering av konsollen i Linux-distribusjoner (terminal): i Ubuntu, som jeg jobbet med, er systemtastkombinasjonen nok Ctrl+Alt+T. Jeg kan ikke si noe om andre Linux-baserte operativsystemer.

    Starter konsollen på MacOS: Jeg har ikke gjort dette selv, fordi... Jeg har ikke skaffet meg en Mac ennå, og det er usannsynlig at jeg får en fordi jeg ikke trenger den, men så langt jeg kunne finne ut, er det ingen "hurtigtaster" for å ringe en terminal i dette operativsystemet. Så hvis du er bruker av Apple-produkter, så start konsollen gjennom OS-grensesnittet, heldigvis er det mange manualer på Internett.

    Det er litt pinlig å publisere slik informasjon i tilfelle en profesjonell systemadministrator med lang erfaring tilfeldigvis snubler over denne artikkelen, fordi han vil tenke: "Forfatteren anser leserne sine for å være programmerere, men samtidig lærer han hvordan man lanserer en konsoll... En slags psyko :-)."

    Ja, ganske logisk :) Men jeg tar bare i betraktning situasjonen som, sammen med profesjonelle utviklere, også nybegynnere kan komme hit. Det er derfor jeg prøver å gjøre informasjonen komplett og tilgjengelig for alle kategorier av brukere, som jeg allerede har nevnt.

    Grunnleggende MySQL-konsollkommandoer

    Så først av alt må vi få tilgang til MySQL-kommandolinjen i konsollen. For å gjøre dette, åpne serverkonsollen, og hvis du har MySQL installert globalt som en tjeneste, skriver vi følgende for å "sjekke tilkoblingen":

    Mysql -V

    Konsollkommando mysql lar oss starte verktøyet med samme navn, som er en MySQL-kommandolinje.

    Dette vil tillate oss å finne ut hvilken versjon av MySQL som er installert på datamaskinen og sørge for at den i det hele tatt er installert som en tjeneste. Hvis dette er tilfelle, vil du se noe sånt som følgende tekst i konsollen: .

    Ja, jeg er ikke en "gal koder", fordi jeg bruker Windows :) Men det er ikke poenget. På Unix-systemer vil prosedyren være den samme.

    Hvis plutselig MySQL ikke er installert globalt på datamaskinen din, eller du trenger å jobbe med flere versjoner av MySQL, der det bare er kataloger med MySQL-filer og biblioteker, vil det å starte MySQL gjennom konsollen se slik ut.

    I konsollen går du til katalogen der den kjørbare MySQL-filen ligger (på Windows er det i det minste mysql.exe) med følgende kommando:

    Cd C:\OpenServer\modules\database\MySQL-5.7-x64\bin

    Naturligvis kan veien din til distribusjonen være annerledes. Som et eksempel bestemte jeg meg for å kjøre en av versjonene av MySQL som følger med OpenServer.

    Og vi lanserer MySQL, og sjekker versjonen underveis:

    Mysql.exe -V

    Som et resultat burde en melding som ligner på det første tilfellet ha blitt vist i konsollen mysql Ver 14.14 Distrib 5.7.16, for Win64 (x86_64).

    Det er det, vi har klart å starte MySQL fra kommandolinjen gjennom serverkonsollen, nå kobler vi direkte til MySQL-serveren.

    Kobler til MySQL-serveren i konsollen

    MySQL-serveren er kanskje ikke nødvendigvis på samme maskin som du prøver å få tilgang til den i konsollen. Derfor, for å gjøre tilkobling til en ekstern MySQL-server via konsollen mulig, har mysql-verktøyet mange parametere som du kan angi de nødvendige innstillingene med.

    For å starte MySQL-kommandolinjen i konsollen, trenger vi bare å skrive følgende i serverkonsollen:

    Men i dette tilfellet vil du få følgende feilmelding: FEIL 1045 (28000): Tilgang nektet for brukeren 'ODBC'@'localhost' (bruker passord: NEI). Slik ser feilmeldingen ut på Windows. Hvis du bruker Linux, vil det i stedet for ODBC være navnet på systembrukeren din som du utfører handlinger under i systemet.

    Alt dette er fordi konsollen som standard, når den kobles til en MySQL-server, bruker ODBC-brukeren på Windows uten passord og systembrukeren på Linux med samme passord. Standardverten er localhost, dvs. Denne brukeren kan bare koble til fra den lokale maskinen.

    Derfor har du to alternativer: enten bruke en annen bruker til å logge på MySQL-kommandolinjen, eller opprette en MySQL-bruker med den nødvendige kontoen. Men for den andre metoden kan vi fortsatt ikke klare oss uten den første :) Derfor kobler vi først til MySQL-serveren under en standardbruker rot, som opprettes når du installerer MySQL på en datamaskin og som tilgang fra localhost er tillatt som standard:

    Mysql -u root -s

    Når du blir bedt om å skrive inn et passord, trykker du ganske enkelt Enter (hvis du ikke skrev inn det, selvfølgelig, da du installerte MySQL). Du vil da bli koblet til MySQL-serveren, tildelt en tilkoblings-ID og gitt tilgang til MySQL-kommandolinjen.

    Hvis du vil koble til en MySQL-server som har et spesifikt vertsnavn eller IP eller vil logge på som en annen bruker, bruk følgende kommandoformat:

    Mysql -u brukernavn -p brukerpassord -h MySQL_server_host_or_IP

    I stedet for kyrilliske tegn med understrek, må du selvfølgelig skrive inn dataene dine med latinske tegn. Forresten, hvis du ønsker det, kan du skrive denne kommandoen i et litt annet format:

    Mysql --bruker=brukernavn --passord=brukerpassord --vert=vert_eller_IP_av_minSQL_server

    Hvis du av en eller annen grunn ikke vil at MySQL-tilkoblingspassordet ditt skal vises i konsollen (som faktisk er riktig), kan du bruke følgende kommando:

    Mysql -u brukernavn -h MySQL_server_vert_eller_IP -p

    Siden passordet ikke er eksplisitt spesifisert, vil du bli bedt om å angi det i neste trinn. Dessuten vil ikke tegnene du skriver inn vises selv i form av stjerner (jokertegn), i stedet vil det bare være en tom linje.

    I tillegg til de spesifiserte tilkoblingsinnstillingene, er det mulig å bruke følgende parametere, hvis verdier vil bli spesifisert på en måte som ligner på de som er oppført ovenfor:

    1. --port eller -P - for å spesifisere porten for tilkobling til MySQL-serveren;
    2. —protocol — protokollen som tilkoblingen skal gjøres gjennom (mulige alternativer: TCP for Windows og Linux, SOCKET for Linux, PIPE og MEMORY for Windows);
    3. --socket eller -S - denne parameteren er nyttig hvis du ønsker å koble til via sockets, derfor vil verdien av parameteren være socket;
    4. --pipe eller -W - parameteren er nødvendig hvis du vil bruke navngitte "pipelines" eller "pipes" for tilkoblinger;
    5. --shared-memory-base-name - denne parameteren vil være nyttig for MEMORY-tilkoblinger via delt minne på Windows;

    Det er klart at listen over alle parametere for å koble til MySQL-serveren ikke er begrenset til dette. I virkeligheten er det mange flere av dem.

    Hvis standardalternativet som angir verten, brukeren og passordet av en eller annen grunn ikke passer deg, vil følgende informasjon være nyttig for deg for å finne ut hele listen over tilkoblingsparametere - https://dev.mysql.com/doc/ refman/5.7/en/ connecting.html

    Hvordan lage en database i MySQL-konsollen

    Etter at vi har koblet til MySQL-serveren og startet MySQL-kommandolinjen, er det på tide å begynne livssyklusen til nettsteddatabasen vår, som starter med opprettelsen. For å opprette en MySQL-database via kommandolinjen, må du skrive inn følgende kommando:

    CREATE DATABASE databasenavn;

    Den samme handlingen kan gjøres ved å bruke et spesielt MySQL-verktøy mysqladmin. Den kjører isolert fra MySQL-kommandolinjen, dvs. For å bruke den, må du avslutte den eller åpne en ny serverkonsoll.

    Og ring deretter følgende kommando:

    mysqladmin opprette databasenavn;

    Forresten, ved å bruke mysqladmin-verktøyet kan du ikke bare opprette og slette databaser uten å logge på MySQL-konsollen, men også betjene serverkonfigurasjonen, MySQL-prosesser, administrere replikasjoner, ping-servere og gjøre mange andre interessante ting.

    Hvordan opprette en MySQL-bruker på kommandolinjen

    Ikke ofte, men noen ganger må du opprette en ny MySQL-bruker. Dessuten i konsollmodus.

    På MySQL-kommandolinjen gjøres dette som følger:

    OPPRETT BRUKER "brukernavn"@"vert_eller_maskin_IP" IDENTIFISERT AV "brukerpassord";

    Brukeren er opprettet. Parameter vert_eller_IP_maskin betyr at når du oppretter en bruker, må du spesifisere IP-en som han kan koble til serveren fra, eller vertsnavnet (domenenavnet til arbeidsmaskinen på nettverket er egnet).

    Forresten, når du spesifiserer verten for å koble til MySQL-serveren, kan du bruke prosentsymbolet - % , som betyr at den opprettede brukeren kan koble til MySQL-serveren fra hvilken som helst IP-adresse eller vert.

    Det bør tas i betraktning at i dette tilfellet er localhost ikke inkludert i listen over adresser spesifisert med %, fordi localhost angir en tilkobling via en UNIX-socket i stedet for standard TCP/IP. De. Hvis den opprettede MySQL-brukeren vil koble til serveren uten å bruke sockets, men ved å bruke en annen protokoll spesifisert når han kobler til MySQL-serveren i konsollen, må han opprette to brukerkontoer:

    OPPRETT BRUKER "brukernavn"@"%" IDENTIFISERT AV "passord"; OPPRETT BRUKER "brukernavn"@"localhost" IDENTIFISERT AV "passord";

    Vi har funnet ut hvordan du oppretter en MySQL-bruker i konsollen. La oss nå sette brukerrettighetene til å utføre alle handlinger med vår nyopprettede database med følgende kommando:

    GI ALLE PRIVILEGIER PÅ databasenavn.* TIL "brukernavn"@"vert_eller_maskin_IP";

    Alternativ ALLE, som du forstår, indikerer bare at brukeren har tillatelse til alle handlinger med en bestemt database. Komplett liste over rettigheter som kan gis til brukere ved hjelp av kommandoen STIPEND, kan finnes her (selv om beskrivelsen av parameterne er på engelsk) - https://dev.mysql.com/doc/refman/5.7/en/grant.html#grant-privileges

    Forresten, du kan bruke flere privilegieparametere, spesifisere dem når du ringer kommandoen, atskilt med komma.

    Hvis du ønsker å opprette en superbruker, dvs. har globale privilegier til å utføre ulike handlinger med alle databaser på serveren, bruk deretter følgende kommandokall:

    GIV ALLE PÅ *.* TIL "brukernavn"@"vert_eller_maskin_IP";

    Forresten, det ville være en god idé å tømme MySQL-serverbufferen etter å ha angitt privilegier. Hvis du endrer dem, så ikke glem å gjøre dette ved å ringe følgende kommando:

    SPILLE PRIVILEGIER;

    Og hvis du vil endre brukerrettigheter, bruk først følgende kommando for å tilbakestille alle rettigheter:

    OPPHAV ALLE PRIVILEGIER PÅ *.* FRA "brukernavn"@"vert_eller_maskin_IP";

    Og installer deretter de han trenger å bruke STIPEND, som beskrevet tidligere.

    Hvis du i fremtiden må endre MySQL-brukerpassordet, for å gjøre dette, kjør bare følgende kommandoer i MySQL Shell:

    ANGI PASSORD FOR "brukernavn"@"vert_eller_maskin_IP" = PASSORD("nytt_passord"); SPILLE PRIVILEGIER;

    Tilbakestilling av MySQL-serverrettighetsbufferen er nødvendig for samme formål som når du endrer rettigheter - uten denne handlingen kan det hende at endring av MySQL-brukerpassordet ikke telles, så ikke vær lat med å bruke det :)

    Internett er forresten fullt av eksempler på bruk av følgende kommando for å tilbakestille en brukers MySQL-passord:

    OPPDATERING mysql.user SET Password=PASSORD("passord") WHERE User="brukernavn";

    Men dette alternativet fungerte ikke for meg på MySQL 5.7, noe som gir en feilmelding FEIL 1054 (42S22): Ukjent kolonne 'Passord' i 'feltliste'. Årsaken viste seg å være fraværet av passordfeltet i mysql.user-tabellen.

    Fra dette kan vi anta at dette alternativet bare fungerer for eldre versjoner av MySQL, der dette feltet fantes i brukertabellen. Derfor, for å være sikker, bruk mitt første alternativ, med mindre du selvfølgelig er tvunget til å jobbe med antidiluviansk programvare uten muligheten til å oppdatere versjoner :)

    Dette fullfører opprettelsen av en ny MySQL-bruker og gjennomgang av handlinger med rettigheter og passord. La oss gå videre.

    Velge en database når du arbeider med MySQL via kommandolinjen

    Nå, etter å ha opprettet en bruker i MySQL Shell og tildelt ham rettigheter til å jobbe med databasen, må vi velge nettopp denne databasen slik at vi kan operere med selve databasen og dataene som er lagret i den.

    For å gjøre dette, bruk følgende kommando i MySQL-konsollen:

    BRUK databasenavn;

    Hvis alt gikk bra, vil en melding vises i konsollen Database endret, som vil signalisere at vi har logget inn i MySQL-databasen via konsollen. Forresten, når du kobler til en MySQL-server, kan du i utgangspunktet spesifisere databasen du må jobbe med. For å gjøre dette, må du skrive inn følgende kommando i serverkonsollen:

    Mysql --bruker=brukernavn --passord=brukerpassord --vert=MinSQL_server_vert_eller_IP --database=databasenavn

    Eller det samme, bare spør etter MySQL-brukerpassordet:

    mysql -u brukernavn -h vert_eller_IP_MySQL_server_databasenavn -p

    Det er alt. Jeg tror du ikke vil ha noen problemer med å koble til MySQL-databasen via konsollen nå :)

    Arbeide med MySQL-tabeller via MySQL-konsollen

    Så vi opprettet en MySQL-database gjennom konsollen. Nå ville det være fint å lære å jobbe med det i tilfellet når MySQL-kommandolinjen vil være den eneste måten å få tilgang til dataene som er lagret på serveren (som tilfellet var for meg, som jeg snakket om i begynnelsen av artikkel).

    Som du vet, består den av tabeller, inne i hvilke informasjon allerede er lagret i form av poster med flere felt. Derfor, etter hierarkiet for informasjonsplassering, vil vi først lære hvordan du utfører typiske CRUD-operasjoner med tabeller.

    CRUD-operasjoner, hvis noen ikke er i det, er operasjoner for å opprette, lese, oppdatere og slette data fra engelsk. "Opprett, les, oppdater, slett" (du kan trenge dette under intervjuer).

    La meg minne deg på at for å utføre handlinger med tabeller må du først koble til MySQL-databasen ved å bruke kommandoen BRUK.

    Så det første på agendaen vår er kommandoen for å lage en MySQL-tabell i databasen via kommandolinjen, som ser slik ut:

    LAG TABELL tabellnavn (feltnavn_1 felttype_1, feltnavn_2 felttype_2(feltstørrelse_2), INDEX(feltnavn_1), ...);

    Som du forstår, kan det være så mange felt du vil, typene deres kan være forskjellige, så vel som tilstedeværelsen av indekser og nøkler er valgfrie.

    Forresten, hvis du vil kopiere en tabell til en annen database eller bare lage en kopi i den gjeldende, vil følgende kommandoer hjelpe deg:

    LAG TABELL nytt_tabellnavn SOM gammelt_tabellnavn; INSERT new_table_name SELECT * FRA gammelt_tabellnavn;

    Disse kommandoene lar deg kopiere tabellstrukturen og dens data sammen med tabellindekser og utløsere. Hvis du bare trenger data og struktur (navn på felt og deres datatyper), kan du klare deg med å ringe én kommando:

    LAG TABELL nytt_tabellnavn SOM SELECT * FRA gammelt_tabellnavn;

    Den neste operasjonen fra CRUD-blokken er lesing. Når det gjelder tabeller, vil lesing vise strukturen deres. For å gjøre dette, er det følgende fire kommandoer:

    VIS HELE KOLONNER FRA tabellnavn; BESKRIV tabellnavn; FORKLAR tabellnavn; VIS LAG TABELL tabellnavn;

    Den første viser informasjon om feltene i databasetabellen i tabellform til MySQL-konsollen, og indikerer feltnavn, datatype, tilstedeværelse av nøkler, standardverdi, etc. Når du bruker et nøkkelord FULL du kan få utvidet informasjon, inkludert privilegier for hvert felt for gjeldende bruker, kommentarer for hver av dem og kodingsverdien.

    Den andre og tredje kommandoen er ganske enkelt forkortede former for den første kommandoen uten den utvidede informasjonen. Hvorfor var det behov for å lage flere av dem?Jeg kan ikke engang forestille meg... Er det slik at det skulle være noe å spørre om under jobbintervjuer? 🙂

    Den fjerde kommandoen, i tillegg til navn, felttyper og deres standardverdier, lar deg få verdiene til tabellnøkler, tabellmotorer (InnoDB, MyISAM), koding, etc.

    Oppdateringsoperasjonen når det gjelder tabeller representerer en endring i strukturen deres, dvs. ulike handlinger med MySQL-tabellfelt:

    ALTER TABLE tabellnavn DROP COLUMN feltnavn; ALTER TABLE tabellnavn ADD COLUMN feltnavn VARCHAR(20); ALTER TABLE tabellnavn ENDRE gammelt_feltnavn nytt_feltnavn VARCHAR(50); ALTER TABLE tabellnavn MODIFY feltnavn VARCHAR(3);

    Den første kommandoen lar deg slette et spesifikt tabellfelt, den andre lar deg legge til det, den tredje lar deg endre navn på et felt og samtidig endre typen data som er lagret i det, og den fjerde lar deg endre bare datatypen .

    Det samme kan gjøres med tabellindekser som bruker stort sett lignende kommandoer:

    ALTER TABLE tabellnavn LEGG TIL UNIK INDEKS indeksnavn (feltnavn_1, ...); ALTER TABLE tabellnavn endre navn INDEKS gammelt indeksnavn TIL nytt indeksnavn; ALTER TABLE tabellnavn DROP INDEX index_name;

    Følgende kommandoer lar deg legge til, gi nytt navn og fjerne indekser fra MySQL-tabeller via kommandolinjen. For å legge til og fjerne indekser, forresten, er det et annet alternativ for å bruke uavhengige kommandoer, i stedet for å gjøre det gjennom ENDRE TABELL. Derfor, hvis du ønsker det, kan du bruke dem:

    LAG UNIK INDEKS indeksnavn (feltnavn_1, ...) PÅ tabellnavn; DROP INDEX indeksnavn PÅ tabellnavn;

    De gitte kommandoene tilsvarer den første og siste fra forrige blokk. Dessverre er det ingen egen kommando for å gi nytt navn til en indeks. Og for å endre indekstypen, er det dessverre ingen måte i MySQL i det hele tatt. Den eneste løsningen er å slette indeksen og lage den på nytt med ønsket type.

    Vel, endelig har vi nådd den siste operasjonen fra CRUD-blokken - sletting. Å fjerne MySQL-tabeller fra en database er veldig enkelt. Bare kjør følgende kommando i MySQL-konsollen:

    DROP TABLE tabellnavn;

    Noen ganger oppstår det i praksis situasjoner som gjør det umulig å slette en tabell eller endre strukturen. Som regel skyldes dette bruk av fremmednøkler i databasen for å koble tabeller med hverandre. Jeg personlig møtte denne situasjonen mer enn en gang, som jeg snakket om i begynnelsen av artikkelen.

    Derfor, hvis, når du sletter eller oppdaterer en tabellstruktur eller dens data, returnerte MySQL deg en feil med teksten Kan ikke slette eller oppdatere en overordnet rad: en fremmednøkkelbegrensning mislykkes, så vil følgende informasjon være nyttig for deg.

    For å implementere planen vår, må vi midlertidig deaktivere kontrollen for eksistensen av fremmednøkler, utføre den nødvendige operasjonen og deretter aktivere kontrollen igjen, fordi det er virkelig nødvendig og lar deg beskytte mot dataintegritetsbrudd i de fleste tilfeller.

    Faktisk er MySQL fremmednøkler nødvendig for dette formålet.

    Så for å slette data som er forstyrret av fremmednøkler, må du utføre følgende trinn i MySQL-konsollen:

    SET FOREIGN_KEY_CHECKS=0; #required_mysql_command SET FOREIGN_KEY_CHECKS=1;

    Forresten, hvis du vil slette en fremmednøkkel, vil prosedyren være den samme som når du sletter en indeks:

    ALTER TABLE tabellnavn SLIPP UTENLANDSKE NØKKEL fremmednøkkelnavn;

    For å finne ut navnet på MySQL-fremmednøkkelen til en tabell, bruk den allerede kjente MySQL-konsollkommandoen VIS LAG TABELL.

    Arbeide med MySQL-tabelldata via kommandolinjen

    For CRUD-tabeller så vi på operasjoner i MySQL-konsollen. For et fullstendig bilde mangler dette juksearket bare kommandoer for å jobbe med selve dataene som er lagret i databasetabeller. Jeg tror mange kjenner disse kommandoene og har brukt dem i praksis, men jeg vil likevel minne deg på dem igjen.

    CRUD-operasjoner for å jobbe med MySQL-tabelldata vil se slik ut:

    INSERT INTO tabellnavn (felt1, felt2, ...) VERDIER (felt_1 verdi, felt_2 verdi, ...); VELG felt1, felt2, ... FRA tabellnavn; OPPDATERING tabellnavn SET felt1 = felt_1 verdi, felt2 = felt_2 verdi; SLETT FRA tabellnavn WHERE felt1 = felt_1 verdi;

    Kommandoene ovenfor tilsvarer operasjonene for å lage, lese, oppdatere og slette data fra MySQL-databasetabeller. Ved bruk av SELECT og UPDATE er det også mulig å bruke en kvalifiserende WHERE-klausul, som kan brukes til å spesifisere datautvalget på samme måte som beskrevet ved bruk av DELETE.

    Når du henter data fra en database ved hjelp av SELECT, kan du også bruke følgende alternativ for å hente verdiene til alle tabellfeltene:

    VELG * FRA tabellnavn;

    Naturligvis kan disse operasjonene bruke andre operatører i tillegg til WHERE. Det er spesielt mange av dem når man henter data ved hjelp av SELECT: her er det UNION for å kombinere resultatene av flere spørringer, og ulike typer JOIN. Å liste opp alt er veldig langt, og det vil være kjedelig for både meg og deg å lese dette.

    Derfor, la oss bli enige: hvis du vil vite mer om noe, bare skriv om det i kommentarene, så skal jeg prøve å svare deg. Eller andre kunnskapsrike medlemmer av samfunnet vårt vil gjøre det. OK? 😉

    Så vi vil ikke dvele ved denne blokken foreløpig.

    Hvis du trenger å slette alle data fra en tabell, kan du bruke følgende MySQL-kommando:

    TRUNCATE tabellnavn;

    Før du kaller det, som nevnt tidligere, kan det hende du må deaktivere sjekk av fremmednøkkel i tilfelle det er relaterte MySQL-tabeller, som kan forhindre at den nødvendige handlingen utføres.

    Et annet interessant poeng å merke seg her er at denne kommandoen ikke tilbakestiller AUTO_INCREMENT-telleren, som er kjent for å brukes til automatisk å generere en feltverdi uten å måtte stille den manuelt.

    Felt av denne typen brukes oftest til å generere verdier for hovednøkkelfelt-ID, som brukes til å etablere relasjoner mellom data fra forskjellige tabeller.

    Det vil si hvis før du sletter tabelldata ved hjelp av TRUNCATE den maksimale tellerverdien var 1200, så vil den første posten etter denne prosedyren ha en identifikatorverdi på 1201. I prinsippet er det greit. Hvis du har angitt en tilstrekkelig størrelse for dette feltet, vil du ikke stå i fare for å overfylle verdiene snart.

    Men i noen tilfeller, når applikasjonskoden har en slags binding til verdien av et felt, kan denne virkemåten forårsake ulemper.

    For å unngå dette, bruk dette alternativet i stedet for kommandoen ovenfor:

    TRUNCATE TABLE someTable RESTART IDENTITY;

    Dette kommandoanropsalternativet TRUNCATE lar deg tilbakestille felttellerverdien fra AUTO_INCREMENT. Derfor vil feltverdien til den første posten som legges til etter denne slettingen være 1 i stedet for 1201, som i eksemplet ovenfor.

    Slik sletter du en MySQL-database via kommandolinjen

    Livssyklusen for å jobbe med en database går mot slutten og slutter ganske logisk – ved å slette den. For å utføre denne operasjonen i MySQL-konsollen, må du kjøre følgende kommando (i dette tilfellet kan databasen som skal slettes ikke velges av kommandoen BRUK):

    SLETT DATABASE databasenavn;

    Den samme handlingen kan gjøres ved å bruke MySQL mysqladmin-verktøyet, som jeg allerede nevnte i begynnelsen av artikkelen når jeg opprettet en database:

    Mysqladmin slipp databasenavn;

    Når du kaller kommandoen, vises følgende melding i serverkonsollen:

    Å droppe databasen er potensielt en veldig dårlig ting å gjøre.
    Alle data som er lagret i databasen vil bli ødelagt.

    Vil du virkelig droppe databasen 'database_name'

    Kort sagt, dette er en advarsel om at sletting av en MySQL-database er en veldig dårlig idé. Det bes også om bekreftelse av handlingen. Hvis du er enig, skriv y og trykk Tast inn på tastaturet, hvoretter følgende melding vil vises på skjermen (hvis alt gikk bra, selvfølgelig):

    Databasen «database_name» ble droppet

    Det er det :)

    Slik sletter du en MySQL-bruker i konsollen

    Nå vil den samme skjebnen ramme MySQL-brukeren vi opprettet for å vise deg hvordan det gjøres. Men først vil det være en god idé å sjekke om den nødvendige brukeren faktisk eksisterer før du sletter den.

    Fra og med MySQL 5.7 er det én kommando for begge disse handlingene:

    DROP BRUKER HVIS FINNES brukernavn;

    Tidligere versjoner av MySQL krevde to separate kommandoer:

    GIV BRUK PÅ *.* TIL "brukernavn"@"vert_eller_IP_adresse"; DROP BRUKER "brukernavn"@"vert_eller_IP_adresse";

    Dessverre, i dette tilfellet, er meldingen om utførelsen av operasjonen i MySQL-konsollen tradisjonelt lite informativ 🙁 Derfor, for å finne ut at MySQL-brukerbrukeren er slettet, kan du bruke følgende kommando, som viser en liste over alle brukere eksisterende på gjeldende MySQL-server:

    VELG bruker FRA mysql.user;

    Dette kommandoalternativet vil bare vise brukernavn. Hvis du trenger å se vertene som brukere kan koble til serveren fra, og listen over privilegier, kan du ringe kommandoen i følgende form:

    VELG bruker, vert, Grant_priv FRA mysql.user;

    Også i mysql.user-tabellen er det mange andre felt som lagrer andre typer privilegier og annen informasjon, en fullstendig liste over disse finner du her - https://mariadb.com/kb/en/library/mysqluser- bord/

    Ikke bli forvirret over at dette er dokumentasjon for MariaDB DBMS. Teknisk sett er dette det samme som MySQL, fordi... MariaDB er bare dens gren eller gaffel fra den engelske "gaffel" - gren, gaffel.

    Hvorfor ble det gjort - igjen, jeg aner ikke 🙂 Kanskje for å stolt erklære til alle at "Jeg har min egen DBMS"?.. Men for å være ærlig, jeg er ikke veldig klar over de nøyaktige motivene og forskjellene mellom MySQL og MariaDB. Derfor, hvis du vet noe om dette, ville det vært interessant å lese om det i kommentarfeltet.

    Avslutter MySQL-konsollen

    Det er alt, livssyklusen til databasen og brukeren, som begynte med opprettelsen og endte med slettingen, har kommet til en slutt. Derfor MySQL-kommandolinjen, som vi jobbet med i serverkonsollen ved hjelp av verktøyet mysql, vi trenger det ikke lenger.

    Det gjenstår bare å komme seg ut av det...

    Det ser ut til at handlingen er triviell, men mange i en situasjon der de trenger å gå ut av MySQL-kommandolinjen, lukker ganske enkelt serverkonsollen og åpner den igjen. Du kan selvfølgelig oppføre deg slik, men det tar ekstra sekunder med arbeidstid og gjør deg irritert hver gang du skal gjøre det.

    Riktig oppførsel i denne situasjonen er bare å ringe kommandoen exit i MySQL-kommandolinjen, hvoretter tjenesten tar høflig farvel til oss :)

    Og det er alt 🙂 Så neste gang trenger du ikke å opprette flere konsoller og åpne dem på nytt hver gang du må avslutte MySQL i konsollen og få tilgang til den igjen for å administrere serveren.

    Det var alt jeg ville fortelle deg i dag. Jeg håper at juksearket mitt for å jobbe med MySQL-kommandolinjen via konsollen vil være nyttig ikke bare for meg, men også for deg.

    Når jeg snakker om den praktiske anvendelsen av informasjonen presentert i artikkelen, vil jeg minne deg på at konstruksjonene ovenfor kan brukes ikke bare i MySQL-kommandolinjen og serverkonsollen, men også i konsollen til phpMyAdmin og annen programvare som gir en slik mulighet.

    Om du bruker det eller ikke er din sak. Men, som jeg sa helt i begynnelsen av artikkelen, er det situasjoner der bruk av MySQL-konsollen kan spare deg for tid og stress. Om du skal bruke kommandolinjen hver dag eller ikke er et spørsmål om smak og individuelle preferanser.

    Skriv i kommentarfeltet om hvilke kommandoer du bruker oftest. Eller kanskje du kan noen andre triks. I alle fall, del din mening med andre og hold samtalen i gang i kommentarene til andre brukere.

    Jeg lover at i prosessen vil du lære mye nytt, akkurat som jeg gjør når jeg skriver hver av artiklene mine :)

    Det er alt! Lykke til og se deg igjen :)

    P.S.: hvis du trenger en nettside eller trenger å gjøre endringer på en eksisterende, men det er ikke tid eller lyst til dette, kan jeg tilby mine tjenester.

    Mer enn 5 års erfaring profesjonell nettsideutvikling. Jobbe med PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, Reagere, Kantete og andre nettutviklingsteknologier.

    Det er mulig ikke bare gjennom PHP. MySQL kommer med en konsollklient for tilkobling til en MySQL-server. Konsoll - dette betyr at programmet ikke har et vindusgrensesnitt, men bare et kommandolinjegrensesnitt der databaser får tilgang til ved hjelp av SQL-spørringer.

    Kommandoene for å koble til MySQL på kommandolinjen, og enda mer selve SQL-spørringene, er identiske for . I det følgende, for korthets skyld, vil jeg skrive "MySQL", men gjennomgående mener jeg "MySQL eller MariaDB", siden det i dette tilfellet ikke er noen forskjell mellom dem.

    Ved å koble til MySQL DBMS via kommandolinjen, kan du utføre en rekke oppgaver: se databaser og deres tabeller, sende spørringer til databaser og motta resultatene av å utføre disse spørringene.

    For å koble til MySQL-serveren, bruk en klientprogramkommando kalt mysql.exe. Det må startes, men det må ikke gjøres ved å dobbeltklikke, som et vanlig program, men fra kommandolinjen.

    La oss starte med å trykke på hurtigtasten Win+r og la oss gjøre det

    En ledetekst åpnes.

    Nå må vi gå til mappen med filen mysql.exe. Denne mappen bin i katalogen der MySQL DBMS er installert. For eksempel har jeg MariaDB, som er installert i mappen C:\Server\bin\mariadb\. Derfor ligger filen vi er interessert i i katalogen C:\Server\bin\mariadb\bin\. For å gå til denne katalogen, bruk kommandoen CD på følgende måte:

    Cd C:\Server\bin\mariadb\bin\

    I denne kommandoen erstatter du C:\Server\bin\mariadb\bin\ med den riktige banen for systemet ditt

    La oss nå kjøre mysql.exe-filen. Det er ikke nødvendig å spesifisere filen extension.exe - systemet selv vil gjette hva vi mener. Vi må også bruke alternativet -u Og -s. Etter det første alternativet må du spesifisere brukernavnet - rot. Etter det andre alternativet er passordet for brukeren. I mitt tilfelle er passordet ikke satt, så jeg kjører uten alternativet -s:

    Mysql -u rot

    Det kan virke som ikke mye har endret seg, men den nye ledeteksten

    MariaDB [(ingen)]>

    indikerer at vi er koblet til MySQL-serveren. Mer presist, i mitt tilfelle er vi koblet til MariaDB-serveren.

    For å se listen over databaser, skriv inn kommandoen:

    VIS DATABASER;

    For å sende påfølgende spørringer til en bestemt database (for eksempel test), bruk kommandoen BRUK:

    BRUK test;

    For å vise tabellene i den valgte databasen, kjør kommandoen:

    VIS TABELLER;

    La oss lage en tabell:

    CREATE TABLE AuthorsTBL (AuthorID INT NOT NULL AUTO_INCREMENT, AuthorName VARCHAR(100), PRIMARY KEY(AuthorID));

    La oss se igjen på innholdet i testdatabasen.

    Installasjon og administrasjon av MySQL server.

    Installasjon og første lansering av MySQL.

    Installasjon.

    Det er ganske enkelt å installere MySQL. Først må du laste ned og pakke ut kildene (jeg tror ikke det er verdt å skrive hvordan du gjør dette). Du finner dem på MySQL-nettsiden i seksjonen - for enhver smak og for ethvert operativsystem, siden MySQL fungerer på nesten alle plattformer.

    Hvis du jobber på en Unix-plattform (spesielt vil jeg gi eksempler for Linux, som er litt annerledes for andre Unix-plattformer), må du følge disse trinnene:

    shell> gunzip mysql-VERSION-OS.tar.gz | tar xvf - shell> ln -s mysql-VERSION-OS mysql shell> cd mysql shell> scripts/mysql_install_db shell> bin/safe_mysqld &

    Du må pakke ut kildene i katalogen /usr/local, siden denne katalogen er spesifisert i konfigurasjonsskriptene, og lage en symbolkobling for mysql-katalogen - dette gjøres fordi denne katalogen er spesifisert i de samme skriptene. Du må redigere mysql_install_db og safe_mysqld-skriptene i forhold til systemet ditt, for at de skal begynne å fungere, spesielt korriger banen for å indikere plasseringen av mysqld og databaser. For å starte mysqld-demonen må du gå til /usr/local/mysql/bin-katalogen og kjøre safe_mysql-skriptet i bakgrunnen. Hvis du ikke mottar noen meldinger, er dette allerede bra, betyr det at alt gikk bra. en feilmelding vises, det betyr at - det er noe galt med skript. Du kan konfigurere mysql-serveren til å starte når datamaskinen starter. For å gjøre dette, må du plassere safe_mysql-starten i en av systeminitialiseringsfilene (de er forskjellige avhengig av Linux-versjonen). For Linux Slakware må du legge til følgende i filen /etc/rc.d/rc.local:

    /usr/local/mysql/bin/safe_mysqld &

    Når det gjelder Windows, som jeg er fan av, er installasjonen nesten problemfri. Du pakker ut zip-arkivet, kjører exe-filen, og så fungerer alt av seg selv. Den installeres vanligvis i c: mysql-katalogen. På Windows NT er MySQL installert som en tjeneste og du kan spesifisere oppstartsmetoden - manuell eller automatisk (Start-Innstillinger-Kontrollpanel-Tjenester-MySQL-Oppstart).

    Start MySQL.

    Serveradministrasjon utføres vanligvis fra kommandolinjen. Jeg har allerede skrevet om Linux, og på Windows 95/98, åpne en DOS-sesjon og kjør følgende kommandoer:

    cd mysqlbin mysqlbin>mysqld --frittstående

    Denne kommandoen vil starte mysql-demonen i bakgrunnen. Windows 95/98 tillater ikke å kjøre mysqld som en tjeneste. Fraværet av meldinger er et godt tegn, det betyr at alt er i orden.

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

    -?, --hjelpHenvisning
    -b, --basedir=Banen til katalogen der mysql er installert
    -h, --datadirBanen til katalogen der databasene er lagret.
    -l, --log=Transaksjonsloggnavn
    -L, --språk=Standardspråk (vanligvis engelsk).
    -P, --port=Tilkoblingsport.
    --hopp over-grant-tabellerIgnorer rettighetstabeller. Dette gir alle FULL tilgang til alle tabeller. Vanlige brukere bør ikke gis tillatelse til å kjøre mysqld.
    --hopp over-navn-løsLar deg bare gi tilgang til de verter hvis IP-adresser er spesifisert i rettighetstabellene. Brukes for et høyere beskyttelsesnivå.
    --hopp over nettverkBruk kun tilkoblinger gjennom det lokale vertsgrensesnittet.
    -V, --versjonVis versjonsinformasjon.

    Nå kan du prøve å logge på serveren. For å gjøre dette, bruk mysql-kommandoen. Til å begynne med er det en enkelt bruker som får innloggingsrettigheter - rot, som ikke har et passord. Det første du må gjøre er å logge på som root og angi et passord for det. Mysql-kommandoen kan bruke følgende alternativer:

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

    Etter å ha angitt root-passordet, må du starte serveren på nytt med mysqladmin reload-kommandoen for at endringene skal tre i kraft. Etter det kan du prøve å logge på igjen:

    mysqlbinmysql -u root -p mysql Skriv inn passord:*******
    Hvis du mottar mysql monitor-prompten, så fungerer alt som det skal. Du kan begynne å sette opp rettighetstabeller, introdusere nye brukere, lage databaser og tabeller, det vil si gjøre alt som heter administrasjon Mer om alt dette nedenfor.

    Privilegesystem og sikkerhet i MySQL.

    mysql-database og privilegietabeller.

    Så du har logget på mysql-databasen, som brukes til å administrere serveren. Hva er det? Og det er 5 tabeller her, som ikke er forskjellig fra andre databasetabeller, bortsett fra at disse tabellene brukes til å gi tilgang til databaser data og tabeller i dem til brukere. La oss vurdere hver av dem.

    Skriv inn følgende kommando som viser tabellene i mysql-databasen:

    mysql>vis tabeller;
    Tabeller_i_mysql
    columns_priv
    db
    vert
    tables_priv
    bruker

    La oss kort se på funksjonene til hver tabell:

    • Bruker
      Bestemmer om brukeren som prøver å koble til serveren har lov til å gjøre det. Inneholder brukernavn, passord og privilegier. Hvis du skriver inn kommandoen vis kolonner fra bruker;, så får vi følgende:
      FeltTypeNullNøkkelMisligholdeEkstra
      Vertrøye(60) PRI
      Brukerchar(16) PRI
      Passordchar(8)
      Select_privchar(1) N
      Insert_privchar(1) N
      Update_privchar(1) N
      Delete_privchar(1) N
      Create_privchar(1) N
      Drop_privchar(1) N
      Reload_privchar(1) N
      Shutdown_privchar(1) N
      Process_privchar(1) N
      File_privchar(1) N

      I utgangspunktet inneholder denne tabellen root-brukeren med passordet du angir og vertsnavnet "%". Som standard kan root logge inn fra hvilken som helst vert, har fulle privilegier og tilgang til alle databaser. Tabellen inneholder også en oppføring for brukeren "%", som den bør fjernes umiddelbart, da den gir tilgang til enhver bruker.

      slett fra bruker der bruker="%";

      Følg disse trinnene for å legge til en ny bruker:

      sett inn i bruker-(vert,bruker,passord)-verdier ("%.domene.com","john",passord("df456"); sett inn i bruker-(vert,bruker,passord)-verdier ("localhost, "mary", passord ("kjøkken"); velg vert, bruker, passord fra bruker;
      VertBrukerPassord
      % rot456g879k34df9
      %.domain.comjohn657t234d980hg6
      lokal vertmary234d76gh88rt9

      Forklaringer:

      1. Insert-kommandoen setter inn data i tabellen, ikke glem å avslutte kommandoene med ";".
      2.Når du skriver inn et passord, bruk passord()-funksjonen, ellers vil ikke passordet fungere!
      3. Alle passord er kryptert av mysql, slik at du ser abracadars i feltet Passord Dette gjøres av sikkerhetshensyn.
      4. Det er ikke en god praksis å tildele rettigheter til brukere i brukertabellen, siden de i dette tilfellet er globale og gjelder alle databaser Gi rettigheter til hver bruker til en bestemt database i db-tabellen, som vil bli diskutert senere .
      5.Når du spesifiserer et vertsnavn for pålogging via nettverket, anbefales det å spesifisere det fullstendige vertsnavnet, og ikke "%".I eksemplet ovenfor har brukeren john lov til å logge inn på serveren fra alle maskiner i domenet domain.com. Du kan også spesifisere maskinens IP-adresser og maskere undernett for større sikkerhet.


    • Bestemmer hvilke databaser som kan fås tilgang til av hvilke brukere og fra hvilke verter. I denne tabellen kan du gi hver bruker tilgang til databasene og tildele privilegier. Hvis du kjører kommandoen vis kolonner fra db; vi får følgende:
      FeltTypeNull MisligholdeEkstra
      Vertrøye(60) PRI
      Dbchar(32) PRI
      Brukerchar(16) PRI
      Select_privchar(1) N
      Insert_privchar(1) N
      Update_privchar(1) N
      Delete_privchar(1) N
      Create_privchar(1) N
      Drop_privchar(1) N

      Som standard er alle privilegier satt til "N". La oss for eksempel gi brukeren john tilgang til bibliotekdatabasen og gi ham velge, sette inn og oppdatere privilegier (en beskrivelse av hovedmysql-kommandoene vil bli gitt i en egen seksjon, nå er målet mitt å vise hvordan tabeller fungerer privilegier).

      sett inn i db (vert, bruker,db,select_priv,insert_priv,update_priv) verdier ("%domain.com","john","bibliotek","Y","Y","Y");

      Rettigheter satt i db-tabellen gjelder bare for biblioteksdatabasen. Hvis du setter disse rettighetene i brukertabellen, vil de gjelde for andre databaser, selv om tilgang til dem ikke er eksplisitt satt.

    • Vert

      Vertstabellen brukes til å utvide tilgangsområdet i db-tabellen. For eksempel, hvis tilgang til en database skal gis til mer enn én vert, skal vertskolonnen i db-tabellen stå tom, og den nødvendige vertsnavn skal fylles ut i vertstabellen. La oss utføre kommandoen vis kolonner fra vert;

      FeltTypeNullNøkkelMisligholdeEkstra
      Vertrøye(60) PRI
      Dbchar(32) PRI
      Select_privchar(1) N
      Insert_privchar(1) N
      Update_privchar(1) N
      Delete_privchar(1) N
      Create_privchar(1) N
      Drop_privchar(1) N

    Som det fremgår av tabellen kan du her også sette privilegier for tilgang til databasen. De brukes vanligvis sjelden unødvendig Alle tilgangsprivilegier må settes i db-tabellen for hver bruker, og i vertstabellen må kun oppgis verten. navn. Serveren leser alle tabeller, sjekker brukernavn, passord, vertsnavn, databasenavn, privilegier. Hvis select, insert-privilegiene i db-tabellen er satt til "Y", og i vertstabellen til "N", så i på slutten vil brukeren fortsatt motta "Y". For å skape forvirring er det bedre å tildele privilegier i db-tabellen.

    Disse 3 tabellene er de viktigste. I nye versjoner av MySQL, fra og med 3.22, er det lagt til 2 tabeller til - tables_priv og columns_priv, som lar deg sette tilgangsrettigheter til en spesifikk tabell i databasen og til og med til en spesifikk kolonne. De fungerer som db-tabellen, bare de refererer til tabeller og høyttalere. Fra og med versjon 3.22 kan du også bruke GRANT-kommandoen til å gi tilgang til databaser, tabeller og tabellkolonner, noe som eliminerer behovet for å manuelt endre tabellene db, tables_priv og columns_priv. GRANT-kommandoen vil bli diskutert i detalj i følgende avsnitt.

    Privilegier gitt av MySQL.

    Privilegium Kolonne Hvor brukes den?
    plukke ut Select_privtabeller
    sett inn Insert_privtabeller
    Oppdater Update_privtabeller
    slette Delete_privtabeller
    indeks Index_privtabeller
    endre Alter_privtabeller
    skape Create_privDB, tabeller, indekser
    miste Drop_privDB eller tabeller
    stipend Grant_privDB eller tabeller
    referanser References_privDB eller tabeller
    last på nytt Reload_privserveradministrasjon
    skru av Shutdown_privserveradministrasjon
    prosess Process_privserveradministrasjon
    fil File_privtilgang til filer på serveren

    Plukke ut-brukes til å hente informasjon fra tabeller.Select kan også brukes uten tillatelse til å få tilgang til en database, for eksempel som en kalkulator.

    Sett inn-brukes til å sette inn informasjon i en tabell. For eksempel:

    Slett-brukes til å fjerne informasjon fra tabeller.

    Skape- lar deg lage databaser og tabeller i dem. Eksempler:

    mysql>mysqladmin -u john -ptest create mydb //Oppretter en tom database. mysql>bruk mydb; Database endret. opprette tabellovervåking (id int(5) ikke null auto_increment, fornavn varchar(15) ikke null, etternavn varchar(20) ikke null, adresse varchar(80) ikke null, primærnøkkel (id), nøkkel(last_name));

    Miste-brukes til å slette tabeller og databaser.

    Stipend- lar en bruker gi andre brukere rettigheter som han selv har To brukere med ulike rettigheter og GRANT-privilegier kan kombinere sine tillatelser.

    Indeks- lar brukeren opprette og slette indekser.

    Fil-En bruker med denne rettigheten kan utføre kommandoene LOAD DATA INFILE og SELECT...INTO OUTFILE og kan lese og skrive hvilken som helst fil på MySQL-serveren.

    De siste 3 privilegiene brukes til å administrere serveren fra kommandoen mysqladmin.

    MySQL spesialbrukere.

    Det er 3 spesielle brukere i MySQL: monty, admin og dummy.

    • monty

      Superbruker. Kan logge inn på serveren fra enten den lokale verten eller hvilken som helst vert på nettverket. Har tilgang til alle databaser og alle privilegier, men hvis root kan logge inn for første gang uten passord, må monty bruke et passord og må være lagt til tabellprivilegiene manuelt.

      Det skal bemerkes at du må legge inn data for både localhost og "%", det vil si hvilken som helst vert på nettverket.

    • admin

      En bruker som kan logge på serveren fra localhost uten passord og som er tildelt administrative rettigheter Last inn på nytt og bearbeid.admin-bruker kan bruke kommandoer mysqladmin reload, mysqladmin refresh og mysqladmin flush-*,og mysqladmin prosessliste.

      Administratoren har ikke tilgang til databaser. Rettigheter for å få tilgang til enkelte databaser må tildeles individuelt, enten i db-tabellen, eller med GRANT-kommandoen.

    • dummy

      En bruker som kan logge på serveren uten passord, men bare fra den lokale verten. Alle globale privilegier er satt til "N" bortsett fra "USAGE", som lar dummy opprette brukere uten privilegier. Databasetilgangsrettigheter må settes av root .

    Oppretting og modifikasjon av databaser og tabeller i MySQL.

    Oppretting av databaser.

    Oppretting av en database i MySQL gjøres ved å bruke verktøyet mysqladmin.I utgangspunktet er det kun en mysql-database for administratoren og en testdatabase, som kan logges på av enhver bruker og er tom som standard.Eksemplet nedenfor illustrerer opprettelsen av en database.

    Eller, å være i en annen database, for eksempel i mysql, skriv inn kommandoen:

    mysql>bruk data1 Database endret.

    Nå kan du lage tabeller og legge inn informasjon.

    Datatyper i MySQL.

    Før du oppretter tabeller, må du være kjent med datatypene MySQL støtter. De er alle presentert i tabellen nedenfor:

    BIGINT [(lengde)]8 byte heltall
    BLOBBinært objekt (maks lengde 65535 byte)
    CHAR(NUM)Fast lengde streng (1DATOLagrer datoinformasjon. Bruker formatet "ÅÅÅÅ-MM-DD". Kan endres som en streng eller et tall. ÅÅÅÅ-MM-DD ("- " kan være ALLE ikke-siffer) ÅÅ-MM-DD ("- " kan være ALLE ikke-siffer) ÅÅMMDD ÅÅMM Området for denne datatypen er 0000-00-00 til 9999-12 -31. I motsetning til TIMESTAMP, godtar DATE år og som to sifre fra 0000 til 0099. Dette er ikke særlig nyttig i de fleste tilfeller. Bruk firesifrede år i DATE-feltene. DATE-typen er 4 byte lang.
    DATO TIDKombinere DATO og TID. DATETIME-typen er identisk med TIMESTAMP-typen med følgende unntak: Når en post settes inn i en tabell som inneholder felt av typen DATETIME, endres ikke DATETIME-feltet. Området for et felt av typen DATETIME er: "0000-01-01 00:00:00" - "9999-12-31 23:59:59" når det brukes i en strengkontekst, og "000000000000000" - "99991231235959" når den brukes i tallsammenheng. DATETIME-typen er 8 byte lang.
    DESIMAL (lengde, des.)Desimalt flyttall.
    DOBBELT [(lengde,desc)]Et dobbelt presisjonstall (4 eller 8 byte) med en maksimal lengde og et fast antall desimaler.
    FLYTTE [(presisjon)]Flytende kommanummer. FLOAT(4) og FLOAT enkeltpresisjon. FLOAT(8) gir dobbel presisjon.
    FLOAT [(lengde,desimaler)]Et enkelt presisjonstall med en maksimal lengde og et fast antall desimaler (4 byte).
    INT [(lengde)]Heltall (4 byte).
    HELTAL [(lengde)]4 byte heltall
    LANGBLOBBinært objekt med en maksimal lengde på 2**32 byte.
    MEDIUMBLOBEt binært objekt med en maksimal lengde på 16777216 byte.
    MEDIUMINT [(lengde)]Heltall (3 byte).
    EKTE [(lengde,des)]Identisk med DOUBLE (8 byte).
    SMALLINT [(lengde)]Heltall (2 byte).
    LITEN BLOKEt binært objekt med en maksimal lengde på 255 byte.
    TINYINT [(lengde)]Heltall (1 byte).
    VARCHAR(NUM)String med variabel lengde (1TIDLagrer tidsinformasjon. Bruker formatet "TT:MM:SS". Kan brukes som en streng eller tall. MySQL TIME-typen forstår følgende syntaks. TT:MM:DD TTMMDD TTMM TT TID data er 3 byte lange.
    TIMESTAMP(NUM)Endres automatisk ved innsetting/oppdatering. Har formatet ÅÅMMDDHHMMSS eller ÅÅÅÅMMDDHHMMSS. Du kan endre TIMESTAMP-feltet når du utfører en INSERT. Dette er nyttig når du vil angi en egendefinert dato/klokkeslett for opptak. Under modifikasjoner bør du ikke angi en verdi for TIMESTAMP-feltet, eller angi NULL som verdien som skal settes inn. Ellers får du en ugyldig verdi for dette feltet. Når du bruker mysql med ODBC og Access bør du bruke verdien 14 for NUM da dette tvinger MySQL til alltid å bruke fire sifre i år. En verdi på 12 vil tvinge MySQL til å bruke to sifre i året. Standardverdien er 14. Merk at i tilfellet med tabeller med flere TIMESTAMP-felt, vil kun det første slike feltet oppdateres automatisk.

    Oppretting og modifikasjon av tabeller.

    La oss lage kundetabellen i data1-databasen:

    mysql>bruk data1 Database endret. mysql>opprett tabellkunder (emp_id int(4) ikke null auto_increment, emp_name varchar(10) ikke null, emp_lname varchar(15) ikke null, adresse varchar(60) ikke null, phone int(10), primærnøkkel(emp_id) );

    Vi har laget en tom tabell. Du kan legge inn data i den på flere måter:
    a) manuelt ved å bruke kommandoen sette inn i;
    b) last inn data fra en tekstfil, noe som er å foretrekke, spesielt hvis du trenger å legge inn flere tusen poster Syntaksen til denne kommandoen vil bli beskrevet senere.
    c) bruk mysqlimport-verktøyet til å også laste inn data fra en tekstfil.

    Eksempel på manuell inntasting av data:

    Angående auto_increment i kolonne emp_id, betyr dette at den numeriske verdien til denne kolonnen automatisk vil øke med én for hver ny oppføring. Det vil si at hvis vi skrev inn verdien 1001, så vil den neste være 1002 osv. Verdien i en slik kolonne legges inn én gang for å angi startpunktet, og så vil serveren erstatte de nødvendige verdiene selv.

    Syntaks for kommandoen LOAD DATA INFILE.

    DATAINFIL "file_name.txt" I TABELL tbl_name LUKKET AV ""] ] [(col_name,...)]

    Anta at det er en tekstfil 123.txt som inneholder 2000 poster som må legges inn i en tabell.Vi må lage en tabell som har samme struktur og samme antall felt som filen (samt egnede datatyper). Anta at feltene i filen er atskilt med komma, i tillegg må filen ligge i ønsket database. Skriv inn følgende kommando:

    LAST DATAINFIL "123.txt" i tabellkundefelt avsluttet av ",";

    Det er alt. Dataene fra filen er plassert i en tabell.

    For å endre tabeller og data i dem, bruk kommandoene oppdatere og endre bord. La oss vurdere handlingen deres ved å bruke kundetabellen som et eksempel:

    Kunder
    emp_idemp_nameemp_lnameadressetelefon
    1001 JohnWalkerNew York1235468798
    1002 RegningSmithChicago7650945237
    1003 JackNicolsonDallas9874325097

    Eksempel på en kommandohandling endre tabell:

    Du kan sjekke det selv :)

    Endre data i tabeller gjøres ved å bruke kommandoen Oppdater.La oss for eksempel ta de samme bordkjøperne.

    mysql>update buyers set address="Seattle" hvor emp_lname="Smith";

    Kommandoene brukes også til å endre tabeller Slipp og slett.

    Slett- sletter en rad fra tabellen, for eksempel hvis du skriver inn kommandoen
    slett fra kjøpere der emp_id="1002"

    Linjen til Bill Smith vil bli fjernet.

    Miste-hvis brukt i Alter-tabellen, fjerner en kolonne fra tabellen.

    Team Miste Den brukes også til å slette tabeller og databaser. Den bør brukes forsiktig, siden enhver sletting er irreversibel, data kan bare gjenopprettes fra en sikkerhetskopi.

    Vanlige problemer og deres løsning.

    Det vanligste problemet er meldingen Tilgang nektet for bruker... Hvis dette er en vanlig bruker, kan administratoren håndtere dette, men hvis administratoren mottar en slik melding, er dette allerede et problem. Svært ofte, når du angir et passord for root, glemmer administratoren å bruke funksjonen passord(), men skriver bare inn:

    oppdater brukersett passord="mamamia" hvor bruker="root";

    Etter dette, når han prøver å gå inn i databasen, mottar han meldingen Access nektet. Dette passordet vil ikke bli lest. Du må skrive inn riktig:

    oppdater brukersett passord=passord("mamamia") hvor bruker="root";

    Dette er et veldig viktig skritt og du må være forsiktig. Den eneste utveien i Windows er å avinstallere serveren og installere en ny, heldigvis er ingenting konfigurert ennå.

    Hvis en bruker opplever dette problemet, er årsaken sannsynligvis at rettighetstabellene ikke er riktig konfigurert, primært den samme passordinnstillingen, eller at oppføringene i db- og vertstabellene er feil. La oss se på dette med et enkelt eksempel:

    Bruker
    Vert%.domain.com
    Brukerjerry
    Passord378b243hk8796
    Select_privY
    Db
    Vert%.domain.com
    Dbdata1
    Brukerjerry
    Insert_privY
    Select_privY
    Update_privY
    Delete_privY
    Tabellene inneholder informasjon for brukeren jerry. Som du kan se, kan jerry logge inn over nettverket fra hvilken som helst datamaskin på domene.com-domenet ved å skrive inn hans navn og passord. Serveren leser brukertabellen, bestemmer samsvaret mellom navnet og passord, deretter Db-tabellen, som angir hvilke databaser som har tilgang til Hvis alt stemmer, får jerry tilgang til databasen data1 I denne databasen kan jerry se informasjon i tabeller, plassere nye data der, endre innholdet i rader og slett rader. Hvis han ønsker å opprette en ny tabell, vil han motta en Access nektet melding fordi den ikke har tillatelse til å lage tabeller.

    En veldig viktig nyanse: i brukertabellen for jerry er Select-tillatelsen angitt, som er global, det vil si gyldig for enhver database, selv om han ikke har tilgang til den. For eksempel, hvis jerry skriver inn kommandoen:

    velg * fra data2.authors;

    han vil ha tilgang til denne tabellen, selv om tilgang til data2-databasen ikke er tildelt i Db-tabellen.Derfor, med mindre det er absolutt nødvendig, trenger du ikke å gi brukere privilegier i User-tabellen, men gjør dette i Db-tabellen for hver spesifikk database.

    La oss si at jerry jobber midlertidig i en annen avdeling, som er i et annet domene, og når han prøver å få tilgang til databasen, får han tilgang nektet, fordi datamaskiner i dette domenet ikke har tilgang til databasen. I dette tilfellet kan du må gjøre følgende: tøm vertsfeltet i Db-tabellen, og skriv inn følgende data i vertstabellen:

    oppdater db set host="" hvor bruker="jerry";
    sett inn i verts (vert,db) verdier ("%domain.com","data1");
    sett inn i verts (host,db) verdier ("monster.domain2.com", "data1");

    Det er ikke nødvendig å spesifisere privilegier i vertstabellen Hovedsaken er at dataene i privilegietabellene ikke dupliseres noe sted, slik at det ikke oppstår motsetninger Data for brukeren - navn og passord - må tildeles i Bruker tabell, privilegier - i Db-tabellen, verter som tilgang er tillatt fra , i vertstabellen Hvis du legger inn alt nøye, skal det ikke være noen problemer.

    MySQL versjon 3.22 og senere har en veldig god GRANT-kommando som lar deg gi brukere tilgang til databaser og tabeller uten å manuelt endre rettighetstabellene.

    GRANT velg, sett inn oppdatering, slett på data1.telefon til jerry@%domain.com identifisert med "passord";

    Ved å bruke denne kommandoen kan du spesifisere tilgangsprivilegier selv til bestemte tabellkolonner:

    GRANT select(id,navn,adresse,telefon),oppdatering(adresse,telefon) på data2.customers til jerry@%.domene.com identifisert med "passord";

    Ved å bruke denne kommandoen plasseres data automatisk i tabellene Db, Tables_priv og Column_priv, noe som eliminerer behovet for manuell modifikasjon.

    Hvis du trenger å tilbakekalle et privilegium fra en bruker, bruk REVOKE-kommandoen.

    REVOKE oppdatering(adresse,telefon) på data2.customers fra jerry@%domain.com;

    Databasespørringer og Velg-kommandoen.

    Det er ikke min intensjon å gå dypt inn i SQL-språket, det kan du lese om i enhver SQL Server-manual, MySQL støtter i utgangspunktet alle de grunnleggende ANSI 92-standardkommandoene, men kommandoen Plukke ut fortjener å vie et eget kapittel til det. Velg kommandoen brukes til å spørre en database for å hente informasjon fra den. Kommandosyntaksen er som følger:

    SELECT select_expression,... , ...] HAR full_where_definition-rader] ]

    Som det fremgår av det ovenstående, sammen med Select-kommandoen, brukes nøkkelord, hvis bruk i stor grad påvirker serverens respons La oss vurdere hver av dem.

    • DISTINKT..

      Hopper over rader der alle valgte felt er identiske, det vil si eliminerer duplisering av data.

    • HVOR.

      En Select-kommandosetning som lar deg angi predikater som kan være sanne eller usanne for en hvilken som helst rad i en tabell. Bare de radene som setningen er sann for, hentes. For eksempel:

      SELECT u_id,lname fra utgivere WHERE city ="New York";

      Returnerer kolonnene u_id og lname fra publishertabellen som verdien er i kolonnen by-New York. Dette gjør det mulig å gjøre spørringen mer spesifikk.

    • Relasjonelle operatører.

      En relasjonsoperator er et matematisk symbol som indikerer en spesifikk type sammenligning mellom to verdier. Relasjonsoperatører tilgjengelig i MySQL:

      Lik > Større = Større enn eller lik Ikke lik

      Disse operatorene har standardbetydninger for numeriske verdier.

      La oss si at du vil se alle kunder med en vurdering som er høyere enn 200. Siden 200 er en skalarverdi, som verdien i rangeringskolonnen, kan du bruke en relasjonsoperator for å sammenligne dem.

      VELG * FRA Kunder WHERE vurdering > 200;

    • boolske operatorer.

      Grunnleggende boolske operatorer gjenkjennes også i MySQL. Boolske uttrykk er enten sanne eller usanne, som predikater. Boolske operatorer knytter en eller flere sanne/falske verdier og produserer en enkelt sann eller usann verdi. Standard boolske operatorer som gjenkjennes i SQL er AND, OR og NOT.

      La oss si at du vil se alle kunder i Dallas som har en vurdering over 200:

      VELG * FRA kunder HVOR by = "Dallas" OG vurdering > 200;

      Ved bruk av AND-operatøren må begge vilkårene være oppfylt, det vil si at alle kunder fra Dallas som har rangering over 200 må velges.

      Ved bruk av OR-operatoren må ett av betingelsene være oppfylt. For eksempel:

      VELG * FRA kunder HVOR by = "Dallas" ELLER vurdering > 200;

      I dette tilfellet vil alle kunder fra Dallas og alle de med en vurdering over 200 bli valgt, selv om de ikke er fra Dallas.

      NOT kan brukes til å invertere boolske verdier. Eksempelspørring med NOT:

      VELG * FRA kunder HVOR by = "Dallas" ELLER IKKE vurdering > 200;

      Denne spørringen vil velge alle kunder fra Dallas og alle kunder hvis vurdering er mindre enn 200. I denne spørringen gjelder NOT-operatoren bare for uttrykket vurdering >200. Du kan lage en mer kompleks spørring:

      VELG * FRA kunder WHERE NOT(by = "Dallas" ELLER vurdering > 200);

      I denne spørringen brukes NOT på begge uttrykkene i parentesen. I dette tilfellet leser serveren uttrykkene i parentesen og bestemmer om by = "Dallas" eller vurdering > 200 er sann. Hvis en av betingelsene er sanne, vil det boolske uttrykket innenfor parentes er sant. Men hvis det boolske uttrykket i parentesen er sant, er predikatet som helhet usann, fordi NOT konverterer sann til usann og omvendt. Det vil si at alle kunder som ikke befinner seg i Dallas og hvis vurdering er mindre enn 200, vil bli valgt.

    • I.

      IN-operatøren spesifiserer et sett med verdier der en gitt verdi kan eller ikke kan inkluderes. For eksempel en spørring

      VELG * FRA selgere HVOR by = "Barcelona" ELLER by = "London";

      kan skrives om enklere:

      VELG * FRA selgere HVOR by IN ("Barcelona", "London");

      IN spesifiserer et sett med verdier ved å bruke navnene på settets medlemmer omsluttet i parentes og atskilt med kommaer. Den tester deretter de ulike verdiene for den spesifiserte, og prøver å matche verdiene i settet. Hvis dette skjer, er predikatet sant. Når settet inneholder tallverdier i stedet for tegnverdier, utelates enkeltanførselstegn.

    • MELLOM.

      MELLOM-operatoren ligner på IN-operatoren. I motsetning til å definere med tall fra et sett, som IN gjør, definerer BETWEEN et område hvis verdier må reduseres for å gjøre predikatet sant. Du må angi MELLOM nøkkelordet med startverdien, AND nøkkelordet og sluttverdien. I motsetning til IN, er BETWEEN rekkefølgesensitiv, og den første verdien i leddet må være den første i alfabetisk eller numerisk rekkefølge. For eksempel:

      VELG * FRA Selgere HVOR komm. MELLOM .10 OG .12;
      VELG * FRA Selgere HVOR by MELLOM "Berlin" OG "London";

    • SOM.

      LIKE er bare aktuelt for felt av typen CHAR eller VARCHAR, som den brukes til å matche understrenger. De. den ser etter et tegnfelt for å se om en del av strengen samsvarer med betingelsen. Den bruker jokertegn som en betingelse - spesialtegn som kan matche noe. Det er to typer jokertegn brukt med LIKE:

        Understrekingstegnet (_) erstatter et enkelt tegn.

      • "%"-tegnet erstatter et hvilket som helst antall tegn.

      Hvis vi setter følgende betingelser:

      VELG * FRA kunder HVOR fnavn SOM "J%";

      da vil alle kunder hvis navn begynner med J: John, Jerry, James osv. bli valgt.

    • TELLE.

      En aggregert funksjon teller verdiene i en kolonne eller antall rader i en tabell. Når du arbeider med en kolonne, bruker den DISTINCT som argument:

      VELG ANTALL (DISTINCT snum) FRA bestillinger;

      Ved telling av rader er syntaksen:

      VELG ANTALL (*) FRA kunder;

    • GRUPPE AV.

      GROUP BY-klausulen lar deg definere en delmengde av verdiene i et bestemt felt i form av et annet felt, og bruke en aggregert funksjon på delsettet. Dette gjør det mulig å kombinere felt og aggregerte funksjoner i en enkelt SELECT-klausul. La oss for eksempel si at du ønsker å finne det høyeste kjøpsbeløpet mottatt av hver selger. Du kan gjøre en separat spørring for hver av dem ved å velge MAX() fra tabellen for hver feltverdi. GROUP BY lar deg legge dem alle i én kommando:

      VELG snum, MAX (amt) FRA Bestillinger GRUPPE ETTER snum;

    • HA.

      HAVING spesifiserer kriteriene som brukes for å fjerne bestemte grupper fra utdata, akkurat som WHERE-leddet gjør for individuelle rader. For eksempel:

      SELECT cid,cname,price,max(price) //max() er også en aggregert funksjon FRA kunder SOM HAR max(pris)>500;

      HAVING-funksjoner på samme måte som WHERE, men aggregerte funksjoner kan ikke brukes med WHERE.

    • REKKEFØLGE ETTER.

      Denne kommandoen bestiller spørringsutgangen i henhold til verdiene i en rekke utvalgte kolonner. Flere kolonner er sortert innenfor hverandre, akkurat som med GROUP BY.

    • FINNES.

      Brukes i underspørringer.

      VELG cnum, cname, city FRA kunder HVOR FINNES (VELG * FRA kunder HVOR by = "San Jose");

      Den tar en underspørring som et argument og vurderer den som sann hvis den produserer utdata eller som falsk hvis den ikke gjør det. Dette skiller den fra andre predikatoperatorer, der den ikke kan være ukjent. For eksempel kan vi bestemme om vi skal hente noen data fra en kundetabell hvis, og bare hvis, en eller flere av kundene i den tabellen er i San Jose.

    • UNION.

      UNION skiller seg fra underspørringer ved at ingen to (eller flere) spørringer kontrolleres av en annen spørring. Alle forespørsler utføres uavhengig av hverandre, og utdataene deres kombineres. For eksempel:

      SELECT snum, sname FRA Selgere WHERE city = "London" UNION SELECT cnum, cname FRA Kunder WHERE city = "London";

      UNION-leddet kombinerer utdataene fra to eller flere SQL-spørringer til et enkelt sett med rader og kolonner.

    • DESC,ASC.

      DESC-DESCEDENT, utdata i omvendt rekkefølge (alfabetisk og numerisk) Standard er ASC.

    Vel, det er alt i et nøtteskall. MySQL støtter nesten alle de grunnleggende SQL Server-kommandoene, så du kan lese mer om SELECT-kommandoen i en hvilken som helst SQL-lærebok.

    Grunnleggende MySQL-verktøy.

    MySQL-distribusjonen inkluderer følgende verktøy:

    Mysqladmin

    Et verktøy for serveradministrasjon. Kan brukes av administratoren, så vel som av noen brukere som er tildelt visse privilegier, for eksempel - Reload_priv,Shutdown_priv,Process_priv Og File_priv.Denne kommandoen kan brukes til å lage databaser, endre en brukers passord (en administrator kan endre passordet for enhver bruker, men en vanlig bruker kan bare endre sitt eget), starte på nytt og stoppe serveren, se listen over prosesser som kjører på server. Mysqladmin støtter følgende kommandoer:

    Eksempel på bruk av mysqladmin for å endre passord:

    mysqladmin -u bob passord rawberry

    Det skal bemerkes at dersom du bruker mysqladmin til å sette passordet, trenger du ikke bruke funksjonen password() Mysqladmin sørger selv for å kryptere passordet.

    mysqlaccess

    Brukes til å sjekke brukerrettigheter for å få tilgang til en bestemt database. Generell syntaks:

    mysqlaccess-alternativer

    Et nyttig verktøy for å sjekke en brukers tilgangsrettigheter hvis de mottar en tilgang nektet melding når de prøver å koble til en database.

    Alternativer:

    mysqlshow

    Brukes til å vise hvilke databaser serveren jobber med, hvilke tabeller hver database inneholder, og hvilke kolonner hver tabell har. Syntaks:

    mysqlshow [alternativer] ]]

    Mysqlshow kan bruke følgende alternativer:

    Hvis du skriver inn mysqlshow uten argumenter vil alle databaser vises, hvis du spesifiserer navnet på databasen vil alle tabeller i den vises.

    Mysqldump

    Brukes til å lage en dump av databaseinnholdet (backup). Du kan skrive databaseinnholdet til en fil. Syntaks:

    mysqldump [alternativer] ]]

    Mysqldump kan bruke følgende alternativer:

    Isamchk

    Ved å bruke dette verktøyet kan du gjenopprette tabeller, administrere tabeller og samle inn statistikk. Syntaks:

    isamchk [-?adeiqrsvwzIV] [-k #] [-O xxxx=størrelse] [-Si] [-Sr #] [-O keybuffer=#]
    [-O readbuffer=#] [-O writebuffer=#] [-O sort key blocks=#] filer

    Isamchk brukes til å sjekke konsistensen av tabeller og feilsøke problemer som dette kan forårsake. Hvis brukeren ofte sletter og legger til data i tabeller, vil dette verktøyet være svært nyttig. Isamchk kan bruke følgende alternativer:

    Når du bruker alternativet -r, må du stoppe mysqld. Før du starter, må du gå til katalogen der tabellen som må sjekkes eller repareres er plassert.

    Isamlog

    Transaksjonslogg, brukt med --log-isam=filnavn-alternativet til mysqld-daemonen. Filen registrerer alle endringer som skjer i databasen. Kan brukes til å gjenopprette databasen. Hvis det er en sikkerhetskopi av databasen før isam-loggen ble generert, kan informasjonen enkelt gjenopprettes. Hvis det ikke er noen kopi, må du bruke alle loggene fra begynnelsen av databasen.

    Safe_mysqld

    Skript for å starte mysqld-demonen i Unix-versjoner. Utføres ved systemoppstart. For å starte automatisk, må du legge til en oppføring i en av systeminitialiseringsfilene.

    Opprettelse av nettside | |