mysql shell что такое
зМБЧБ 3. оБЮБМП ТБВПФЩ У MySQL Shell
ьФБ УЕЛГЙС ПРЙУЩЧБЕФ, ЛБЛ ОБЮБФШ ТБВПФХ У MySQL Shell, ПВЯСУОЙЧ, ЛБЛ УПЕДЙОЙФШУС У УЕТЧЕТПН MySQL Й ЧЩВТБФШ ФЙР УЕУУЙЙ.
3.1. уПЕДЙОЕОЙС MySQL Shell
MySQL Shell НПЦЕФ УПЕДЙОЙФШУС У MySQL Server, ЙУРПМШЪХС X Protocol Й ЛМБУУЙЮЕУЛЙК РТПФПЛПМ MySQL. нПЦОП ЖПТНЙТПЧБФШ ЬЛЪЕНРМСТ УЕТЧЕТБ MySQL, У ЛПФПТЩН ТБВПФБЕФ MySQL Shell, УМЕДХАЭЙНЙ УРПУПВБНЙ:
ьФЙ ТБЪМЙЮОЩЕ УРПУПВЩ УПЕДЙОЙФШУС У УЕТЧЕТПН MySQL РПОЙНБАФ ПРТЕДЕМЕОЙЕ УПЕДЙОЕОЙС ЛБЛ:
оЕЪБЧЙУЙНП ПФ ФПЗП, ЛБЛ ЧЩ УПЕДЙОСЕФЕУШ, ЧБЦОП РПОСФШ, ЛБЛ РБТПМЙ ПВТБВПФБОЩ MySQL Shell. рП ХНПМЮБОЙА УЧСЪЙ, ЛБЛ РТЕДРПМБЗБЕФУС, ФТЕВХАФ РБТПМС. рБТПМШ (Х ЛПФПТПЗП ЕУФШ НБЛУЙНБМШОБС ДМЙОБ 128 ЪОБЛПЧ) ФТЕВХАФ РТЙ РТЙЗМБЫЕОЙЙ ЛП ЧИПДХ Ч УЙУФЕНХ, ЕЗП НПЦОП УПИТБОЙФШ, ЙУРПМШЪХС ТБЪДЕМ 3.2. еУМЙ РПМШЪПЧБФЕМШ ВЕЪРБТПМШОХА ХЮЕФОХА ЪБРЙУШ, ЙМЙ ЕУМЙ РТЙНЕОЕОБ ЙДЕОФЙЖЙЛБГЙС УПЛЕФБ (ОБРТЙНЕТ, ЙУРПМШЪХС УПЛЕФОЩЕ УПЕДЙОЕОЙС Unix), ОЕПВИПДЙНП СЧОП ПРТЕДЕМЙФШ, ЮФП ОЙЛБЛПК РБТПМШ ОЕ ПВЕУРЕЮЙЧБЕФУС, Й ЪБРТПУ РБТПМС ОЕ ФТЕВХЕФУС. юФПВЩ УДЕМБФШ ЬФП, ЙУРПМШЪХКФЕ ПДЙО ЙЪ УМЕДХАЭЙИ НЕФПДПЧ:
еУМЙ ЧЩ ОЕ ПРТЕДЕМСЕФЕ РБТБНЕФТЩ ДМС УЧСЪЙ, УМЕДХАЭЙЕ ХНПМЮБОЙС ЙУРПМШЪХАФУС:
юФПВЩ ПФЛМАЮЙФШ РЕТЕТЩЧ ХУФБОБЧМЙЧБАФ ЪОБЮЕОЙЕ connect-timeout = 0, ПЪОБЮБС, ЮФП ЛМЙЕОФ ЦДЕФ ДП ЪБЧЙУСЭЕЗП ПФ РМБФЖПТНЩ ФБКН-БХФБ УПЛЕФБ.
ч Unix MySQL Shell РП ХНПМЮБОЙА ЙУРПМШЪХЕФ УПЛЕФЩ Unix, ЛПЗДБ УМЕДХАЭЙЕ ХУМПЧЙС ЧЩРПМОЕОЩ:
ч Windows ДМС УПЕДЙОЕОЙК MySQL Shell ЙУРПМШЪХЕФУС ЛМБУУЙЮЕУЛЙК РТПФПЛПМ MySQL, ЕУМЙ ЧЩ ПРТЕДЕМСЕФЕ ЙНС ИПУФБ ЛБЛ ФПЮЛХ (.), MySQL Shell УПЕДЙОСЕФУС У ЙУРПМШЪПЧБОЙЕН ЙНЕОПЧБООПЗП ЛБОБМБ.
ч РПУМЕДПЧБФЕМШОПУФСИ ФЙРБ URI РХФШ Л ЖБКМХ УПЛЕФБ Unix ЙМЙ ЙНЕОПЧБООПНХ ЛБОБМХ Windows ДПМЦЕО ЙМЙ ВЩФШ ЪБЛПДЙТПЧБО, ЙУРПМШЪХС ЛПДЙТПЧБОЙЕ РТПГЕОФБ ЙМЙ ПЛТХЦЕО ЛТХЗМЩНЙ УЛПВЛБНЙ, ЮФП ХУФТБОСЕФ ОЕПВИПДЙНПУФШ ЛПДЙТПЧБФШ РТПГЕОФБНЙ ФБЛЙЕ ЪОБЛЙ, ЛБЛ ПВЭЙК ТБЪДЕМЙФЕМШ ЛБФБМПЗПЧ (/). еУМЙ РХФШ Л ЖБКМХ УПЛЕФБ Unix ЧЛМАЮЕО Ч РПУМЕДПЧБФЕМШОПУФШ ФЙРБ URI ЛБЛ ЮБУФШ УФТПЛЙ ЪБРТПУБ, ЧЕДХЭЙК УМЬЫ ДПМЦЕО ВЩФШ ЪБЛПДЙТПЧБООЩН РТПГЕОФПН, ОП ЕУМЙ ЬФП ЪБНЕОСЕФ ЙНС ИПУФБ, ЧЕДХЭЙК УМЬЫ ОЕ ДПМЦЕО ВЩФШ ЪБЛПДЙТПЧБО РТПГЕОФПН, ЛБЛ РПЛБЪБОП Ч УМЕДХАЭЙИ РТЙНЕТБИ:
фПМШЛП Ч Windows ЙНЕОПЧБООЩК ЛБОБМ ДПМЦЕО РТЕДЧБТЕО УЙНЧПМБНЙ \\.\ Б ФБЛЦЕ ВЩФШ ЙМЙ ЪБЛПДЙТПЧБООЩН, ЙУРПМШЪХС ЛПДЙТПЧБОЙЕ РТПГЕОФБ, ЙМЙ ПЛТХЦЕО ЛТХЗМЩНЙ УЛПВЛБНЙ, ЛБЛ РПЛБЪБОП Ч УМЕДХАЭЙИ РТЙНЕТБИ:
ч Windows, ЕУМЙ ПДОБ ЙМЙ ВПМЕЕ УЕУУЙК MySQL Shell УЧСЪБОЩ У ЬЛЪЕНРМСТПН MySQL Server, ЙУРПМШЪХС ЙНЕОПЧБООЩК ЛБОБМ Й ОЕПВИПДЙНП ЪБЛТЩФШ УЕТЧЕТ, ОЕПВИПДЙНП УОБЮБМБ ЪБЛТЩФШ УЕУУЙЙ MySQL Shell. уЕУУЙЙ, ЛПФПТЩЕ ЧУЕ ЕЭЕ УЧСЪБОЩ ФБЛЙН ПВТБЪПН, НПЗХФ ЪБУФБЧЙФШ УЕТЧЕТ ЧЙУЕФШ ЧП ЧТЕНС РТПГЕДХТЩ ЪБЛТЩФЙС. еУМЙ ЬФП ДЕКУФЧЙФЕМШОП РТПЙЪПКДЕФ, ЧЩКДЙФЕ ЙЪ MySQL Shell, Й УЕТЧЕТ РТПДПМЦЙФ РТПГЕДХТХ РБТЛПЧЛЙ.
3.1.1. уПЕДЙОЕОЙЕ, ЙУРПМШЪХС ПФДЕМШОЩЕ РБТБНЕФТЩ
ч ДПРПМОЕОЙЕ Л ПРТЕДЕМЕОЙА РБТБНЕФТПЧ УЧСЪЙ, ЙУРПМШЪХС РХФШ, ФБЛЦЕ ЧПЪНПЦОП ПРТЕДЕМЙФШ ДБООЩЕ П УЧСЪЙ ЛПЗДБ ЪБРХУЛБЕФУС MySQL Shell, ЙУРПМШЪХС ПФДЕМШОЩЕ РБТБНЕФТЩ ЛПНБОДЩ ДМС ЛБЦДПЗП ЪОБЮЕОЙС. рПМОЩК РЕТЕЮЕОШ ПРГЙК РТЙЧЕДЕО Ч РТЙМПЦЕОЙЙ A.1.
йУРПМШЪХКФЕ УЧСЪБООЩЕ РБТБНЕФТЩ УЧСЪЙ:
йУРПМШЪХКФЕ УМЕДХАЭЙЕ РБТБНЕФТЩ, ЮФПВЩ ХРТБЧМСФШ, ЛБЛ РБТПМШ ПВЕУРЕЮЙЧБЕФУС ДМС УЧСЪЙ:
оБРТЙНЕТ, ЮФПВЩ ПФЧЕТЗОХФШ user ЙЪ ПУОПЧОПЗП URI:
уМЕДХАЭЙЕ РТЙНЕТЩ РПЛБЪЩЧБАФ, ЛБЛ ЙУРПМШЪПЧБФШ РБТБНЕФТЩ ЛПНБОДЩ, ЮФПВЩ ПРТЕДЕМЙФШ УЧСЪЙ. хУФБОПЧЙФШ УЧСЪШ X-РТПФПЛПМБ У ХЛБЪБООЩН РПМШЪПЧБФЕМЕН РП РПТФХ 33065:
рПРЩФЛБ ХУФБОПЧЙФШ ЛМБУУЙЮЕУЛХА УЧСЪШ РТПФПЛПМБ MySQL У ХЛБЪБООЩН РПМШЪПЧБФЕМЕН УП УЦБФЙЕН:
3.1.2. йУРПМШЪПЧБОЙЕ ЪБЫЙЖТПЧБООЩИ УПЕДЙОЕОЙК
йУРПМШЪПЧБОЙЕ ЪБЫЙЖТПЧБООЩИ УПЕДЙОЕОЙК ЧПЪНПЦОП, ЛПЗДБ УПЕДЙОЕОЙЕ РП TLS (ЙОПЗДБ ОБЪЩЧБЕНЩК SSL) РПЪЧПМЕОП УЕТЧЕТПН MySQL. вПМШЫБС ЮБУФШ ЛПОЖЙЗХТБГЙЙ MySQL Shell ПУОПЧБОБ ОБ ЧБТЙБОФБИ, ЙУРПМШЪХЕНЩИ УЕТЧЕТПН MySQL, УН. Using Encrypted Connections.
юФПВЩ ЪБЭЙЭЕООПЕ УПЕДЙОЕОЙЕ РТЙ ЪБРХУЛЕ MySQL Shell, ЙУРПМШЪХКФЕ УМЕДХАЭЙЕ ПРГЙЙ ЛПНБОДЩ:
рХФЙ, ПРТЕДЕМЕООЩЕ Ч РПУМЕДПЧБФЕМШОПУФЙ URI, ДПМЦОЩ ВЩФШ ЪБЛПДЙТПЧБОЩ РТПГЕОФПН, ОБРТЙНЕТ:
3.1.3. уЧСЪЙ Ч JavaScript Й Python
лПЗДБ УЧСЪШ ХУФБОПЧМЕОБ, ЙУРПМШЪХС ПРГЙЙ ЛПНБОДЩ ЙМЙ РТЙ РПНПЭЙ МАВПК ЙЪ ЛПНБОД MySQL Shell, ЗМПВБМШОЩК ПВЯЕЛФ УЕУУЙЙ УПЪДБЕФУС. ьФБ УЕУУЙС ЗМПВБМШОБ, РПФПНХ ЮФП ЛПЗДБ-ФП УПЪДБООБС, ПОБ НПЦЕФ ЙУРПМШЪПЧБФШУС Ч МАВПН ЙЪ ТЕЦЙНПЧ MySQL Shell.
ч ДПРПМОЕОЙЕ Л ЗМПВБМШОПНХ ПВЯЕЛФХ УЕУУЙЙ, УЕУУЙЙ НПЗХФ ВЩФШ ХУФБОПЧМЕОЩ Й ОБЪОБЮЕОЩ ОБ ТБЪМЙЮОХА РЕТЕНЕООХА РТЙ РПНПЭЙ ЖХОЛГЙК, ДПУФХРОЩИ Ч НПДХМСИ mysql Й mysqlx ДМС JavaScript Й Python.
оБРТЙНЕТ, УМЕДХАЭЙЕ ЖХОЛГЙЙ ПВЕУРЕЮЙЧБАФУС ЬФЙНЙ НПДХМСНЙ:
чПЪЧТБЭЕООЩК ПВЯЕЛФ ClassicSession, ЛПФПТЩК ЙУРПМШЪХЕФ ФТБДЙГЙПООЩК РТПФПЛПМ MySQL Й ЙНЕЕФ ПЗТБОЙЮЕООЩК API.
connectionData НПЦЕФ ВЩФШ РПУМЕДПЧБФЕМШОПУФША URI ЙМЙ РБТБНЙ ЛМАЮ/ЪОБЮЕОЙЕ, УПДЕТЦБЭЙНЙ РБТБНЕФТЩ УЧСЪЙ. рПУНПФТЙФЕ Connecting Using a URI or Key-Value Pairs.
уМЕДХАЭЙК РТЙНЕТ РПЛБЪЩЧБЕФ, ЛБЛ УПЪДБФШ УЕУУЙА, ЙУРПМШЪХС X-РТПФПЛПМ:
уМЕДХАЭЙК РТЙНЕТ РПЛБЪЩЧБЕФ, ЛБЛ УПЪДБФШ ClassicSession УП УЦБФЙЕН:
3.1.3.1. йУРПМШЪПЧБОЙЕ ЪБЫЙЖТПЧБООЩИ УЧСЪЕК Ч ЛПДЕ
юФПВЩ ХУФБОПЧЙФШ ЪБЫЙЖТПЧБООХА УЧСЪШ, ХУФБОПЧЙФЕ ЙОЖПТНБГЙА SSL Ч УМПЧБТЕ connectionData :
3.2. рПДЛМАЮБЕНПЕ ИТБОЙМЙЭЕ РБТПМЕК
юФПВЩ УДЕМБФШ ТБВПФХ У MySQL Shell ВПМЕЕ ВЩУФТПК Й ВЕЪПРБУОПК, НПЦОП ХРПТУФЧПЧБФШ РБТПМШ ДМС УЧСЪЙ У УЕТЧЕТПН, ЙУРПМШЪХС ИТБОЙМЙЭЕ, ФБЛПЕ ЛБЛ keychain. чЩ ЧЧПДЙФЕ РБТПМШ ДМС УЧСЪЙ Ч ЙОФЕТБЛФЙЧОПН ТЕЦЙНЕ, Й ПО УПИТБОЕО У URL УЕТЧЕТБ ДМС УЧСЪЙ. оБРТЙНЕТ:
лПЗДБ РБТПМШ ДМС URL УЕТЧЕТБ УПИТБОЕО, ЛБЦДЩК ТБЪ, ЛПЗДБ MySQL Shell ПФЛТЩЧБЕФ УЕУУЙА, ЬФП ЧПУУФБОБЧМЙЧБЕФ РБТПМШ ЙЪ ИТБОЙМЙЭБ, ЮФПВЩ ЪБЗТХЪЙФШ Ч УЕТЧЕТ, ОЕ ЙНЕС ОЕПВИПДЙНПУФЙ ЧЧПДЙФШ РБТПМШ Ч ЙОФЕТБЛФЙЧОПН ТЕЦЙНЕ. фП ЦЕ УБНПЕ РТЙНЕОСЕФУС УЛТЙРФПЧ Ч MySQL Shell. еУМЙ ОЙЛБЛПЕ ИТБОЙМЙЭЕ ОЕ ЖПТНЙТХЕФУС, РБТПМШ ВХДЕФ ЪБРТПЫЕО Ч ЙОФЕТБЛФЙЧОПН ТЕЦЙНЕ.
MySQL Shell УПИТБОСЕФ ФПМШЛП URL Й РБТПМШ ЮЕТЕЪ УТЕДУФЧБ ИТБОЙМЙЭБ, ОП ОЕ УПИТБОСЕФ РБТПМШ УБНПУФПСФЕМШОП.
нБЛУЙНБМШОБС ДМЙОБ РБТПМС, ЛПФПТБС РТЙОСФБ ДМС УПЕДЙОЕОЙС У MySQL Shell, 128 ЪОБЛПЧ.
MySQL Shell ЙНЕЕФ ЧУФТПЕООХА РПДДЕТЦЛХ ДМС УМЕДХАЭЙИ ИТБОЙМЙЭ:
лПЗДБ MySQL Shell ТБВПФБЕФ Ч ЙОФЕТБЛФЙЧОПН ТЕЦЙНЕ, РПЙУЛ РБТПМС ЧЩРПМОСЕФУС ЛБЦДЩК ТБЪ, ЛПЗДБ ОПЧБС УЕУУЙС ОБЮЙОБЕФУС, Й РПМШЪПЧБФЕМШ ДПМЦЕО ЕЗП ЧЧЕУФЙ. рЕТЕД ЬФЙН ИТБОЙМЙЭЕ ЪБРТБЫЙЧБЕФУС ДМС РБТПМС, ЙУРПМШЪХС URL УЕУУЙЙ. еУМЙ УПЧРБДЕОЙЕ ОБКДЕОП, ЬФПФ РБТПМШ ЙУРПМШЪХЕФУС, ЮФПВЩ ПФЛТЩФШ УЕУУЙА. еУМЙ ЧПУУФБОПЧМЕООЩК РБТПМШ ОЕДЕКУФЧЙФЕМЕО, УППВЭЕОЙЕ ДПВБЧМСЕФУС Ч ЦХТОБМ ТЕЗЙУФТБГЙЙ, РБТПМШ УФЕТФ ЙЪ ИТБОЙМЙЭБ Й MySQL ЪБРТПУЙФ РБТПМШ СЧОП.
бЧФПНБФЙЮЕУЛПЕ УПИТБОЕОЙЕ РБТПМС Й РПЙУЛ ЧЩРПМОСАФУС ЛПЗДБ:
3.2.1. чБТЙБОФЩ ОБУФТПКЛЙ РБТПМС
shell.options.credentialStore.helper = » login-path «
лПЗДБ ЬФП ПФЛМАЮЕОП, ЙУРПМШЪПЧБОЙЕ ЧУЕИ НБОДБФОЩИ НЕФПДПЧ ИТБОЙМЙЭБ MySQL Shell, ПВУХЦДЕООЩИ ЪДЕУШ, РТЙЧПДЙФ Л ЙУЛМАЮЕОЙА.
shell.options.credentialStore.savePasswords = » value «
уФТПЛБ, ЛПФПТБС ХРТБЧМСЕФ БЧФПНБФЙЮЕУЛЙН ИТБОЕОЙЕН РБТПМЕК. дПРХУФЙНЩЕ ЪОБЮЕОЙС ЪДЕУШ:
shell.options.credentialStore.excludeFilters = [» *@myserver.com:* «];
ъОБЮЕОЙЕ РП ХНПМЮБОЙА: РХУФПК УРЙУПЛ.
3.2.2. тБВПФБ У ДБООЩНЙ БЧФПТЙЪБГЙЙ
уМЕДХАЭЙЕ ЖХОЛГЙЙ РПЪЧПМСАФ ЧБН ТБВПФБФШ У ИТБОЙМЙЭЕН РБТПМЕК. нПЦОП РЕТЕЮЙУМЙФШ ДПУФХРОЩЕ ИТБОЙМЙЭБ, Б ФБЛЦЕ РТПУНПФТЕФШ, УПИТБОЙФШ Й РПМХЮЙФШ ДБООЩЕ БЧФПТЙЪБГЙЙ.
var list = shell.listCredentialHelpers();
shell.storeCredential( url [, password ]);
shell.deleteCredential(url);
хДБМСЕФ ДБООЩЕ БЧФПТЙЪБГЙЙ ДМС ДБООПЗП URL, ЙУРПМШЪХС ФЕЛХЭЕЕ ИТБОЙМЙЭЕ ( credentialStore.helper ). вТПУБЕФ ПЫЙВЛХ, ЕУМЙ ПРЕТБГЙС ХДБМЕОЙС ФЕТРЙФ ОЕХДБЮХ, ОБРТЙНЕТ, ИТБОЙМЙЭЕ ОЕ ТБВПФБЕФ ЙМЙ ОЕФ ОЙЛБЛПЗП НБОДБФБ ДМС ДБООПЗП URL.
shell.deleteAllCredentials();
хДБМСЕФ ЧУЕ ДБООЩЕ БЧФПТЙЪБГЙЙ, ХРТБЧМСЕНЩЕ ФЕЛХЭЙН ИТБОЙМЙЭЕН ( credentialStore.helper ). вТПУБЕФ ПЫЙВЛХ, ЕУМЙ ПРЕТБГЙС ФЕТРЙФ ОЕХДБЮХ.
var list = shell.listCredentials();
чПЪЧТБЭБЕФ УРЙУПЛ ЧУЕИ URL, УПИТБОЕООЩИ ФЕЛХЭЙН ИТБОЙМЙЭЕН ( credentialStore.helper ).
3.3. уЕУУЙЙ MySQL Shell
ьФБ УЕЛГЙС ПВЯСУОСЕФ ТБЪМЙЮОЩЕ ФЙРЩ УЕУУЙК Ч MySQL Shell, ЛБЛ УПЪДБФШ Й ОБУФТПЙФШ ЙИ.
3.3.1. пВЪПТ УЕУУЙК MySQL Shell
уМЕДХАЭЙЕ ФЙРЩ ПВЯЕЛФБ Session ЙНЕАФУС:
фЙР ClassicSession УРЕГЙЖЙЮЕО ДМС MySQL Shell Й ОЕ НПЦЕФ ЙУРПМШЪПЧБФШУС У ДТХЗЙНЙ ЧБТЙБОФБНЙ X DevAPI, ФБЛЙНЙ ЛБЛ MySQL Connectors.
чЩВПТ ФЙРБ УЕУУЙЙ MySQL Shell
юФПВЩ ЧЩВТБФШ, ЛБЛПК ФЙР УЕУУЙЙ ЙУРПМШЪПЧБФШ, ПРТЕДЕМСС РПУМЕДПЧБФЕМШОПУФШ ФЙРБ URI, ЙУРПМШЪХАФ ПДЙО ЙЪ ЬФЙИ ЧБТЙБОФПЧ:
уПЪДБОЙЕ УЕУУЙЙ, ЙУРПМШЪХС ЛПНБОДЩ MySQL Shell
3.4. зМПВБМШОЩЕ РЕТЕНЕООЩЕ MySQL Shell
MySQL Shell ТЕЪЕТЧЙТХЕФ ПРТЕДЕМЕООЩЕ РЕТЕНЕООЩЕ ЛБЛ ЗМПВБМШОЩЕ РЕТЕНЕООЩЕ, ЛПФПТЩЕ ОБЪОБЮЕОЩ ОБ ПВЩЮОП ЙУРПМШЪХЕНЩЕ ПВЯЕЛФЩ Ч УЛТЙРФБИ. ьФБ УЕЛГЙС ПРЙУЩЧБЕФ ДПУФХРОЩЕ ЗМПВБМШОЩЕ РЕТЕНЕООЩЕ Й РТЕДПУФБЧМСЕФ РТЙНЕТЩ ТБВПФЩ У ОЙНЙ. зМПВБМШОЩЕ РЕТЕНЕООЩЕ:
ьФЙ УМПЧБ ТЕЪЕТЧЙТХАФУС Й ОЕ НПЗХФ ЙУРПМШЪПЧБФШУС, ОБРТЙНЕТ, ЛБЛ ОБЪЧБОЙС РЕТЕНЕООЩИ.
3.5. рТЙНЕОЕОЙЕ Pager
оБКДЙ УЧПЙИ ЛПММЕЗ! |
чЩ НПЦЕФЕ ОБРТБЧЙФШ РЙУШНП БДНЙОЙУФТБФПТХ ЬФПК УФТБОЙЮЛЙ, бМЕЛУЕА рБХФПЧХ.
рТЙМПЦЕОЙЕ A. лПНБОДЩ MySQL Shell
ьФП РТЙМПЦЕОЙЕ ПРЙУЩЧБЕФ ЛПНБОДЩ mysqlsh.
A.1. mysqlsh : MySQL Shell
MySQL Shell РТПДЧЙОХФЩК ЛМЙЕОФ ЛПНБОДОПК УФТПЛЙ Й ТЕДБЛФПТ ЛПДБ ДМС MySQL. ч ДПРПМОЕОЙЕ Л SQL MySQL Shell ФБЛЦЕ РТЕДМБЗБЕФ ЧПЪНПЦОПУФЙ УЛТЙРФПЧ JavaScript Й Python. дМС РПМХЮЕОЙС ЙОЖПТНБГЙЙ ПВ ЙУРПМШЪПЧБОЙЙ MySQL Shell РПУНПФТЙФЕ MySQL Shell 8.0 (ЮБУФШ MySQL 8.0). лПЗДБ MySQL Shell УЧСЪБОБ У MySQL Server ЮЕТЕЪ X Protocol, X DevAPI НПЦЕФ ЙУРПМШЪПЧБФШУС, ЮФПВЩ ТБВПФБФШ У ДБООЩНЙ П ДПЛХНЕОФЕ Й ФБВМЙГБНЙ, УН. Using MySQL as a Document Store. MySQL Shell ЧЛМАЮБЕФ AdminAPI, ЛПФПТЩК РПЪЧПМСЕФ ЧБН ТБВПФБФШ У ЛМБУФЕТПН InnoDB, УН. InnoDB Cluster.
фБВМЙГБ A.1. пРГЙЙ mysqlsh
нЕФПД БХФЕОФЙЖЙЛБГЙЙ. ъБЧЙУЙФ ПФ РМБЗЙОБ ЙДЕОФЙЖЙЛБГЙЙ, ЙУРПМШЪХЕНПЗП ДМС РБТПМС. MySQL Shell Ч ОБУФПСЭЕЕ ЧТЕНС РПДДЕТЦЙЧБЕФ УМЕДХАЭЙЕ НЕФПДЩ:
ч ТЕЦЙНЕ SQL РТЕЦДЕ, ЮЕН ОБРЕЮБФБФШ ЧПЪЧТБЭЕООЩК ОБВПТ ТЕЪХМШФБФПЧ ДМС ЪБРТПУБ, ЧЩЧПДСФУС НЕФБДБООЩЕ ДМС ЛБЦДПК ЛПМПОЛЙ Ч ОБВПТЕ ТЕЪХМШФБФПЧ, ФБЛЙЕ ЛБЛ ФЙР УФПМВГБ Й УПРПУФБЧМЕОЙЕ.
чЛМАЮЙФШ X Plugin ОБ УЧСЪЙ У УЕТЧЕТПН MySQL 5.7, ЮФПВЩ НПЦОП ВЩМП ЙУРПМШЪПЧБФШ УЧСЪЙ X-РТПФПЛПМБ ДМС РПУМЕДХАЭЙИ УЧСЪЕК. фТЕВХЕФ УЧСЪЙ, ЙУРПМШЪХС ЛМБУУЙЮЕУЛЙК РТПФПЛПМ MySQL.
рБТПМШ, ЮФПВЩ ЙУРПМШЪПЧБФШ, УПЕДЙОССУШ У УЕТЧЕТПН. нБЛУЙНБМШОБС ДМЙОБ РБТПМС, ЛПФПТБС РТЙОСФБ ДМС УПЕДЙОЕОЙС У MySQL Shell, СЧМСЕФУС 128 УЙНЧПМБНЙ.
зБТБОФЙТХЕФ, ЮФП ГЕМЕЧПК УЕТЧЕТ ЬФП ЮБУФШ ЛМБУФЕТБ InnoDB Й ЕУМЙ ПО ОЕ РЕТЧЙЮОЩК, ОБИПДЙФ РЕТЧЙЮОЩК Й УПЕДЙОСЕФУС У ОЙН. MySQL Shell ЧЩМЕФБЕФ У ПЫЙВЛПК, ЕУМЙ ЮФП-МЙВП УМЕДХАЭЕЕ ЧЕТОП, ЙУРПМШЪХС ЬФПФ ЧЩВПТ:
зБТБОФЙТХЕФ, ЮФП ГЕМЕЧПК УЕТЧЕТ ЬФП ЮБУФШ ЛМБУФЕТБ InnoDB Й ЕУМЙ ПО ОЕ ЧФПТЙЮОЩК, ОБИПДЙФ ЧФПТЙЮОЩК Й УПЕДЙОСЕФУС У ОЙН. MySQL Shell ЧЩМЕФБЕФ У ПЫЙВЛПК, ЕУМЙ ЮФП-МЙВП УМЕДХАЭЕЕ ЧЕТОП, ЙУРПМШЪХС ЬФПФ ЧЩВПТ:
хУФБОБЧМЙЧБЕФ ЪОБЮЕОЙЕ resultFormat ПРГЙЙ MySQL Shell ДМС ЬФПК УЕУУЙЙ. жПТНБФЩ УМЕДХАЭЙЕ:
рТПЙЪЧПДЙФ ЛТБУЙЧЩК JSON.
рТПЙЪЧПДЙФ УЩТПК JSON.
оБКДЙ УЧПЙИ ЛПММЕЗ! |
чЩ НПЦЕФЕ ОБРТБЧЙФШ РЙУШНП БДНЙОЙУФТБФПТХ ЬФПК УФТБОЙЮЛЙ, бМЕЛУЕА рБХФПЧХ.
Русские Блоги
MySQL Shell: 01 от входа до круга
Следующая статья принадлежит универсальной ремонтной лаборатории, автор г-н Гонг.
Что такое MySQL Shell
Вы можете использовать его для выполнения запроса данных, обновления и различных операций управления.
Как официальный будущий основной продукт Oracle: MySQL-Innodb-Cluster, один из трех сторонников, можно увидеть, насколько он важен.
начать использоватьMySQL Shell
ссылка для скачивания:
Здесь мы скачиваем последнюю версию MySQL8
Его можно установить напрямую, и в принципе не нужно полагаться на пакеты.
Пока команда mysql изменена на mysqlsh, ее можно использовать, а другие параметры остаются неизменными.
Пользовательское приглашение
После установки сначала сделайте болезненный тест на разогрев тела.
Как и MongoDB, оболочка MySQL может использовать приглашение для определения своего собственного приглашения.
В разных операционных системах расположение файла конфигурации командной строки по умолчанию отличается:
C:\Program Files\MySQL\MySQL Shell 8.0\share\mysqlsh\prompt
Этот шаблон используется по умолчанию при установке Linux 7.
Официальный уход предоставляет множество шаблонов для использования:
Перейти на другие шаблоны можно двумя способами:
Здесь мы делаем индивидуальную конфигурацию, приглашение по умолчанию выглядит так:
Затем, изменив конфигурацию, добавьте информацию о версии для подключения к базе данных в командной строке:
Добавьте следующий код:
Проверив эффект, мы увидим, что это база данных версии 5.7.29.
Раньше я построил в контейнере 4 версии базы данных, соответствующие 4 портам 3305 3306 3307 3308.
(Для конкретных методов, пожалуйста, обратитесь к моей предыдущей статье:Развлекайтесь с MySQL в Docker )
Соответствующая версия, имя хоста и порт могут быть отображены. Обратите внимание, что SSL также используется выше 5.7.
Вы также можете настроить шрифт, например, сделать его таким.
Проверить 3 функциональных режима
Переключение между 3 режимами:
SQL-операции уже могут выполняться автоматически
Операция Python, вы можете напрямую выполнить написанную вами программу py:
Способ JS может выполнять операцию с документом json, здесь сначала создайте коллекцию
Затем вставьте данные в Коллекцию
Запросить данные json и, наконец, удалить тестовую таблицу
JS также может выполнять различные задачи управления базами данных
Например, управление Replicaset, эта недавно выпущенная конфигурация функции относительно громоздка, и я напишу статью позже.
Функция проверки обновлений
Oracle тайно интегрировала в MySQL Shell 3 небольших инструмента, одним из которых является функция проверки обновлений:
Он может проверить, готов ли экземпляр сервера MySQL к обновлению.
Но обратите внимание на следующие 2 пункта:
Поддерживает только проверку версий MySQL после MySQL 5.7
Поддерживает только обновления между версиями GA. Не поддерживает обновление с версий MySQL 5.7 или 8.0, отличных от GA.
Тестируем на библиотеке 5.7:
Но в версии 5.6 он подскажет, что не поддерживает
Год назад в основном никаких обновлений не делалось, и дорога скучная.Учащиеся, которые проходят мимо, могут прочитать следующие исторические статьи.
Желаю вам счастливого и расслабляющего Весеннего фестиваля.
# Архив исторических статей
MySQL консоль: 35 основных команд
Доброго времени суток, коллеги 🙂
Да, именно коллеги, потому как простому смертному MySQL командная строка (или MySQL Shell, как её ещё любят называть разработчики), равно как и работа с MySQL в консоли, вряд ли пригодится.
Для того, чтобы данная тема была интересна, нужно быть, как минимум, бэкэнд-разработчиком или начинающим системным администратором, которые не пользуются phpMyAdmin и другими интерфейсами принципиально.
Хотя, возможно, вы просто подписаны на уведомления и решили прочитать новую статью из чистого любопытства.
Ну что ж… Весьма похвально 🙂
В любом случае, я постараюсь, чтобы материал был одинаково интересен и понятен всем, кем бы вы ни работали и как бы вы ни были связаны с программированием. Собственно, чего я своими статьями и добиваюсь, в принципе 🙂
Итак, сегодня речь пойдёт о том, как работать с MySQL через командную строку на сервере. Я расскажу, в каких ситуациях данные знания вам могут пригодиться, как подключиться к базе данных MySQL в консоли, запускать командную строку MySQL и производить основные действия с БД, таблицами и их записями.
Одним словом, мы рассмотрим весь жизненный цикл БД и все основные операции, которые могут вам понадобиться в процессе. В результате у нас получится что-то вроде шпаргалки системного администратора, которой я сам буду активно в будущем пользоваться, т.к. всего в памяти не удержишь.
Когда MySQL командная строка может пригодиться?
Сразу скажу, что, если вы не собираетесь работать системным администратором или деплойщиком, то каждый день работать с MySQL через командную строку вам вряд ли понадобиться. Для повседневного использования вполне подойдёт старый добрый phpMyAdmin либо какой-то другой веб интерфейс или приложение для работы с MySQL.
Хотя, здесь имеет место привычка. Лично у меня есть знакомые из ранга «трушных кодеров», которые являются фанатами консоли со времён MS-DOS и чистого Linux, видимо, где работать с ОС можно было только из консоли.
Поэтому они и презирают всякого рода графические «примочки». Хотя, большинству пользователей подойдут именно они.
Лично я сам предпочитаю использовать phpMyAdmin как основную программу при создании сайтов для работы с MySQL, т.к. по природе своей являюсь визуалом. Однако, иногда на практике встречаются ситуации, когда знания MySQL командной строки и умения работы с MySQL в консоли сервера просто необходимы.
У меня на данный момент их было три:
Но, повторюсь, работа с MySQL в консоли и командной строке вполне подходит и для повседневного использования. Все известные визуальные программы для работы с БД всё равно работают на основе консольных команд MySQL. Поэтому, кому как нравится 🙂
Запуск консоли на разных ОС
Поскольку я буду демонстрировать работу с командной строкой MySQL в консоли сервера, то для начала неплохо бы было её запустить.
Действие простое, многим знакомое, для которого достаточно знания «горячих клавиш».
Запуск консоли в Windows:
Запуск консоли в Linux дистрибутивах (терминала): в Ubuntu, с которой я работал, достаточно системной комбинации клавиш Ctrl+Alt+T. Про остальные ОС на базе Linux ничего сказать не могу.
Немного стыдно даже такую информацию публиковать на случай, если на данную статью случайно набредёт какой-то профессиональный системный администратор с бородатым опытом, т.к. он подумает: «Автор считает своих читателей программистами, но при этом учит запускать консоль… Псих какой-то :-)».
Да, вполне логично 🙂 Но я просто учитываю ситуации, что наряду с профессиональными разработчиками сюда могут попасть и новички. Поэтому я и стараюсь делать информацию полной и доступной для всех категорий пользователей, о чём уже говорил.
Основные команды консоли MySQL
Итак, первым делом, нам нужно получить доступ к MySQL командной строке в консоли. Для этого открываем консоль сервера и, если у вас MySQL установлен глобально в виде сервиса, то для «проверки связи» прописываем следующее:
Консольная команда mysql позволяет нам запустить одноименную утилиту, являющуюся командной строкой MySQL.
Это позволит нам узнать версию MySQL, установленного на компьютере и убедиться, что он вообще установлен как служба. Если это так, то в ответ в консоли вы увидите примерно следующий текст: mysql Ver 14.14 Distrib 5.7.16, for Win64 (x86_64).
Да, я не «трушный кодер», потому что сижу под Виндой 🙂 Но, не суть. На Unix системах процедура будет такой же.
Если же вдруг MySQL у вас не установлен глобально на компьютере или у вас есть необходимость работы с несколькими версиями MySQL, при которой есть только каталоги с файлами и библиотеками MySQL, то запуск MySQL через консоль будет выглядеть следующим образом.
В консоли переходим в каталог, где находится исполняемый файл MySQL (на Windows, по крайней мере, это mysql.exe) следующей командой:
Путь к дистрибутиву у вас, естественно, может отличаться. В качестве примера я решил запустить одну из версий MySQL, входящих в комплект OpenServer.
И запускаем MySQL, проверяя попутно его версию:
В результате в консоль должно было вывестись аналогичное первому случаю сообщение mysql Ver 14.14 Distrib 5.7.16, for Win64 (x86_64).
Всё, с запуском MySQL командной строки через консоль сервера разобрались, теперь будем подключаться непосредственно к серверу MySQL.
Подключение к серверу MySQL в консоли
Cервер MySQL может не обязательно находиться на той же машине, на которой вы пытаетесь получить к нему доступ в консоли. Следовательно, для того, чтобы подключение к удалённому серверу MySQL через консоль было возможно, утилита mysql имеет множество параметров, с помощью которых можно указывать необходимые настройки.
Для того, чтобы запустить командную строку MySQL в консоли, нам достаточно прописать в консоли сервера следующее:
Однако, в таком случае вы получите следующую ошибку: ERROR 1045 (28000): Access denied for user ‘ODBC’@’localhost’ (using password: NO). Так сообщение об ошибке выглядит у меня на Windows. Если же вы используете Linux, то вместо ODBC будет имя вашего системного пользователя, под которым вы совершаете действия в системе.
Всё это потому, что по умолчанию при подключении к MySQL серверу в консоли используется пользователь ODBC на Windows без пароля и системный юзер на Linux с его же паролем. Хост по умолчанию localhost, т.е. данный пользователь может подключаться только с локальной машины.
Поэтому выхода у вас два: либо использовать другого пользователя для входа в командную строку MySQL, либо создать пользователя MySQL с нужной учёткой. Но для второго способа нам без первого всё равно не обойтись 🙂 Поэтому для начала подключаемся к серверу MySQL под стандартным пользователем root, который создаётся при установке MySQL на компьютер и для которого по умолчанию разрешён доступ с localhost:
При требовании ввести пароль просто нажимаем Enter (если вы его не вводили, конечно, при установке MySQL). После этого вы будете подключены к серверу MySQL с присвоением вам идентификатора подключения и получением доступа к командной строке MySQL.
Если же вы захотите подключиться к серверу MySQL, имеющему специфическое имя хоста или IP или захотите залогиниться под другим пользователем, то используйте команду следующего формата:
Вместо кириллических символов с подчёркиванием, естественно, нужно ввести свои данные латинницей. Кстати, данную команду при желании можете прописать немного в другом формате:
Если по какой-то причине вы не хотите, чтобы ваш пароль подключения к MySQL отображался в консоли (что правильно, на самом деле), можете использовать следующую команду:
Поскольку пароль не указан явно, вам будет предложено его ввести на следующем шаге. Причём, введённые вами символы отображены не будут даже в виде звёздочек (wildcards), вместо этого будет просто пустая строка.
Помимо указанных настроек подключения возможно использовать следующие параметры, значения которым будут указываться аналогичным с вышеперечисленными образом:
Понятное дело, что на этом список всех параметров подключения к MySQL серверу не ограничивается. В реальности их намного больше.
Если по какой-то причине стандартный вариант с указанием хоста, пользователя и пароля вам не подойдёт, то для выяснения полного перечня параметров подключения вам будет полезна следующая информация — https://dev.mysql.com/doc/refman/5.7/en/connecting.html
Как создать базу данных в MySQL консоли
После того, как мы подключились к серверу MySQL и запустили командную строку MySQL, время начать жизненный цикл нашей базы данных сайта, который стартует с её создания. Для создания базы данных MySQL через командную строку нужно ввести следующую команду:
То же самое действие можно сделать и с помощью специальной MySQL утилиты mysqladmin. Запускается она изолированно от командной строки MySQL, т.е. для её использования вам нужно будет выйти из неё или открыть новую консоль сервера.
А затем вызвать следующую команду:
К слову, с помощью утилиты mysqladmin можно не только создавать и удалять базы данных, не заходя в консоль MySQL, но и оперировать серверной конфигурацией, процессами MySQL, управлять репликациями, пинговать сервера и делать ещё много всего интересного.
Более подробно о mysqladmin можете прочитать здесь — https://dev.mysql.com/doc/refman/5.7/en/mysqladmin.html
Как создать пользователя MySQL в командной строке
Не часто, но иногда требуется создать нового пользователя MySQL. Причём, в консольном режиме.
В командной строке MySQL это делается следующим образом:
Пользователь создан. Параметр хост_или_IP_машины означает, что при создании пользователя нужно указывать IP, с которого он сможет подключаться к серверу, или имя хоста (подойдёт доменное имя рабочей машины в сети).
Кстати, при указании хоста для подключения к MySQL серверу можно использовать символ процента — %, который означает, что создаваемый пользователь может соединяться с сервером MySQL с любого IP адреса или хоста.
При этом нужно учитывать, что в данном случае localhost не входит в список адресов, указываемых с помощью %, т.к. localhost обозначает подключение через UNIX сокет вместо стандартного TCP/IP. Т.е. если созданный пользователь MySQL будет подключаться к серверу не с помощью сокетов, а по другому протоколу, указываемому при соединении с MySQL сервером в консоли, то ему нужно будет создавать две учётные записи пользователя:
С созданием пользователя MySQL в консоли мы разобрались. Теперь зададим права пользователя для выполнения любых действий с нашей только что созданной базой данных следующей командой:
Опция ALL, как вы поняли, как раз и указывает на то, что пользователю разрешаются любые действия с определённой БД. Полный список прав, которые можно выдавать пользователям с помощью команды GRANT, можно найти здесь (правда, описание параметров на английском) — https://dev.mysql.com/doc/refman/5.7/en/grant.html#grant-privileges
Можно, кстати, использовать несколько параметров привилегий, указывая их при вызове команды через запятую.
Если захотите создать суперюзера, т.е. обладающего глобальными привилегиями для осуществления различных действий со всеми БД на сервере, то используйте следующий вызов команды:
Кстати, не лишним будет очистить кэш MySQL сервера после установки привилегий. Если будете их менять, то также не забывайте делать это вызовом следующей команды:
А если захотите поменять права пользователя, то используйте сначала следующую команду чтобы сбросить все права:
А затем установите ему нужные с помощью GRANT, как это было описано ранее.
Если же вам в будущем потребуется изменить пароль пользователя MySQL, то для этого достаточно выполнить в MySQL Shell следующие команды:
Сброс кэша привилегий MySQL сервера нужен с той же целью, что и при смене прав — без этого действия смена пароля пользователя MySQL может быть не засчитана, поэтому не ленитесь пользоваться 🙂
В Интернете, кстати, полно примеров использования следующей команды для сброса пароля MySQL пользователя:
Но у меня на MySQL 5.7 данный вариант не сработал, выдав ошибку ERROR 1054 (42S22): Unknown column ‘Password’ in ‘field list’. Её причина оказалось отсутствие поля Password в таблице mysql.user.
Из чего можно предположить, что данный вариант работает лишь для старых версий MySQL, где в таблице пользователей данное поле существовало. Поэтому для уверенности используйте мой первый вариант, если вы, конечно не вынуждены работать с допотопным ПО без возможности обновления версий 🙂
На этом создание нового пользователя MySQL и обзор действий с его правами и паролями закончен. Идём далее.
Выбор базы данных при работе с MySQL через командную строку
Теперь, после создания пользователя в MySQL Shell и назначения ему прав на работу с БД нам нужно выбрать эту самую базу, чтобы можно было оперировать самой базой и хранящимися в ней данными.
Для этого используем следующую команду в MySQL консоли:
Если всё прошло успешно, то в консоли выведется сообщение Database changed, что будет сигнализировать о том, что мы выполнили вход в базу MySQL через консоль. Кстати, при соединении с сервером MySQL, изначально можно указывать БД, с которой необходимо будет работать. Для этого нужно прописать следующую команду в консоли сервера:
Или то же самое, только с запросом ввода пароля пользователя MySQL:
На этом всё. Думаю, никаких сложностей с подключением к базе данных MySQL через консоль теперь у вас не возникнет 🙂
Работа с таблицами MySQL через консоль MySQL
Итак, базу данных MySQL через консоль мы создали. Теперь было бы неплохо научиться с ней работать для случая, когда командная строка MySQL будет единственным средством доступа к хранящимся на сервере данным (как это было у меня, о чём я говорил в начале статьи).
Реляционная база данных, как известно, состоит из таблиц, внутри которых уже и хранится информация в виде записей с несколькими полями. Поэтому, следуя по иерархии размещения информации, для начала научимся производить типичные CRUD операции с таблицами.
CRUD операции, если кто-то не в курсе, — это операции по созданию, чтению, обновлению и удалению данных от англ. «Create, Read, Update, Delete» (возможно, на собеседованиях вам такое понадобится).
Напоминаю, что для выполнения действий с таблицами вы должны сперва подключиться к БД MySQL с помощью команды USE.
Итак, первая на повестке у нас команда создания таблицы MySQL в БД через командную строку, которая выглядит так:
Как вы понимаете, полей может быть сколько угодно, типы их могут быть различны, равно как и наличие индексов и ключей опционально.
Кстати, если вы захотите скопировать таблицу в другую базу данных или просто создать копию в текущей, вам помогут следующие команды:
Данные команды позволяют скопировать структуру таблицы и её данные вместе с индексами и триггерами таблиц. Если вам нужны просто данные и структура (имена полей и их типов данных), то можете обойтись вызовом одной команды:
Следующая операция из блока CRUD у нас чтение. В случае таблиц чтением будет вывод на экран их структуры. Для этого существует следующие четыре команды:
Первая выводит информацию о полях таблицы БД в табличном виде в консоль MySQL с указанием названия поля, типа данных, наличия ключей, значением по умолчанию и т.д. При использовании ключевого слова FULL можно получить расширенную информацию, включая привилегии на каждое из полей для текущего пользователя, комментарии к каждому из них и значение кодировки.
Вторая и третья команды являются просто сокращёнными формами первой команды без расширенной информации. Зачем было их плодить — даже не представляю… Разве что, чтобы было что спросить на собеседованиях при приёме на работу? 🙂
Четвёртая команда, помимо имени, типов полей и значений их по умолчанию позволяет получить значения ключей таблиц, движков таблиц (InnoDB, MyISAM), кодировку и др.
Update операция в случае таблиц представляет собой изменение их структуры, т.е. различные действия с полями таблиц MySQL:
Первая команда позволяет удалить определённое поле таблицы, вторая — добавить, третья позволяет переименовать поле и попутно изменить тип хранимых в нём данных, а четвёртая — изменить исключительно тип данных.
Тоже самое можно делать и с индексами таблиц с помощью во многом похожих команд:
Приведённые команды позволяют добавлять, переименовывать и удалять индексы из таблиц MySQL через командную строку. Для добавления и удаления индексов есть, кстати, ещё альтернативный вариант использования самостоятельных команд, а не делать это через ALTER TABLE. Поэтому при желании можете использовать их:
Приведённые команды являются эквивалентами первой и последней из предыдущего блока. Для переименования индекса, к сожалению, отдельной команды не существует. А для изменения типа индекса, к сожалению, вообще нет никакой возможности в MySQL. Единственный выход — удалить индекс и создать его снова с нужным типом.
Ну, и наконец, мы дошли до последней операции из блока CRUD — к удалению. Удалить таблицы MySQL из БД очень просто. Достаточно в консоли MySQL выполнить следующую команду:
Иногда на практике возникают ситуации, из-за которых не получается удалить таблицу или изменить её структуру. Как правило, это связано с использованием в БД внешних ключей для связи таблиц между собой. С этой ситуацией я лично сталкивался неоднократно, о чём говорил в начале статьи.
Поэтому, если при удалении или обновлении структуры таблицы или её данных MySQL вернул вам ошибку с текстом Cannot delete or update a parent row: a foreign key constraint fails, то следующая информация вам будет как нельзя кстати.
Для того, чтобы осуществить задуманное, нам нужно временно отключить проверку существования внешних ключей, произвести необходимую операцию, а затем снова включить проверку, т.к. она действительно нужна и позволяет предохраняться от нарушения целостности данных в большинстве случаев.
Собственно говоря, с данной целью внешние ключи MySQL и нужны.
Итак, для удаления данных, которому мешают внешние ключи необходимо выполнить следующие действия в консоли MySQL:
Кстати, если захотите удалить внешний ключ, то процедура будет такой же, как и при удалении индекса:
Чтобы узнать имя внешнего ключа MySQL таблицы, используйте уже знакомую команду MySQL консоли SHOW CREATE TABLE.
Работа с данными таблиц MySQL через командную строку
Для таблиц CRUD операции в MySQL консоли мы рассмотрели. Для полной картины данной шпаргалке не хватает только команд для работы с самими данными, хранящимися в таблицах БД. Думаю, многие знают эти команды и пользовались ими на практике, но всё же напомню их ещё раз.
CRUD операции для работы с данными таблиц MySQL будут выглядеть так:
Приведённые выше команды соответствуют операциям создания, чтения, обновления и удаления данных из таблиц БД MySQL. При использовании SELECT и UPDATE также возможно использовать уточняющий оператор WHERE, с помощью которого можно конкретизировать выбор данных способом, описанным в случае использования DELETE.
Также при выборке данных из БД с помощью SELECT можно использовать следующий вариант для получения значений всех полей таблицы:
Естественно, что в данных операциях могут использоваться и другие операторы, помимо WHERE. Особенно их много при выборке данных с помощью SELECT: тут и UNION для объединения результатов нескольких запросов, и различные типы JOIN. Все перечислять очень долго и утомительно как для меня, так и для вас будет читать это.
Поэтому давайте договоримся: если вам захочется о чём-то узнать поподробнее — просто напишите об этом в комментариях, и я постараюсь вам ответить. Или же это сделают другие сведущие участники нашего сообщества. Ок? 😉
Так что пока на данном блоке останавливаться не будем.
Если же вам нужно будет удалить все данные из таблицы, то можете воспользоваться следующей MySQL командой:
Перед её вызовом, как уже ранее и говорилось, вам может потребоваться отключение проверки внешних ключей в случае наличия связанных таблиц MySQL, которая может препятствовать произведению необходимого действия.
Ещё один интересный момент, который здесь нужно учесть, это то, что данная команда не производит сброс счётчика AUTO_INCREMENT, который используется, как известно, для автоматической генерации значения поля без необходимости его ручной установки.
Поля данного типа чаще всего используются для генерации значений главного ключевого поля id, которое используется для установки связей между данными разных таблиц.
Т.е., если до удаления данных таблицы с помощью TRUNCATE максимальное значение счётчика было 1200, то у первой записи после данной процедуры значение идентификатора будет 1201. В принципе, ничего страшного. Если вы задали достаточный размер для данного поля, то переполнение значений вам грозит не скоро.
Однако, в отдельных случаях, когда в коде приложения есть какая-то привязка к значению поля, то данное поведение может доставлять неудобства.
Чтобы этого избежать, используйте вместо команды выше данный вариант:
Данный вариант вызова команды TRUNCATE позволит вам сбросить значение счётчика полей с AUTO_INCREMENT. Поэтому значение поля первой добавленной записи после данного удаления будет 1 вместо 1201, как в примере выше.
Как удалить базу данных MySQL через командную строку
Жизненный цикл работы с базой данных подходит к концу и завершается вполне логично — её удалением. Для того, чтобы сделать данную операцию в консоли MySQL, нужно выполнить следующую команду (при этом удаляемая БД может быть и не выбрана командой USE):
То же самое действие можно сделать и с помощью MySQL утилиты mysqladmin, о которой я уже упоминал в начале статьи при создании БД:
При вызове команды в консоли сервера появится следующее сообщение:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
Do you really want to drop the ‘имя_базы_данных’ database [y/N]
Вкратце — это предупреждение о том, что удаление базы данных MySQL — идея очень плохая. Также запрашивается подтверждение действия. Если согласны — пишем y и нажимаем Enter на клавиатуре, после чего на экран выведется следующее сообщение (если всё прошло успешно, конечно же):
Database «имя_базы_данных» dropped
Как удалить пользователя MySQL в консоли
Теперь та же участь постигнет и создаваемого нами пользователя MySQL, чтобы продемонстрировать вам, как это делается. Но для начала неплохо бы перед самим удалением проверить, существует ли требуемый пользователь на самом деле.
Начиная с MySQL 5.7 для обоих этих действий существует одна команда:
В более ранних версиях MySQL требовалось две отдельные команды:
К сожалению, в данном случае сообщение о выполнении операции в консоли MySQL традиционно малоинформативно 🙁 Поэтому, чтобы узнать, что удаление пользователя пользователь MySQL всё-таки произошло, можно воспользоваться следующей командой, которая выводит на экран список всех существующих на текущем MySQL сервере пользователей:
Данный вариант команды выведет только имена пользователей. Если же вам нужно будет посмотреть хосты, с которых пользователи могут коннектиться к серверу, и список привилегий, то можете вызвать команду в следующем виде:
Также в таблице mysql.user существует масса других полей, в которых хранятся другие типы привилегий и прочая информация, с полным списком которой можно познакомиться здесь — https://mariadb.com/kb/en/library/mysqluser-table/
Не смущайтесь, что это документация к СУБД MariaDB. Технически это то же самое, что и MySQL, т.к. MariaDB является всего лишь её ответвлением или форком от англ «fork» — ответвление, вилка.
Зачем её было делать — снова без понятия 🙂 Разве что, чтобы всем гордо заявлять, что «у меня своя СУБД». Но о точных мотивах и различиях MySQL и MariaDB я, честно говоря, не сильно в курсе. Поэтому если вы что-то об этом знаете — было бы интересно прочитать об этом в комментариях.
Выход из консоли MySQL
Вот и всё, жизненный цикл БД и пользователя, начавшийся их созданием и завершившийся удалением подошёл к концу. Следовательно, командная строка MySQL, с которой мы работали в консоли сервера с помощью утилиты mysql, нам больше не нужна.
Осталось только выйти из неё…
Казалось бы, действие тривиальное, но многие в ситуации, когда нужно выйти из командной строки MySQL просто закрывают консоль сервера и открывают её снова. Можно, конечно, и так действовать, но это отнимает лишние секунды рабочего времени и заставляет раздражаться каждый раз, когда это сделать необходимо.
Правильным поведением в данной ситуации будет всего лишь вызов команды exit в командной строке MySQL, после чего сервис с нами вежливо попрощается 🙂
И всего-то 🙂 Так что в следующий раз не нужно плодить консоли и переоткрывать их каждый раз, когда нужно будет выйти из MySQL в консоли и снова получить к ней доступ для управления сервером.
Вот и всё, что я хотел вам сегодня рассказать. Надеюсь, что моя шпаргалка по работе с командной строкой MySQL через консоль пригодится не только мне, но и вам.
Говоря о практическом применении изложенной в статье информации хочется напомнить, что приведёнными конструкциями можно пользоваться не только в командной строке MySQL и консоли сервера, но и в консоли phpMyAdmin и прочего ПО, которое предоставляет такую возможность.
Пользоваться вам ею или нет — ваше дело. Но, как я сказал в самом начале статьи, бывают ситуации, когда использование консоли MySQL может сэкономить ваше время и нервы. А пользоваться ли командной строкой каждый день или нет — дело исключительно вкуса и индивидуальных предпочтений.
Пишите комментариях о том, какие команды вы используете чаще всего. А, возможно, вы знаете ещё какие-то хитрости. В любом случае делитесь своим мнением с остальными и поддерживайте беседы в комментариях других пользователей.
Обещаю, что в процессе вы узнаете много нового, как и я при написании каждой своей статьи 🙂
Если статья вам понравилась, в качестве благодарности можете поделиться ею со своими друзьями в социальных сетях или же помочь проекту материально с помощью формы под статьёй.
На этом всё! Удачи и до новых встреч 🙂
P.S.: если вам нужен сайт либо необходимо внести правки на существующий, но для этого нет времени и желания, могу предложить свои услуги.
Более 5 лет опыта профессиональной разработки сайтов. Работа с PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, React, Angular и другими технологиями web-разработки.
Опыт разработки проектов различного уровня: лендинги, корпоративные сайты, Интернет-магазины, CRM, порталы. В том числе поддержка и разработка HighLoad проектов. Присылайте ваши заявки на email cccpblogcom@gmail.com.
И с друзьями не забудьте поделиться 😉