Príklady príkazového riadku Mysql. Práca s MySQL z príkazového riadku

Nižšie je uvedený zoznam najužitočnejších a často používaných príkazov MySQL s príkladmi.

mysql na začiatku riadku znamená, že príkaz sa vykoná po prihlásení MySQL.

Symbol # alebo $ na začiatku riadku znamená, že príkaz sa vykoná z príkazového riadku.

Ak chcete skontrolovať stav servera MYSQL urobiť:

Pre FreeBSD:

# stav služby mysql-server

V CentOS/RHEL:

# stav mysqld služby

MySQL z konzoly, ak je server MySQL je na tom istom hostiteľovi:

Na pripojenie k serveru MySQL z konzoly, ak je server MySQL sa nachádza na vzdialenom hostiteľovi db1.example.com:

$ mysql -u používateľské meno -p -h db1.example.com

Práca s databázami a tabuľkami - prezeranie, mazanie, úprava záznamov. Konzola

Vytvorte databázu na MySQL server:

Mysql vytvoriť databázu

Zobraziť zoznam všetkých databáz na serveri MySQL:

použitie mysql;

Zobraziť všetky tabuľky v databáze:

Mysql zobraziť tabuľky;

Pozrite si formát tabuľky v databáze:

mysql popísať;

Vymazať databázu:

Databáza kvapiek Mysql;

Odstráňte tabuľku z databázy:

Mysql drop tabuľka;

Zobraziť celý obsah tabuľky:

Mysql SELECT * FROM;

Zobraziť stĺpce a obsah stĺpcov vo vybratej tabuľke:

Mysql zobrazuje stĺpce od ;

Zobraziť riadky v konkrétnej tabuľke obsahujúcej „čokoľvek“:

Mysql SELECT * FROM WHERE = "čokoľvek";

Zobraziť všetky záznamy v konkrétnej tabuľke obsahujúcej „Bob“ a telefónne číslo „3444444:

Mysql SELECT * FROM WHERE meno = "Bob" AND phone_number = "3444444";

Zobraziť všetky záznamy, NIE obsahujúce meno „Bob“ a telefónne číslo „3444444“, zoradené podľa poľa telefónne číslo:

Mysql SELECT * FROM WHERE meno != " Bob " AND phone_number = " 3444444 " objednávka podľa telefónneho_čísla;

Zobraziť všetky položky začínajúce na „bob“ a telefónne číslo"3444444" v konkrétnej tabuľke:

Mysql SELECT * FROM WHERE meno ako "Bob %" AND phone_number = "3444444";

Zobraziť všetky položky začínajúce písmenami „bob“ a telefónnym číslom „3444444“, pričom počet položiek je obmedzený na 1 až 5:

Mysql SELECT * FROM WHERE meno ako "Bob %" AND phone_number = "3444444" limit 1,5;

Používanie regulárnych výrazov ("REGEXP BINARY") na vyhľadávanie záznamov. Napríklad pri vyhľadávaní bez rozlišovania malých a veľkých písmen nájdite všetky záznamy začínajúce písmenom A:

Mysql SELECT * FROM WHERE rec RLIKE "^a";

Zobraziť všetky jedinečné položky:

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

Zobrazte počet riadkov v tabuľke:

Mysql SELECT COUNT(*) FROM ;

Mysql SELECT SUM(*) FROM ;

Odstránenie stĺpca:

Mysql alter table drop column;

Pridanie stĺpca do databázy:

Mysql alter table pridať stĺpec varchar(20);

Zmena názvu stĺpca:

Mysql zmena tabuľky varchar(50);

Vytvorte stĺpec s jedinečným názvom, aby ste sa vyhli duplicitným názvom:

Mysql alter table add unique();

Zmena veľkosti stĺpca:

Mysql zmeniť tabuľku upraviť VARCHAR(3);

Odstránenie stĺpca z tabuľky:

Mysql alter tabuľka drop index;

Mysql LOAD DATA INFILE " /tmp/filename.csv " nahradiť DO TABUĽKOVÝCH POLI UKONČENÝCH "," RIADKY UKONČENÉ "n" (pole1,pole2,pole3);

Používatelia servera MySQL, heslá - pridávanie, zmena používateľov a hesiel. Konzola

Vytvorenie nového užívateľa - pripojenie k serveru MySQL ako root, prepnúť do databázy, pridať používateľa, aktualizovať oprávnenia:

# mysql -u root -p mysql použite mysql; mysql INSERT INTO user (Host,User,Password) VALUES("%"," username ", PASSWORD(" password ")); mysql flush privilégiá;

Zmena hesla používateľa z konzoly na vzdialenom hostiteľovi db1.example.org:

# mysqladmin -u username -h db1.example.org -p heslo " nove-heslo "

Zmena hesla používateľa z konzoly MySQL- pripojiť sa ako root, aktualizovať heslo, aktualizovať oprávnenia:

# mysql -u root -p mysql NASTAVTE HESLO PRE " užívateľa "@" názov hostiteľa " = HESLO(" heslo tu "); mysql flush privilégiá;

Obnovenie/zmena hesla koreňového servera MySQL- zastaviť MySQL, spustite bez tabuliek privilégií, pripojte sa ako root, nastavte nové heslo, ukončite a reštartujte MySQL.

# /etc/init.d/mysql stop # mysqld_safe -skip-grant-tables & # mysql -u root mysql použite mysql; mysql update user set password=PASSWORD(" newrootpassword ") kde User="root"; mysql; splachovacie privilégiá; mysql quit # /etc/init.d/mysql stop # /etc/init.d/mysql start

Nastavte heslo root, ak existuje heslo root.

# mysqladmin -u root heslo nové heslo

Aktualizujte heslo root:

# mysqladmin -u root -p staré heslo nové heslo

Nastavenie práva pripojiť sa k serveru z hostiteľa localhost s heslom "passwd" - pripojenie k subrootu, prepnutie do databázy, nastavenie privilégií, aktualizácia privilégií:

# mysql -u root -p mysql použite mysql; mysql udeľuje použitie na *.* bobovi @localhost identifikovanému pomocou " passwd "; mysql flush privilégiá;

Nastavenie používateľských oprávnení na používanie databázy - pripojenie ako root, prepnutie do databázy, nastavenie oprávnení, aktualizácia oprávnení:

# mysql -u root -p mysql použite mysql; mysql INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ("%","databasename","username","Y","Y","Y"," Y","Y","N"); mysql flush privilégiá;

Mysql udelí všetky privilégiá pre názov databázy .* používateľovi @localhost; mysql flush privilégiá;

Aktualizácia údajov v databáze:

Mysql UPDATE SET Select_priv = "Y",Insert_priv = "Y",Update_priv = "Y" kde = užívateľ";

Odstránenie riadku v tabuľke:

Mysql DELETE from where = "čokoľvek";

Aktualizácia práv v databáze:

Mysql flush privilégiá;

Zálohy - vytváranie, obnova databáz. Konzola

Vytvorte záložná kópia(vypísať) všetky databázy do súboru alldatabases.sql:

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

Zálohujte jednu databázu do súboru databasename.sql:

# mysql dump -u užívateľské meno -p heslo -databases databasename ; /tmp/databasename.sql

Zálohujte jednu tabuľku do súboru databasename.tablename.sql:

# mysql dump -c -u užívateľské meno -p heslo názov databázy názov tabuľky ; /tmp/databasename.tablename.sql

Obnovenie databázy (alebo tabuľky) zo zálohy:

# mysql -u užívateľské meno -p heslo názov databázy< /tmp/databasename.sql

Tvorba databázových tabuliek. Konzola

názvy stĺpcov sú uvedené malými písmenami;
VEĽKÉ písmená - typy a atribúty stĺpcov;
v (zátvorkách) - hodnota typu stĺpca.

Vytvorte tabuľku, príklad 1:

mysql CREATE TABLE (krstné meno VARCHAR(20), stredné počiatočné VARCHAR(3), priezvisko VARCHAR(35), prípona VARCHAR(3), officeid VARCHAR(10), užívateľské meno VARCHAR(15), užívateľské meno VARCHAR(8), email VARCHAR(35 ), telefón VARCHAR(25), skupiny VARCHAR(15), dátumová pečiatka DATE, časová pečiatka TIME, pgpemail VARCHAR(255));

Vytvorte tabuľku, príklad 2:

Mysql vytvoriť tabuľku (osoba INT(50) NOT NULL AUTO_INTCREMENT PRIMARY KEY, meno VARCHAR(35), stredné meno VARCHAR(50), priezvisko VARCHAR(50) predvolené "bato");

Je to možné nielen cez PHP. MySQL sa dodáva s konzolovým klientom na pripojenie k serveru MySQL. Konzola – to znamená, že program nemá rozhranie okna, ale iba rozhranie príkazového riadku, v ktorom sa pristupuje k databázam pomocou SQL dotazov.

Príkazy na pripojenie k MySQL in príkazový riadok a ešte viac oni sami SQL dotazy identické pre . V nasledujúcom texte pre stručnosť napíšem „MySQL“, ale v celom texte mám na mysli „MySQL alebo MariaDB“, keďže v r. v tomto prípade nie je medzi nimi rozdiel.

Po pripojení cez príkazový riadok k MySQL DBMS môžete vykonávať rôzne úlohy: prezerať databázy a ich tabuľky, odosielať dotazy do databáz a prijímať výsledky vykonávania týchto dotazov.

Na pripojenie k serveru MySQL použite príkaz klientskeho programu s názvom mysql.exe. Je potrebné ho spustiť, ale nie dvojitým kliknutím, ako bežný program, ale z príkazového riadku.

Začnime stlačením klávesovej skratky Win+r a poďme na to

Otvorí sa príkazový riadok.

Teraz musíme prejsť do priečinka so súborom mysql.exe. Tento priečinok kôš v adresári, kde je nainštalovaný váš MySQL DBMS. Napríklad mám MariaDB, ktorá je nainštalovaná v priečinku C:\Server\bin\mariadb\. Preto sa súbor, ktorý nás zaujíma, nachádza v adresári C:\Server\bin\mariadb\bin\. Ak chcete prejsť do tohto adresára, použite príkaz CD nasledujúcim spôsobom:

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

V tomto príkaze nahraďte C:\Server\bin\mariadb\bin\ správnou cestou pre váš systém

Teraz spustíme súbor mysql.exe. Nie je potrebné špecifikovať príponu súboru.exe - systém sám uhádne, čo máme na mysli. Musíme tiež použiť možnosť -u A -p. Po prvej možnosti musíte zadať používateľské meno - koreň. Po druhej možnosti je heslo pre používateľa. V mojom prípade nie je nastavené heslo, takže bežím bez možnosti -p:

Mysql -u root

Môže sa zdať, že sa toho veľa nezmenilo, ale nový príkazový riadok

MariaDB [(žiadne)]>

označuje, že sme pripojení k serveru MySQL. Presnejšie povedané, v mojom prípade sme pripojení k serveru MariaDB.

Ak chcete zobraziť zoznam databáz, zadajte príkaz:

ZOBRAZIŤ DATABÁZY;

Ak chcete odoslať následné dotazy do špecifickej databázy (napríklad test), použite príkaz POUŽÍVAŤ:

USE test;

Ak chcete zobraziť tabuľky vo vybratej databáze, spustite príkaz:

ZOBRAZIŤ TABUĽKY;

Vytvorme si tabuľku:

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

Pozrime sa ešte raz na obsah testovacej databázy.


Server mysqld môže spustiť a prevádzkovať každý používateľ. Ak chcete nakonfigurovať mysqld na spustenie pod užívateľským menom používateľa Unix, musíte urobiť nasledovné:

    Ak je server spustený, zastavte ho (použite vypnutie mysqladmin).

    Zmeňte adresáre a databázové súbory tak, aby užívateľské meno malo privilégiá na čítanie a zapisovanie súborov v týchto adresároch (možno to bude potrebné vykonať z koreňového účtu Unixu):

    Shell> chown -R meno_uzivatela /cesta/k/mysql/datadir

    Ak medzi adresármi alebo súbormi v adresári údaje MySQL Ak existujú symbolické odkazy, budete tiež musieť nasledovať tieto odkazy a zmeniť adresáre a súbory, na ktoré odkazujú. chown -R nemusí spracovať symbolické odkazy.

    Spustite server ako user_name alebo, ak máte MySQL 3.22 alebo vyšší, spustite mysqld ako root Unix účet a použite možnosť --user=user_name. mysqld sa prepne na spustenie v kontexte používateľského mena Unixu predtým, ako začne obsluhovať požiadavky na pripojenie.

    Ak chcete server spustiť automaticky ako daný užívateľ pri zavádzaní systému, pridajte užívateľa linky s uvedením mena užívateľa do skupiny súborov volieb /etc/my.cnf alebo do súboru volieb my.cnf z adresára údajov servera. Napríklad:

    User=user_name

V tomto bode by mal proces mysqld bežať hladko pod užívateľským menom Unix user_name . Obsah tabuliek privilégií sa však nemení. V predvolenom nastavení (ihneď po spustení inštalačného skriptu tabuľky privilégií mysql_install_db) je používateľ root MySQL jediným používateľom s právami na prístup k databáze mysql, ako aj na vytváranie a odstraňovanie databáz. Ak ste tieto povolenia nezmenili, sú stále platné. Prihlásenie sa ako používateľ Unixu iný ako root vám nebráni v prístupe k MySQL ako koreňovému používateľovi MySQL; stačí dať klientskemu programu voľbu -u root.

Všimnite si, že pracovať s MySQL ako užívateľský root MySQL zadaním -u root na príkazovom riadku nemá nič spoločné spustenie MySQL pod užívateľským rootom Unixu alebo pod akýmkoľvek užívateľom Unixu. Používateľské mená MySQL a prístupové práva nesúvisia s používateľskými menami Unix. Jediné spojenie s používateľskými menami Unixu je, že ak pri spustení klientskeho programu nie je zadaná voľba -u, klient sa pokúsi pripojiť pomocou názvu účtu Unix ako používateľského mena MySQL.

Ak Unixový server nie je veľmi dobre chránený alebo nepotrebuje zvýšené bezpečnostné opatrenia, mali by ste aspoň nastaviť heslo pre užívateľa root MySQL v tabuľkách práv. V opačnom prípade môže každý používateľ s účtom na tomto počítači spustiť mysql -u root db_name a robiť, čo chce, v MySQL.


Databázový server MySQL sa veľmi často používa na vytváranie dynamických webových riešení. Jedným z dôvodov (a možno aj dôsledkom) je, že takmer všetci hostitelia v tarifné plány na platforme UNIX ponúkajú jednu alebo viac databáz MySQL. Ak využívate virtuálny hosting, takmer nemusíte študovať správu serverov, stačí implementovať svoje programy podľa rozhrania, ktoré podporuje vami zvolený programovací jazyk (PHP má vstavané rozhranie na komunikáciu s databázou; vo verzii 5.0, podpora MySQL bola presunutá do samostatnej licencovanej knižnice). Všetky ostatné administratívne úkony – spustenie, zastavenie, reštart, správa práv a používateľov, zálohovanie a konfigurácia servera – vykonávajú správcovia poskytovateľa hostingu. Ak si však nainštalujete vlastný server alebo VDS (Virtual Dedicated Server), budete sa musieť postarať o všetky nuansy jeho prevádzky.

Konfiguráciu servera MySQL je možné vykonať dvoma spôsobmi – nastavením možností na príkazovom riadku pri spustení servera a prostredníctvom konfiguračného súboru my.ini. Mali by ste tiež rozlišovať medzi voliteľnými parametrami, ktoré je možné nastaviť pre aktuálnu reláciu servera a po reštarte sa stratia, a premennými prostredia, ktoré pôsobia globálne pre celý server a všetky databázy – možno ich zmeniť iba priamym zadaním nových hodnôt.

Zoznam všetkých dostupných príkazov a možností získate zadaním "mysqld --help" do konzoly. Treba povedať, že takmer všetky príkazy sú univerzálne a sú podporované na všetkých platformách, na ktorých beží MySQL server, no existuje niekoľko špecifických príkazov pre platformu Windows NT. Pre všetky príkazy existuje úplná syntax, keď príkaz začína dvoma pomlčkami (mínus) symbolmi "--", za ktorými bezprostredne, bez medzier, nasleduje názov príkazu (alebo možnosť, tieto slová budú ďalej synonymom). Ak potrebujete zadať hodnotu, za názvom príkazu nasleduje znak "=" a hodnota, ktorá sa má zadať. Skrátená forma obsahuje jednu pomlčku, názov príkazu je skrátený na jedno písmeno a parametre sú špecifikované oddelené medzerou. Iba možnosť "--socket" nemá krátky tvar (malo by to byť "-s"). Pamätajte, že písanie príkazov rozlišuje veľké a malé písmená a príkazy "-l" a "-L" sú úplne odlišné. V konfiguračnom súbore môžete zadať komentáre - sú oddelené znakom "#" a celý riadok je úplne ignorovaný.


Najprv sa zoznámime s najdôležitejšími príkazmi.

Príkaz --help je najdôležitejší, zobrazuje zoznam všetkých dostupných príkazov

Pomoc alebo -? (na serveroch verzie 4.1 a vyšších nie je krátky príkaz "-h"; okrem toho na spustenie príkazu musíte najprv zadať príkaz "--verbose") - zobrazí pomoc k dostupným príkazom a možnostiam, samotný server nie začať.
--version alebo -V - užitočné, ak potrebujete zistiť presnú verziu MySQL servera a platformu, na ktorej beží.
--user= alebo -u — určuje meno užívateľa, s ktorého právami sa server spúšťa. Vo všeobecnosti sa neodporúča spúšťať server ako root. Príklad: "--user=vasya".
-p - používa sa v spojení s príkazom "-u" a nastavuje heslo účtu užívateľ. Ak neexistuje žiadne heslo (predvolená inštalácia neposkytuje heslo pre užívateľa root), príkaz možno vynechať. Upozorňujeme, že syntax príkazu je odlišná - heslo je uvedené v riadku bezprostredne za príkazom, bez akýchkoľvek oddeľovačov. Príklad: "--user=vasya -pverygoodpassword", kde "verygoodpassword" je heslo používateľa "vasya".
-P alebo --port= - určuje číslo portu, cez ktorý sa vytvorí spojenie so serverom mysqld. Server štandardne počúva port TCP 3306, ale môžete nastaviť ktorýkoľvek iný. Upozorňujeme, že skrátená verzia príkazu sa píše s veľkým písmenom P, pretože malé písmeno p sa používa na nastavenie hesla používateľa.
--bind-address= - používa sa na vynútenie IP adresy servera, štandardne sa berie aktuálna adresa počítača.
--skip-networking - príkaz úplne zakáže použitie sieťové pripojenia Ak sa chcete pripojiť k serveru, môžete pracovať iba lokálne, z hostiteľa localhost.

Ďalšia skupina príkazov je určená na prácu s databázami.

Zobrazujte správy v ruštine - použite --language=russian

Datadir= alebo -h - umožňuje explicitne špecifikovať adresár, v ktorom sú uložené databázy. Môže sa vyžadovať, ak chcete uložiť databázy na inom oddiele alebo logický pohon alebo máte niekoľko serverov, ktoré používajú rôzne adresáre na ukladanie databáz. Je prijateľné zadať úplnú aj relatívnu cestu. Príklad: "mysqld --datadir=\home\vasya\bases".
--basedir= alebo -b — cesta k adresáru s nainštalovaným serverom.
--tmpdir= alebo -t — cesta k adresáru pre dočasné súbory.
--character-sets-dir=. Táto voľba určuje cestu k adresáru, ktorý obsahuje konfiguračné súbory pre rôzne kódovania. Tieto údaje sú dôležité pre správne triedenie a vyhľadávanie v reťazcových poliach tabuliek.
--language= alebo -L - umožňuje prepísať jazyk pre zobrazovanie správ a chýb. Predvolená hodnota je anglický jazyk, ale sú podporované aj iné - najmä ruština. Ak chcete nastaviť výstupný jazyk, musíte zadať jeho názov latinkou (ruština - pre ruštinu, angličtina - pre angličtinu). Aby príkaz fungoval, musí existovať adresár \share\, ale ak sa cesta k nemu líši od štandardnej, potom namiesto špecifikovania jazyka musíte opísať úplnú cestu k adresáru - napríklad "-- language=\user\vasya\mysql\langv\russian".
--default-character-set= - nastaví predvolené kódovanie znakov. Medzi možné hodnoty parametra znakovej sady patria: koi8_ru, german1, cp1251, win1251, koi8_ukr, win1251ukr, win1250 a ďalšie - celkovo existuje viac ako 20 rôznych kódovaní. Kódovanie je dôležité, ak sa v tabuľkách budú ukladať texty v rôznych jazykoch, a pri vyhľadávaní a triedení údajov je dôležité brať do úvahy národné charakteristiky.

Toto boli najdôležitejšie možnosti a príkazy, ktoré môžete potrebovať pri nastavovaní servera. Existuje veľa príkazov a na ich úplné preštudovanie použite vstavanú nápovedu (zavolajte cez príkaz --help).

Niektoré príkazy sú špecifické a dostupné len pre Windows NT

Existuje niekoľko špecifických príkazov pre platformu Windows NT.
--console - príkaz sa objavil vo verzii 3.22.4 a je navrhnutý tak, aby zobrazoval všetky chybové hlásenia v okne konzoly, čo je užitočné pri ladení alebo štúdiu vplyvu rôznych parametrov na server.
--install - funguje iba na platforme Win2000/XP a registruje server MySQL ako systémovú službu, ktorá sa spúšťa pri každom spustení systému a neustále existuje v Náhodný vstup do pamäťe(ak potrebujete zaregistrovať službu, ale používateľ ju spustí sám, príkaz bude vyzerať ako „--insatll-manual“). Príkaz "--remove" odstráni server zo zoznamu systémových služieb.
--standalone — spustite server pod Win2000/XP ako samostatný program, nie systémová služba.

Na tieto akcie je najvhodnejšie použiť grafickú utilitu WinMySQLAdmin, ktorá je súčasťou distribučnej sady.

S jeho pomocou môžete tiež vytvoriť správu o všetkých premenných a parametroch, s ktorými server beží, čo môže byť užitočné pri podrobnom štúdiu servera a optimalizácii výkonu. Iné grafické pomôcky, podobne ako MySQL Administrator, vám umožňujú tieto údaje nielen prezerať, ale aj meniť pomocou pohodlného rozhrania. Ale v prípade vzdialeného servera alebo s obmedzenými zdrojmi je najlepšie použiť správu príkazového riadku. okrem toho GUI nevylučuje potrebu poznať a pochopiť účel možností, ktoré sa menia.

Populárny systém správy databáz MySQLširoko používaný pre rôzne potreby, predovšetkým ako de facto štandard v oblasti internetového hostingu. Nemenej rozšírený je balík na správu tohto DBMS - phpMyAdmin. Bezpochyby je to dobrý a pohodlný produkt, ale veľmi často sa stáva, že zručnosti pracovať s týmto produktom úplne nahradia zručnosti pracovať so samotným DBMS. Preto sme sa v tomto materiáli rozhodli našim čitateľom predstaviť, ako vykonávať základné úlohy správy MySQL z príkazového riadku.

Ako si naši pravidelní čitatelia mohli všimnúť, dôsledne sa staviame proti používaniu rôznych typov ovládacích panelov začiatočníkmi, bez ohľadu na to, aké pohodlné a rozšírené sú. Zároveň ich existenciu nepopierame a sami ich s radosťou využívame pri každodenných činnostiach.

Je tu však jeden veľký rozdiel: špecialista, ktorý vie pracovať s príkazovým riadkom pomocou panela, nenahrádza schopnosť pracovať s produktom, ale iba si uľahčuje vykonávanie každodenných úloh. A začiatočník, zvyknutý vykonávať všetky akcie v paneli, ak je nedostupný, upadá do tichej paniky, pretože teraz musí do tejto nepochopiteľnej čiernej konzoly zadať nejaké „kúzla“...

V skutočnosti práca s DBMS na úrovni príkazového riadku nie je vôbec náročná a niektoré administratívne úlohy sa v ňom vykonávajú jednoduchšie a pohodlnejšie. Okamžite urobme rezerváciu: administráciou máme na mysli správu servera DBMS a nie samotných databáz. Dá sa s nimi samozrejme pracovať aj z príkazového riadku, no na to je lepšie použiť vhodnejšie nástroje.

Správa databáz a používateľov v MySQL

Ak by ste mali začať tancovať od sporáka, potom práca s DBMS by mala začať vytvorením databáz a používateľov týchto databáz. Úlohy sú v podstate jednoduché a dajú sa perfektne a hlavne jednoducho vyriešiť z konzoly. Pomôcka s rovnakým názvom je navrhnutá na prácu so serverom MySQL mysql, s ktorým sa pracuje v interaktívnom režime, takže najprv sa pripojíme k serveru:

Mysql -u root -p

Tam, kde prepínač -u určuje meno používateľa a -p určuje autentifikáciu heslom, syntax príkazu vám umožňuje zadať heslo tak, že ho zadáte bez medzier hneď za kľúč, ale v tomto prípade sa uloží do histórie príkazov, ktorá je nie úplne dobré, preto je lepšie zadávať heslo interaktívne. Po vykonaní tohto príkazu sa ocitneme v prostredí MySQL, čo naznačuje zmenený príkazový riadok.

Práca v tomto prostredí má svoje vlastné charakteristiky: každý príkaz musí končiť symbolom ; alebo \g, o ktorom sa mimochodom píše v prvom riadku pozdravu. Tento režim sa ukončí príkazom:

Povedzme si o jednej veľmi častej chybe: zabudli sme dať na koniec príkazu bodkočiarku. Čo robiť? Nevadí, stačí doplniť chýbajúce znaky v ďalšom riadku.

Najprv sa pozrime na zoznam databáz:

Zobraziť databázy;

Ako sa hovorí, bez zbytočných podrobností, ale pre väčšinu administratívnych úloh to stačí:

Zistenie zoznamu užívateľov je trochu náročnejšie, je uložený vo forme tabuľky databázy služieb mysql, preto píšeme malú prosbu:

Vyberte používateľa, hostiteľa z mysql.user;

Tím vyberte vyberie určené stĺpce užívateľ, hostiteľ, voľba from označuje odkiaľ ich vyberáme, teda z užívateľskej tabuľky databázy mysql.

Prvý stĺpec označuje používateľa, druhý - hostiteľ, na ktorom tomuto používateľovi pripojenia sú povolené, % - označuje akúkoľvek hodnotu. Upozorňujeme, že ak ivanov má v nastaveniach localhost, potom po pripojení k mysql podľa adresy 127.0.0.1 nebude môcť získať prístup, musíte to vziať do úvahy pri zadávaní údajov o pripojení k serveru DBMS vo svojich aplikáciách.

Vlastníkov databázy môžete zobraziť pomocou nasledujúceho dotazu:

Vyberte host,db,user z mysql.db;

Tu nie sú potrebné žiadne špeciálne komentáre. Napríklad, ivanov má práva na databázy s predponou ivanov_ pri pripojení cez localhost, a andrey na základy s predponou andrey_ na akomkoľvek hostiteľovi. Používateľské oprávnenia môžete zobraziť pomocou príkazu:

Zobraziť granty pre "ivanov"@"localhost";

Používateľské meno a hostiteľ zabalíme do jednoduchých úvodzoviek.

Prvý riadok hlási, že zadaný používateľ nemá privilégiá ( POUŽITIE) do ľubovoľnej tabuľky ľubovoľnej databázy ( *.* ), druhý riadok hovorí o všetkých hlavných privilégiách pre všetky tabuľky všetkých databáz s predponou ivanov_.

Podrobná analýza systému práv MySQL ďaleko presahuje rámec tohto článku, povedzme VŠETKY PRIVELÉGIA dáva užívateľovi všetky práva k jeho databázam, ale neumožňuje mu spravovať prístupové práva pre iných užívateľov. Na tento účel sa používa súbor práv VŠETKY PRIVELÉGIAS MOŽNOSŤOU GRANTU, ktorý má štandardne koreň. Pre jednoduchý používateľ takýto súbor práv je nadbytočný.

Skúsme vytvoriť nového používateľa:

Vytvorte používateľa "petrov"@"localhost" identifikovaného pomocou "hesla";

Syntax príkazu je jednoduchá, uvádzame meno používateľa a hostiteľa, ako aj identifikačné údaje vo forme hesla. Všetky odovzdané hodnoty sú zabalené do jednoduchých úvodzoviek. Po vytvorení používateľa mu musíte prideliť práva, to sa vykonáva pomocou príkazu GRANT. Po prvé, výslovne ho zbavíme privilégií k databázam iných ľudí:

Udeliť používanie na *.* na "petrov"@"localhost";

Potom môžeme nastaviť práva podľa vlastného uváženia, napríklad vydávanie plných práv k databázam so šablónou názvu petrov_:

Udeľte všetky privilégiá na `petrov\_%`.* "petrov"@"localhost";

Upozorňujeme, že vzor by mal byť zabalený so znakmi gravis (` ), ktoré sa nachádzajú na kľúči s ruským písmenom E.

Môžete udeliť práva na samostatnú databázu, ako je táto:

Udeľte všetky privilégiá na andrey_drupal8.* "petrov"@"localhost";

Na výber práv použite iba príkaz REVOKE, ktorý má podobnú syntax do (komu), nahraďte ho od (SZO). Napríklad:

Zrušte všetky privilégiá na andrey_drupal8.* od "petrov"@"localhost";

Aby server MySQL mohol uplatniť práva, musíte ho prinútiť znovu načítať vyrovnávaciu pamäť privilégií príkazom:

Flush privilégiá;

Možno budete musieť zmeniť aj heslo používateľa:

Nastaviť heslo pre "petrov"@"localhost" = password("newpassword");

Premenujte ho a premenovanie nemusí nevyhnutne znamenať zmenu používateľského mena; môžete zmeniť meno aj hostiteľa v akejkoľvek kombinácii:

Premenujte používateľa "petrov"@"localhost" na "petr"@"127.0.0.1";

A nakoniec odstráňte účet:

Vypustiť používateľa "petr"@"127.0.0.1";

Prejdime od používateľov k databázam, v najjednoduchšom prípade na vytvorenie novej databázy stačí príkaz:

Vytvorenie databázy petrov_newdb;

Tým sa vytvorí databáza s kódová stránka a predvolené porovnávacie kódovanie. Ak server DBMS nebol nakonfigurovaný samostatne, toto kódovanie s najväčšou pravdepodobnosťou bude latin1_swedish_ci, čo môže v niektorých prípadoch spôsobiť problémy, ak nie teraz, tak v budúcnosti, preto je dobrým pravidlom pri vytváraní databázy explicitne uviesť kódovanie. Pre UTF-8 by to bolo takto:

Vytvoriť databázu petrov_newdb predvolenú znakovú sadu utf8 collate utf8_general_ci;

Pre Windows-1251:

Vytvoriť databázu petrov_newdb predvolenú znakovú sadu cp1251 collate cp1251_general_ci;

Na odstránenie databázy použite:

Zahodiť databázu petrov_newdb;

Kontrola, optimalizácia, oprava chýb v MySQL databázach

Ako aktívna práca MySQL databázy môžu byť fragmentované a môžu obsahovať chyby v údajoch tabuľky. Teraz nehovoríme o závažných poruchách, takéto situácie by sa mali posudzovať individuálne, ale o najjednoduchších chybách, ktoré je možné úspešne odstrániť pomocou samotného DBMS. Na kontrolu, opravu a optimalizáciu je vhodné použiť nástroj mysqlcheck.

Ak chcete skontrolovať databázu, urobte kde andrey_drupal8- názov databázy:

Mysqlcheck -u root -p --check andrey_drupal8

Všetky databázy je možné skontrolovať naraz pomocou príkazu:

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

A keďže sa celý výstup s najväčšou pravdepodobnosťou nezmestí na obrazovku, má zmysel ho presmerovať na príkaz menej:

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

poznač si to menej umožňuje posúvať výstup nadol aj nahor pomocou šípok, stlačením ukončíte q.

Ak sa v niektorej z databáz našli chyby, mali by ste sa ich pokúsiť opraviť, ak to chcete urobiť, uveďte:

Mysqlcheck -u root -p --auto-repair andrey_drupal8

Na optimalizáciu použite kľúč - - optimalizovať, môžete optimalizovať jednu alebo viacero databáz, za týmto účelom ich uveďte za kľúčom -- databázy:

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

a tiež všetko naraz:

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

Nahrávanie a načítanie výpisov databázy MySQL

Ďalšou bežnou úlohou pri správe akéhokoľvek DBMS sú výpisy databázy, ktoré sa používajú ako na zálohovanie, tak aj na prenos alebo vytváranie kópií. Ak zálohovanie- proces je automatizovaný, potom je potrebné manuálne vytvárať kópie pre prenos na iný server alebo pred akýmikoľvek významnými zásahmi do štruktúry databázy.

A ak ide o veľké databázy, tak tu phpMyAdmin zlým pomocníkom, ovplyvňuje čas vykonávania skriptov, veľkosť sťahovaného súboru, dostupnú pamäť atď. A hoci pomocou neho stále môžete nahrať veľký výpis, možno ho nebudete môcť nahrať späť.

Začnime vytvorením výpisov; na tieto účely sa používa nástroj mysqldump, ktorého syntax sa riadi syntaxou mysqlcheck. Na stiahnutie výpisu použite príkaz:

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

Ak chcete uvoľniť niekoľko databáz naraz, použite kľúč -- databázy alebo --všetky-databázy na vytvorenie výpisu všetkých databáz naraz. Výstup príkazu by sa mal odoslať do súboru a uviesť jeho umiestnenie, v našom prípade je to súbor drupal8.sql vo vašom domovskom adresári. Môžete tiež poslať výstup do archivátora a okamžite prijať archív:

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

Vo všeobecnosti neodporúčame používať jeden výpis pre viacero databáz naraz, najlepšia možnosť bude výpis pre každú databázu súčasne s použitím kľúča --všetky-databázy opodstatnené v prípadoch, keď potrebujete rýchlo vytvoriť záložnú kópiu celého servera, napríklad pri aktualizácii alebo preinštalovaní DBMS, aby ste mohli rýchlo obnoviť informácie, ak sa niečo pokazí.

Ak chcete obnoviť databázu, musíte poslať výpis na vstup obslužného programu mysql; pre jednotlivé výpisy by ste mali vždy zadať cieľovú databázu, napríklad:

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

Cieľ nemusí byť nevyhnutne zdrojová databáza, ale všimnite si, že ak databáza už existuje, celý jej obsah bude nahradený obsahom výpisu.

Pre výpisy obsahujúce viac ako jednu databázu jednoducho zadajte:

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

V tomto prípade sa každá databáza načíta do vlastného zdroja, ak zdrojová databáza neexistuje, vytvorí sa.

Ako vidíte, vytváranie a obnovovanie výpisov pomocou príkazového riadku prebieha doslova v jednom riadku a je oveľa jednoduchšie a rýchlejšie ako používanie phpMyAdmin alebo podobných nástrojov.

Obnovenie zabudnutého root hesla MySQL

Ďalšia veľmi obľúbená úloha. Povedzme hneď, že nie je možné obnoviť heslo superužívateľa MySQL, ako každý iný používateľ, ale môžete ho zmeniť. Ak to chcete urobiť, musíte mať práva superužívateľa. operačný systém. Najprv zastavme službu DBMS:

Zastavenie služby mysql

Potom to spustíme bezpečnostný mód s preskakovaním tabuliek privilégií:

Mysqld_safe --skip-grant-tables &

Upozorňujeme, že po vykonaní tohto príkazu riadok príkazového riadka zmizne a zostane iba blikajúci kurzor. Priamo tam píšeme:

Mysql -u root

a dostaneme sa do prostredia mysql s root práva bez zadania hesla.

Zdá sa nám, že mnohí už tušili, čo ďalej, ale nastaviť heslo v tomto režime to nebude fungovať, takže musíte ísť iným spôsobom. Nezabudnite, že informácie o používateľoch sú uložené v tabuľke užívateľ servisná databáza mysql. Potom spustíme nasledujúci dotaz:

Update mysql.user nastaviť heslo = heslo ("nové heslo") kde user="root";

Dôležité! V nových verziách MySQL namiesto stĺpca heslo tabuľky užívateľ používa sa stĺpec autentifikačný_reťazec, tak namiesto toho nastaviť heslo by sa malo uviesť nastaviť autentifikačný_reťazec.

Táto požiadavka sa nainštaluje Nové heslo Nové heslo pre všetky riadky v stĺpci užívateľ ktoré sú uvedené koreň.

Aktualizujme vyrovnávaciu pamäť privilégií:

Flush privilégiá;

Opustíme režim:

Zastavme službu a spustite ju v normálnom režime:

Zastavenie služby mysql
spustenie služby mysql

Dúfame, že po prečítaní tohto článku získate základné zručnosti v práci s MySQL z príkazového riadku a budete sa môcť cítiť sebaisto aj vtedy, keď phpMyAdmin nie je dostupný a možno oceníte aj pohodlie príkazy konzoly a do panela sa budete prihlasovať stále menej a menej a radšej budete spravovať server priamo.