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.