Техническая документация
MySQL — базы данных
Наши пользователи могут использовать СУБД MySQL на своих виртуальных
веб-серверах в рамках, предусмотренных соответствующими тарифами. Работающая в данный момент Версия: 4.0.хх / 5.0.x. Основная кодировка: cp1251 (Windows). Дополнительно поддерживается KOI8-R и UTF8(в случае версии 5.0.x). В стоимость тарифных планов виртуального хостинга, где поддерживаются услуги MySQL, входит определенное число MySQL-баз и один MySQL пользователь. Сверх этого базы создаются за дополнительную плату по действующему прейскуранту.
Что такое «базы данных» вообще и MySQL в частности
Под базами данных (БД) понимаются системы хранения и обработки данных, для доступа к которым используется язык SQL (Structured Query Language). Существует множество различных систем управления базами данных (СУБД), но в условиях хостинга как правило применяется СУБД MySQL. Причинами тому являются фактическая ориентация этой СУБД на хостинговые задачи, доступность на всех популярных серверных операционных системах, а также простота настройки и администрирования.
Выбирая между различными СУБД нужно учитывать, что если ваш веб-проект не отличается особой на него нагрузкой и сложностью решений, а вы, как программист и администратор, не обладаете достаточной квалификацией и опытом в работе с различными СУБД, альтернатив MySQL для вас в этом случае не очень много и наверняка стоит остановить выбор именно на MySQL. Адресуем вас к статье «Почему
MySQL?» на сервере hostinfo.ru, где вы в подробностях узнаете о плюсах и минусах именно этой системы. Также на сайте разработчиков MySQL есть полная документация на русском языке.
Параметры и способы соединения с MySQL
- Имя хоста (сервера), на котором размещен MySQL: localhost
- Порт: 3306
- Логин: соответствует названию виртуальной площадки — (Client ID)
- Пароль: указан в письме, которое пользователь получает при регистрации
- Имя базы данных: соответствует названию виртуальной площадки — (Client ID)
В целях безопасности прямой доступ к серверам MySQL из интернет закрыт (исключение составляет ssh-туннель, подробнее), а клиентам предоставляются следующие возможности администрирования и использования БД:
- доступ к командной строке MySQL из unix shell
- работа с БД из скриптов пользователя на Perl, PHP и т.д.
- управление базой через веб-интерфейс phpMyAdmin. Реквизиты доступа сообщаются при регистрации, логин и пароль совпадают с реквизитами доступа к самой базе данных
SSH-туннелирование для соединения с удаленной базой данных MySQL
Используем ПО: Putty v.0.56 (последний стабильный релиз)
Первоначальные установки удаленного соединения:
- Host Name: ssh.lipetskhost.ru — Хост для соединения по SSH.
- Port: 22
- Protocol: SSH
Далее переходим в закладку «Tunnels» используя данные параметры для подключения:
- Source Port: 3306 — порт для локального подключения после установки туннеля.
- Destination: Local — указываем явным образом, что подключение будет осуществляться на локальный порт, указанный выше.
- Destination: localhost:3306 — хост, с которым будет осуществляться туннелирование по определенному порту (3306 — стандартно для MySQL)
Теперь необходимо добавить настройки в меню Forwarded ports нажатием кнопки «Add» для достижения следующего результата. Оригинальная документация доступна на сайте разработчиков.
Настройка закончена, переходим в первое меню «Session», как на рисунке 1, и нажимаем кнопку «Open» для установки соединения с удаленным сервером по протоколу SSH. Проходим авторизацию по логину и паролю, и попадаем в bash, находясь локально на вашей площадке /home/Client_ID. Тем временем, согласно нашим настройкам, происходит туннелирование соединения c локальным MySQL сервером, используя SSH протокол и внутренние средства Putty. Таким образом, соединяясь на локальный порт localhost:3306 и используя любое ПО для работы с MySQL сервером, мы получаем доступ к администрированию удаленной базы данных, одновременно защищая свое соединение по протоколу SSH.
phpMyAdmin — доступ к MySQL через веб-браузер
Для доступа к MySQL из обычного веб-браузера клиенты могут воспользоваться инструментом phpMyAdmin. Для этого обратитесь к странице http://phpmyadmin.lipetskhost.ru.
Реквизиты доступа к нему высылаются автоматически на контактный адрес, с момента приобретения тарифного плана с поддержкой БД MySQL.
phpMyAdmin — некоммерческое приложение, написанное на языке PHP, реализующее довольно удобный и функциональный Web-интерфейс к базе данных MySQL.
Подробное справочное руководство по phpMyAdmin вы можете посмотреть по адресу:
http://www.phpmyadmin.net/home_page/docs.php
Для входа в интерфейс вам необходимо ввести:
- Логин: соответствует названию виртуальной площадки — Client ID
- Пароль: указан в письме, которое пользователь получает при регистрации
Импорт и экспорт данных MySQL
Экспорт и импорт данных в MySQL обычно требуется при переносе информации из одной базы данных MySQL в другую и для осуществления резервного копирования.
Резервное копирование данных носит чисто технологический характер. Это означает, что в случае какого-либо программного или аппаратного сбоя оборудования, мы сможем восстановить актуальные данные клиента. Мы гарантируем сохранность самих данных, а не их резервных копий. Однако, при наличии резервной копии на необходимую дату, мы готовы пойти навстречу клиенту и восстановить утерянные по неосторожности данные. Для это необходимо податься заявку на свободную тему из
панели управления.
Единственный способ быть уверенным в 100% восстановлении данных — самостоятельно выполнять регулярное резервное копирование информации. Для этого необходимо воспользоваться утилитой
mysqldump,
которая доступна через
unix shell.
Пример команд для экспорта и импорта базы данных:
> mysqldump -uимя_пользователя -p -hимя_сервера_БД имя_базы > dump.sql
Данные будут сохранены в файле dump.sql. Далее(в случае необходимости) восстанавливаем данные из резервной копии (дампа) так:
> mysql -uимя_пользователя -p -hимя_сервера_БД имя_базы < dump.sql
Запускаемые указанным образом утилиты для работы с MySQL будут запрашивать пароль к базе данных. Нужно вводить пароль соответствующего пользователя БД. Если пароль был утерян, вы можете самостоятельно изменить его в
панели управления, в разделе "Древо услуг" (выпадающее меню расположено в самой верхней строчке панели управления справа).
Дополнительные опции утилиты 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
Если на вашем сервере установлена версия MySQL 4.0.x, то для корректного переноса данных со сторонних серверов необходимо при экспорте базы данных использовать ключ:
--compatible=mysql40
Как работать с MySQL из скриптов на Perl
Для работы с MySQL из Perl-скриптов как правило используют модуль DBI. Это позволяет
удобно открывать и закрывать соединения к СУБД, подготавливать и выполнять
запросы к базе, обрабатывать ошибки и так далее. Если вы не имеете опыта
работы с MySQL из Perl, рекомендуем вам книгу "Программирование на Perl DBI"
(рус., англ.).
Как работать с MySQL из скриптов на PHP
Для работы с MySQL вы можете использовать встроенный в язык PHP средства,
поддержка которых уже осуществляется на хостинге. PHP имеет развитый и понятный интерфейс к этой СУБД, что делает работу с MySQL именно из PHP
наиболее простой и удобной особенно для начинающих веб-мастеров и веб-программистов.
Полная документация на русском языке по работе с MySQL из PHP-скриптов
находится здесь.
Кроме описаний, там же вы найдете советы опытных пользователей и примеры
использования функций, упоминаемых в документации. Также рекомендуем вам
статью "Использование
MySQL в PHP сценариях" на сервере hostinfo.ru.
Загрузка данных с помощью LOAD DATA
Начиная с версии MySQL 3.23.49, LOAD
DATA LOCAL по умолчанию запрещено по соображениям
безопасности, и его надо специально включать.
MySQL-сервер у нас работает с включенным LOAD DATA LOCAL, но необходимо
включение данной функциональности со стороны клиента.
Для утилиты mysql есть несколько вариантов включения данной опции:
- Параметр --local-infile=1
- Создать в домашней директории файл .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't connect to MySQL: $!";
Включение данного режима из PHP: у Вас обязательно должен быть установлен свой собственный, скомпилированный интерпретатор PHP.
Необходимо создать в домашней директории файл .my.cnf и в нем разрешить эту опцию для группы [php], где в квадратных скобках указано имя файла Вашего интерпретатора:
[php]
local-infile=1
В функции 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.