MySQL - базы дадзеных

  1. Параметры і спосабы злучэння з MySQL
  2. SSH-тунэляванне для злучэння з выдаленай базай дадзеных MySQL
  3. phpMyAdmin - доступ да MySQL праз вэб-браўзэр
  4. Імпарт і экспарт дадзеных MySQL
  5. Як працаваць з MySQL з скрыптоў на Perl
  6. Як працаваць з MySQL з скрыптоў на PHP
  7. Загрузка дадзеных з дапамогай LOAD DATA
  8. Дадатковыя MySQL-база і MySQL-доступ (MySQL-карыстальнік)
  9. Дадатковая дакументацыя і карысныя спасылкі

Нашы карыстальнікі могуць выкарыстоўваць СКБД MySQL на сваіх віртуальных вэб-серверах у рамках, прадугледжаных адпаведнымі тарыфамі. Якая працуе ў дадзены момант Версія: 5.6 Асноўная кадоўка: cp1251 (Windows). Дадаткова падтрымліваецца KOI8-R і UTF-8.

У кошт тарыфных планаў віртуальнага хостынгу, дзе падтрымліваюцца паслугі MySQL, уваходзіць вызначаны лік MySQL-баз і адзін MySQL карыстальнік. Звыш гэтага базы ствараюцца за дадатковую плату па дзейсным прэйскурантам.

Пад базамі дадзеных (БД) разумеюцца сістэмы захоўвання і апрацоўкі дадзеных, для доступу да якіх выкарыстоўваецца мова SQL (Structured Query Language). Існуе мноства розных сістэм кіравання базамі дадзеных (СКБД), але ва ўмовах хостынгу як правіла ўжываецца СКБД MySQL . Прычынамі таго з'яўляюцца фактычная арыентацыя гэтай СКБД на хостынгавыя задачы, даступнасць на ўсіх папулярных серверных аперацыйных сістэмах, а таксама прастата налады і адміністравання.

Выбіраючы паміж рознымі СКБД трэба ўлічваць, што калі ваш вэб-праект не адрозніваецца асаблівай на яго нагрузкай і складанасцю рашэнняў, а вы, як праграміст і адміністратар, не валодаеце дастатковай кваліфікацыяй і вопытам у рабоце з рознымі СКБД, альтэрнатыў MySQL для вас у гэтым выпадку не вельмі шмат і, напэўна, варта спыніць выбар менавіта на MySQL. Адрасуем вас да артыкула « Чаму MySQL? »На сэрвэры hostinfo.ru, дзе вы ў падрабязнасцях даведаецеся пра плюсы і мінусы менавіта гэтай сістэмы. Таксама на сайце распрацоўшчыкаў MySQL ёсць поўная дакументацыя на рускай мове.

Параметры і спосабы злучэння з MySQL

  • Імя хаста (сервера), на якім размешчаны MySQL: uXXXXX.mysql.masterhost.ru
  • Порт: 3306
  • Лагін: адпавядае назве віртуальнай пляцоўкі - uXXXXX
  • Пароль: паказаны ў лісце, якое карыстальнік атрымлівае пры рэгістрацыі
  • Імя базы дадзеных: адпавядае назве віртуальнай пляцоўкі - uXXXXX

У мэтах бяспекі прамы доступ да сервераў MySQL з інтэрнэту зачынены (выключэнне складае ssh-тунэль), а кліентам прадастаўляюцца наступныя магчымасці адміністравання і выкарыстання БД:

  • доступ да каманднага радка MySQL з unix shell
  • праца з БД з скрыптоў карыстальніка на Perl , PHP і г.д.
  • кіраванне базай праз вэб-інтэрфейс phpMyAdmin . Рэквізіты доступу паведамляюцца пры рэгістрацыі, лагін і пароль супадаюць з рэквізітамі доступу да самай базе дадзеных

SSH-тунэляванне для злучэння з выдаленай базай дадзеных MySQL

Выкарыстоўваем ПА: Putty v.0.70 (апошні стабільны рэліз на 2017/07/08.)

Першапачатковыя ўстаноўкі аддаленага злучэння:

  • Host Name: [email protected] - Хост для злучэння па SSH, дзе uXXXX - нумар вашай пляцоўкі.
  • Port: 22
  • Protocol: SSH

Далей пераходзім ў закладку «Tunnels», як паказана на наступным малюнку, выкарыстоўваючы дадзеныя параметры для падлучэння:

  • Source Port: 3306 - порт для лакальнага падлучэння пасля ўстаноўкі тунэля.
  • Destination: Local - паказваем відавочнай выявай, што падключэнне будзе ажыццяўляцца на лакальны порт, паказаны вышэй.
  • Destination: uXXXX.mysql.masterhost.ru:3306 - хост, з якім будзе ажыццяўляцца тунэляванне па вызначаным порту (3306 - стандартна для MySQL)

мал
мал. 2

Зараз неабходна дадаць налады ў меню Forwarded ports націскам кнопкі «Add» як паказана на малюнку ніжэй, для дасягнення наступнага выніку:

Арыгінальная дакументацыя даступная на сайце распрацоўшчыкаў .

мал
мал. 3

Налада скончана, пераходзім у першае меню «Session», як на малюнку 1, і націскаем кнопку «Open» для ўстаноўкі злучэння з выдаленым серверам па пратаколе SSH. Праходзім аўтарызацыю па лагіне і паролі, і трапляем у bash, знаходзячыся лакальна на вашай пляцоўцы / home / uXXXX.

Тым часам, паводле нашых налад, адбываецца тунэляванне злучэння c лакальным MySQL серверам, выкарыстоўваючы SSH пратакол і ўнутраныя сродкі Putty. Такім чынам, злучаючыся на лакальны порт localhost: 3306 і выкарыстоўваючы любое ПА для працы з MySQL серверам, мы атрымліваем доступ да адміністравання выдаленай базы дадзеных, адначасова абараняючы сваё злучэнне па пратаколе SSH.

phpMyAdmin - доступ да MySQL праз вэб-браўзэр

Для доступу да MySQL з звычайнага вэб-браўзэра кліенты могуць скарыстацца прыладай phpMyAdmin. Для гэтага звярніцеся да старонкі http://phpmyadmin.masterhost.ru .

Рэквізіты доступу да яго высылаюцца аўтаматычна на кантактны адрас, з моманту набыцця тарыфнага плана з падтрымкай БД MySQL.

phpMyAdmin - некамерцыйнае дадатак, напісанае на мове PHP, якое рэалізуе даволі зручны і функцыянальны Web-інтэрфейс да базе дадзеных MySQL.

Падрабязнае даведачнае кіраўніцтва па phpMyAdmin вы можаце паглядзець па адрасах:

Для ўваходу ў інтэрфейс вам неабходна ўвесці:

  • Лагін: адпавядае назве віртуальнай пляцоўкі - uXXXXX
  • Пароль: паказаны ў лісце, якое карыстальнік атрымлівае пры рэгістрацыі

Замест ХХХХХ неабходна прапісаць нумар вашай віртуальнай пляцоўкі.

Імпарт і экспарт дадзеных MySQL

Экспарт і імпарт дадзеных у MySQL звычайна патрабуецца пры пераносе інфармацыі з адной базы дадзеных MySQL ў іншую і для ажыццяўлення рэзервовага капіявання.

Рэзервовае капіяванне дадзеных носіць чыста тэхналагічны характар. Гэта азначае, што ў выпадку якога-небудзь праграмнага або апаратнага збою абсталявання, мы зможам аднавіць актуальныя дадзеныя кліента. Мы гарантуем захаванасць саміх дадзеных, а не іх рэзервовых копій.

Аднак, пры наяўнасці рэзервовай копіі на неабходную дату, мы гатовыя пайсці насустрач кліенту і аднавіць згубленыя па неасцярожнасці дадзеныя. Для гэта неабходна падаць заяўку на вольную тэму з панэлі кіравання .

Адзіны спосаб быць упэўненым у 100% аднаўленні дадзеных - самастойна выконваць рэгулярнае рэзервовае капіраванне інфармацыі. Для гэтага неабходна скарыстацца утылітай mysqldump , Якая даступная праз unix shell .

Прыклад каманд для экспарту і імпарту базы дадзеных:

mysqldump -u имя_пользователя -p -h имя_сервера_БД имя_базы> dump.sql

Дадзеныя будуць захаваны ў файле dump.sql. Далей (у выпадку неабходнасці) аднаўляем дадзеныя з рэзервовай копіі (дампа) так:

mysql -u имя_пользователя -p -h имя_сервера_БД имя_базы <dump.sql

Запускаемыя ўказаным чынам утыліты для працы з MySQL будуць запытваць пароль да базы дадзеных. Трэба ўводзіць пароль адпаведнага карыстальніка БД. Калі пароль быў згублены, вы можаце самастойна змяніць яго ў панэлі кіравання , У раздзеле Дрэва паслуг (выпадальнае меню размешчана ў самай верхняй радку панэлі кіравання справа).

Па змаўчанні сістэма лічыць, што дадзеныя ў базе захоўваюцца ў кадоўцы UTF-8. Калі вашы дадзеныя захоўваюцца ў іншай кадоўцы, то пасля стварэння рэзервовай копіі (дампа) для наступнага карэктнага аднаўлення дадзеных неабходна адкрыць створаны файл тэкставым рэдактарам і выправіць у ім радок:

/ *! 40101 SET NAMES utf8 * /;

Напрыклад, для кадоўкі Windows-1251 трэба пазначыць:

/ *! 40101 SET NAMES cp1251 * /;

Дадатковыя опцыі ўтыліты mysqldump:

--add-drop-table - опцыя, якая дадае каманду DROP TABLE перад стварэннем табліц. Перад аднаўленнем табліц з дампа, табліцы з такім жа імем у рабочай базе дадзеных будуць выдалены і перастварыў з рэзервовай копіі. Рэкамендуецца выкарыстоўваць для прадухілення магчымых памылак пасля аднаўлення;

--add-locks - опцыя, якая дадае каманды LOCK TABLES перад выкананнем і UNLOCK TABLE пасля выканання кожнага дампа табліцы. Ўжываецца для паскарэння доступу да MySQL;

--quote-names - опцыя, якая паведамляе утыліце аб неабходнасці ставіць двукоссі для назваў табліц і слупкоў. Рэкамендуецца да выкарыстання для MySQL версій, малодшай 4.1.1. У старэйшых версіях яна актывавана па змаўчанні.

Опцыі --quick і --opt рэкамендуецца выкарыстоўваць, калі база дадзеных MySQL занадта вялікая для таго, каб цалкам змясціцца ў памяці.

Пры гэтым ўтыліта mysqldump выдае памылку:

mysqldump: Out of memory (Needed XXXXX bytes) mysqldump: Got error выпуску: 2008: MySQL client run out of memory when retrieving data from server

У выніку радок для стварэння копіі базы дадзеных атрымліваецца наступнай:

mysqldump --opt -u имя_пользователя -p -h имя_сервера_БД --add-drop-table имя_базы> dump.sql

альбо такі:

mysqldump --quick -u имя_пользователя -p -h имя_сервера_БД --add-drop-table имя_базы> dump.sql

Для сумяшчальнасці дампа, зробленага на пабочным сэрвэры мы рэкамендуем ствараць дамп базы дадзеных з ключом:

--set-variable max_allowed_packet = 2M

альбо

-O max_allowed_packet = 2M

Калі падчас імпарту вы атрымаеце памылку выгляду

mysqldump: Error дня 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table `some_table_name` at row: 2 значыць у вашай базе дадзеных прысутнічаюць дадзеныя, якія немагчыма падзяліць на асобныя часткі, кожная не больш як дзве мегабайт.

Як правіла, такое здараецца, калі базу дадзеных MySQL выкарыстоўваюць для захоўвання змесціва розных файлаў, напрыклад, малюнкаў ці музыкі, ня размяшчаючы іх непасрэдна ў файлавай сістэме. У такім выпадку, калі памер якога-небудзь файла перавышае вызначанае значэнне - база дадзеных становіцца непрыдатнай для выкарыстання на нашых серверах і спатрэбіцца альбо выдаліць такія дадзеныя з вашай базы, альбо разгледзець варыянт выкарыстання сервера баз дадзеных на VPS-серверы , Дзе можна ўсталяваць патрэбнае абмежаванне max_allowed_packet ў неабходнае значэнне, альбо не выкарыстоўваць яго наогул.

Калі на вашым серверы ўсталяваная версія MySQL 4.0.x, то для карэктнага пераносу дадзеных са іншых сервераў неабходна пры экспарце базы дадзеных выкарыстоўваць ключ:

--compatible = mysql40

Як працаваць з MySQL з скрыптоў на Perl

Для працы з MySQL з Perl-скрыптоў як правіла выкарыстоўваюць модуль DBI . Гэта дазваляе зручна адкрываць і зачыняць злучэння да БД, падрыхтоўваць і выконваць запыты да базы, апрацоўваць памылкі і гэтак далей. Калі вы не маеце вопыту працы з MySQL з Perl, рэкамендуем вам кнігу «Праграмаванне на Perl DBI» ( рус. , англ. ).

Такім чынам, прыклад працы з MySQL з Perl DBI:

#! / Usr / bin / perl use DBI; my $ host = "u12345.mysql.masterhost.ru"; # Выдуманы MySQL-сэрвэры my $ port = "3306"; # Порт, на які адкрываем злучэнне my $ user = "u12345"; # Імя карыстальніка (выдуманае) my $ pass = "password"; # Пароль my $ db = $ user; # Імя базы дадзеных -па змаўчанні роўна імя карыстальніка print "Content-type: text / html \ n \ n"; $ Dbh = DBI-> connect ( "DBI: mysql: $ db: $ host: $ port", $ user, $ pass); $ Sth = $ dbh-> prepare ( "select field1 from table2"); # рыхтуем запыт $ sth-> execute; # Выконваем запыт while ($ ref = $ sth-> fetchrow_arrayref) {print "$$ ref [0] \ n"; # Друкуем вынік} $ rc = $ sth-> finish; # Закрываем $ rc = $ dbh-> disconnect; # злучэнне

У гэтым прыкладзе мы спачатку вызначаны зменныя з параметрамі доступу да MySQL, далей выдаем HTTP-загаловак, так як гэта ў нас скрыпт для запуску праз вэб, затым яднаемся з базай, падрыхтоўваем і адпраўляем select-запыт, атрымліваем і друкуем вынікі, пасля чаго закрываем злучэнне. Гэта найпросты скрыпт для працы з MySQL з Perl. Больш падрабязныя прыклады вы можаце знайсці у гэтым артыкуле .

Як працаваць з MySQL з скрыптоў на PHP

Для працы з MySQL вы можаце выкарыстоўваць ўбудаваны ў мову PHP сродкі, падтрымка якіх ужо ажыццяўляецца на хостынгу. PHP мае развіты і зразумелы інтэрфейс да гэтай СКБД, што робіць працу з MySQL менавіта з PHP найбольш просты і зручнай асабліва для пачаткоўцаў вэб-майстроў і вэб-праграмістаў.

# Яднаемся з серверам і выбіраем сваю базу дадзеных mysql_connect ( "u12345.mysql.masterhost.ru", "u12345", "password"); mysql_select_db ( "database"); # Рыхтуем і выконваем запыт да БД $ query = "SELECT * FROM table"; $ Result = mysql_query ($ query) or die (mysql_error ()); # Выводзім вынікі выканання запыту while ($ i = mysql_fetch_row ($ result)) {echo $ i [0]; echo $ i [1]; .....}

Поўная дакументацыя на рускай мове па працы з MySQL з PHP-скрыптоў знаходзіцца тут . Акрамя апісанняў, там жа вы знойдзеце парады вопытных карыстальнікаў і прыклады выкарыстання функцый, згадваных у дакументацыі. Таксама рэкамендуем вам артыкул « Выкарыстанне MySQL у PHP сцэнарах »На сэрвэры hostinfo.ru.

Загрузка дадзеных з дапамогай LOAD DATA

Пачынаючы з версіі MySQL 3.23.49, LOAD DATA LOCAL па змаўчанні забаронена па меркаваннях бяспекі , І яго трэба спецыяльна ўключаць.

MySQL-сервер у нас працуе з уключаным LOAD DATA LOCAL, але неабходна ўключэнне дадзенай функцыянальнасці з боку кліента.

Для ўтыліты mysql ёсць некалькі варыянтаў ўключэння дадзенай опцыі:

  1. Параметр --local-infile = 1
  2. Стварыць у хатняй дырэкторыі файл .my.cnf і ў ім дазволіць гэтую опцыю для групы [mysql], якой карыстаецца дадзеная ўтыліта: [mysql] local-infile = 1

Ўключэнне дадзенага рэжыму з perl'а: неабходна ў dsn пры падключэнні пазначыць файл канфігурацыі mysql (бо бібліятэка libmysql па змаўчанні ніякіх дадатковых файлаў канфігурацыі не чытае) і групу ў ім, у файле стварыць гэтую групу, і для гэтай групы выставіць local -infile = 1:

Напрыклад, ўпісваем у ~ / .my.cnf

[Perl] local-infile = 1 а ў скрыпце падлучэнне афармляем так: my $ dsn = "DBI: mysql: database: hostname; mysql_read_default_group = perl;". "Mysql_read_default_file = ~ / .my.cnf"; my $ dbh = DBI-> connect ($ dsn, "username", "password") || die "[err]: Can not connect to MySQL: $!";

Ўключэнне дадзенага рэжыму з PHP: у вас абавязкова павінен быць усталяваны свой уласны, скампіляваны інтэрпрэтатар PHP.

У функцыі mysql_connect () неабходна выкарыстоўваць аргумент 128 (значэнне канстанты CLIENT_LOCAL_FILES) у якасці пятага параметру.

прыклад:

$ Dbh = mysql_connect ($ server, $ user, $ pass, false, 128);

Дадатковыя MySQL-база і MySQL-доступ (MySQL-карыстальнік)

Карыстальнікам прадастаўляецца пэўную колькасць баз MySQL ў рамках набытага тарыфу. Пры гэтым аўтаматычна падключаецца адна база, і рэквізіты доступу да яе паведамляюцца ў лісце з паведамленнем аб установе паслуг. Кліенты могуць самастойна ствараць дадатковыя базы дадзеных і MySQL-доступы.

Для гэтага неабходна ў кантрольнай панэлі у раздзеле Дрэва паслуг выбраць пляцоўку, для якой неабходна стварыць дадатковую паслугу і ў табліцы «MySQL» абраць каманду «дадаць» для паслугі «MySQL-доступ (доп.)» або «MySQL-база (доп.)». Паролі доступу да баз дадзеных можна змяніць, выклікаўшы каманду «змяніць» у патрабаванага MySQL-доступу.

Дадатковая дакументацыя і карысныя спасылкі

MySQL з'яўляецца самай папулярнай сярод распрацоўшчыкаў СКБД. Папулярнасць яе суправаджаецца і наяўнасцю вычарпальнай і вельмі якаснай дакументацыі. Навучыўшыся карыстацца ёю, вы не будзеце мець праблем з доступам да якасных апісаннем патрэбных магчымасцяў MySQL.

Таксама, рэкамендуем азнаёміцца з артыкулам на нашым сайце , Прысвечанай аптымізацыі баз дадзеных MySQL.