Вопросы по MySQL
| |
|
MySQL - это
простая, эффективная и быстрая sql база данных. Для первого
обращения к ней Вам необходимо установить пароль обращения к Вашей базе
(через web-интерфейс на сервере статистики, выбрав услугу
"www.Ваш_домен" - далее ссылка "Пароль MySQL".). Имя пользователя и базы
совпадают с Вашим логином на хостинговой машине.
К MySQL необходимо обращаться по tcp на машину baze.domain_name,
где domain_name - имя Вашего домена. Например, baze.bbb.ru или
baze.ccc.com. Если зону DNS для домена поддерживаете Вы сами, нужно
сделать в ней такую запись:
baze IN CNAME baze.domain_name.postman.ru.
Или же просто используйте адрес baze.domain_name.postman.ru для подключения к
серверу MySQL.
Порт для подключения - 64000.
Для контракта "Рабочий" обращения к базе MySQL возможны только с хостинговой
машины, а для контрактов "Деловой" и "Профессионал" может быть заведен
отдельный MySQL-сервер, соединения к которому можно устанавливать из любого
места сети интернет. Подробнее о заведении отдельного MySQL-сервера читайте
в разделе "Как получить персональный
MySQL-сервер?".
Пример обращения к интерфейсу командной строки MySQL:
/usr/local/bin/mysql --host=baze.domain_name --port=64000
--user=your_user_name --password=your_password your_database_name
или
mysql -u<login> -hbaze.domain_name -P64000 -p
<db_name>
После выполнения такой команды Вам будет задан вопрос про пароль для доступа
к MySQL-серверу, после чего Вы попадете в командную строку MySQL.
MySQL - многопользовательский, многопоточный сервер базы данных SQL.
SQL (Structured Query Language) - наиболее популярный и стандартизированный
язык для работы с базами данных. Например, Вы можете использовать SQL для
хранения и быстрого доступа к информации о клиенте Вашего сайта. MySQL также
быстр и достаточно гибок при использовании его для хранения файлов и
изображений. Главные достоинства MySQL - скорость, устойчивость и легкость
в использовании.
Для начала работы с базой данных Вам необходимо установить пароль
обращения к Вашей базе на сервере статистики. Имя пользователя и базы
совпадают с Вашим логином на хостинговой машине (на хосте home.<имя
домена>).
Существует несколько способов доступа к базе данных MySQL. Самый простой
способ - управление базой данных, используя программу-клиент. Данная
программа запускается из Unix-shell следующей командой:
/usr/local/bin/mysql --host=baze.domain_name --port=64000
--user=<Ваш логин> --password=<Ваш пароль>
После выполнения данной команды Вы получаете доступ к командной строке
клиентской программы (нужно будет ввести пароль для доступа к MySQL), в
которой Вы можете вводить запросы. Каждая строка запроса должна
заканчиваться символами \g или ;. Ниже приводится несколько полезных команд
клиентской программы.
- help (\h) - Показать помощь
- ? (\h) - Аналогично help
- clear (\c) - Очистить командную строку
- edit (\e) - Использовать текстовый редактор для ввода "длинных" запросов
- exit (\ ) - Выйти из MySQL
- go (\g) - Отправить запрос на сервер
- print (\p) - Показать содержимое строки запроса
- quit (\q) - Аналогично exit
Наиболее частой причиной отказа в доступе к базе данных - неправильный
пароль. Исправить данную ситуацию можно, изменив пароль доступа к базе на
сервере статистики. Зайдите туда с Управляющим или техническим хостинговым
логином, выберите услугу www.Ваш_домен и пройдите по ссылке "Пароль MySQL".
Также причиной отказа в доступе может стать несоответствие имени хоста, с
которого производится подключение к MySQL. Единственным хостом, с которого
возможно получить доступ к MySQL - это хостинговая машина (хост home.<имя
домена>).
Для написании cgi-скриптов очень часто используется язык perl, поэтому
приведем пример обращения к базе данных используя этот язык. Для доступа к
базе данных необходимо воспользоваться perl-модулем DBI. С помощью данного
модуля можно работать со многими популярными базами данных. Ниже приводится
простой perl-скрипт, который выводит список таблиц в базе данных.
#!/usr/local/bin/perl
#
# Используемые модули
#
use DBI;
# Имя хоста, на котором работает MySQL
$hostname="baze.domain_name";
# Номер порта
$port="64000";
# Имя пользователя
$user="login";
# Пароль доступа к базе данных
$password="password";
# Имя базы (идентичен с именем пользователя)
$database=$user;
# Вывод http-заголовка
print "Content-type: text/html\n\n";
# Подключение к базе
$dbh =
DBI->connect("DBI:mysql:$database:$hostname:$port",$user,$password);
# Подготовка запроса
$sth = $dbh->prepare("SHOW TABLES");
# Выполнение запроса
$sth->execute;
while ($ref = $sth->fetchrow_arrayref)
{
print "$$ref[0]\n" # Печатаем результат
}
# Отключаемся от базы
$rc = $sth->finish;
$rc = $dbh->disconnect;
Дополнительную информацию о модуле DBI можно получить из документации,
набрав в Unix-shell следующую команду:
perldoc DBI
PHP - это удобный язык программирования, предназначенный для встраивания в
web-страницы.
На Вашем сервере PHP собран с поддержкой соединений с MySQL. Ниже приводится фрагмент
php-документа, который выполняет такую же функцию, как и описанный выше perl-скрипт.
<?php
$conn=mysql_connect("baze.domain_name:64000","login","password");
$result = mysql("login","SHOW TABLES",$conn);
while (list($table) = mysql_fetch_row($result)) {
print("$table<br>\n");
}
?>
Дополнительную информацию по использованию функций для работы с MySQL из
php можно получить по следующему URL:
http://www.php.net/manual/html/ref.mysql.html
Apache/Perl - проект, включающий всю мощь языка программирования Perl и
http-сервера Apache. Доступ к MySQL осуществляется точно так же, как и из
perl-скриптов. Для оптимизации работы mod_perl-модулей рекомендуется
использовать модуль Apache::DBI. Данный модуль поддерживает соединение c
базой данных на все время работы процесса, что значительно ускоряет работу с
базой данных. При использовании данного модуля нет необходимости изменять
Ваши скрипты, т.к. модуль работает абсолютно прозрачно. Дополнительную
информацию о модуле DBI можно получить из документации, набрав в Unix-shell
следующую команду:
perldoc Apache::DBI
На тарифных планах "Деловой" и "Профессионал" Вы имеете возможность
завести дополнительную услугу - персональный MySQL-сервер. С его помощью Вы
сможете решать более сложные задачи и получите дополнительные возможности по
сравнению с общим MySQL. Основные отличия персонального MySQL-сервера
следующие:
Возможность администрирования и настройки сервера, в т.ч. создания
нескольких баз данных и заведения пользователей. При заведении персонального
сервера Вы получаете на нём логин root и, соответственно, все права по
его администрированию и управлению, вплоть до возможности ручного останова и
перезапуска сервера.
Возможность доступа к базе данных извне, т.е. не
с хостинговой машины.
Более высокая производительность. Персональные MySQL-серверы
работают на отдельном физическом сервере и в случае, если Ваш проект требует
интенсивной работы с базами данных, использование персонального сервера
может дать Вам некоторый выигрыш в скорости работы.
Кроме того, мы сами можем предложить Вам перейти на персональный MySQL в
том случае, если нагрузка, создаваемая Вами на общий MySQL-сервер, слишком
велика.
Завести персональный MySQL-сервер Вы можете самостоятельно с помощью Cервера Cтатистики. Для этого Вам нужно
авторизоваться на нем с техническим или управляющим логином и
соответствующим паролем, далее выбрать в списке услуг нужный виртуальный
сервер по ссылке "www.domain_name", где domain_name - название
домена, и пройти по ссылке "Добавить: персональный MySQL". Будьте
внимательны и пройдите процесс регистрации до конца! По окончании его Вы
сможете распечатать регистрационную карточку, в которой будут указаны все
необходимые параметры для подключения к серверу: имя хоста, логин, пароль,
номер порта. Сохраните эти данные и не теряйте. Для персонального MySQL у
Вас будут другие настройки доступа к базе, отличные от общего MySQL:
Хост, где работает MySQL-сервер - mysql.baze.domain_name, где
domain_name имя Вашего домена. Например, mysql.baze.aaa.ru или
mysql.baze.bbb.com. Если зону DNS для домена поддерживаете Вы сами, нужно
сделать в ней такую запись:
mysql.baze IN CNAME mysql.baze.domain_name.postman.ru.
Порт, на котором работает Ваш персональный сервер - не стандартный для
нашего хостинга порт 64000, обратите внимание на это. Номер порта Вы
увидите в регистрационной карточке после заведении услуги. В любой момент
его также можно посмотреть на Сервере Статистики в информации по услуге
"PersonalMySQL4".
Логин. По умолчанию в персональном MySQL заводится один логин - root.
Пароль для базы MySQL Вы задаёте при регистрации услуги. Также его Вы
можете изменять в любое время с помощью Сервера Статистики.
Обратите внимание: мы не рекомендуем заводить
персональный MySQL-сервер в том случае, если Вы никогда раньше не занимались
самостоятельным администрированием MySQL или у Вас в штате нет
соответствующего специалиста. В любом случае, пожалуйста, предварительно
проконсультируйтесь на эту тему с отделом технической поддержки. Напишите
нам на адрес support@zenon.net,
опишите свою конфигурацию и тонкости, расскажите, почему Вы хотите получить
отдельный сервер. Возможно, Ваши проблемы решаются без заведения этой
услуги.
На тарифных планах "Деловой" и "Профессионал" Вы имеете возможность завести
дополнительную услугу - персональный MySQL-сервер версии 5.0. Данная услуга
заводится на Сервере Статистики
аналогично заведению услуги "Персональный
MySQL-сервер".
Все программы, необходимые для работы с персональным MySQL 5.0 (mysql,
mysqladmin, mysqldump и т.п.) находятся в
/usr/local/mysql50/bin/.
Да, можно. Для этого нужен персональный
MySQL-сервер. После регистрации этой услуги зайдите в MySQL под
пользователем root или имеющим аналогичные права и замените текущее значение
поля Host для нужных логинов в таблице mysql.user на тот IP-адрес, с
которого Вы будете обращаться к MySQL. Пример команды :
mysql> update mysql.user set Host='1.2.3.4' where User='пользователь';
где 1.2.3.4 - IP адрес, с которого Вы будете ходить, а 'пользователь' -
логин пользователя в MySQL. Обращаться нужно к машине mysql.baze.domain, где
domain - имя Вашего домена. Порт - тот, что Вам сообщали при заведении
персонального MySQL.
Если Вы хотите пускать в MySQL отовсюду, вместо IP-адреса используйте
символ '%' (процент). Однако, мы бы не советовали так поступать по
соображениям безопасности.
Если же Вы хотите ограничить доступ к серверу MySQL только с хостинговой
машины, мы рекомендуем Вам задать в качестве разрешенного хоста подсети
195.2.72.0/24 и 62.113.86.0/24, что в нотации MySQL выражается как "195.2.72.%" (и,
соответственно, "62.113.86.%"). Чтобы задать две подсети, необходимо продублировать
строку в таблице user с нужным пользователем. Отличаться в этих строках будет лишь поле
Host: в одной строке - 195.2.72.%, в другой - 62.113.86.%.
В данных сетях
размещаются только серверы хостинга, поэтому, с точки зрения
безопасности, данные маски практически соответствует заданию имени хоста с
размещенными на нем виртуальными серверами. Обратите особое внимание на то,
что нужно указывать полностью две сети, а не тот отдельный IP, на котором сейчас
находится Ваш сервер. Дело в том, что из-за применяемой на хостинге системы
балансировки нагрузки IP-адрес той машины, на которой расположен Ваш сервер,
может изменяться. Но он всегда будет в блоках 195.2.72.0/24 и 62.113.86.0/24.
Если Вы использовали для добавления нового пользователя не специальную
команду GRANT, а
вручную вставили в таблицы mysql.user и mysql.db новые записи, MySQL не
будет пускать таких пользователей, возвращая сообщение вида "ERROR 1044:
Access denied for user...". Для того, чтобы новый пользователь смог
воспользоваться выданными ему правами, необходимо выполнить команду FLUSH
PRIVILEGES или запустить из unix-shell программу mysqladmin с параметром
flush-privileges, чтобы сообщить MySQL-серверу у необходимости перечитать
таблицу прав доступа. Более подробно об этой особенности MySQL написано в
разделе документации "Когда
изменения в привилегиях вступают в силу".
Обращаем Ваше внимание на то, что в случае изменения поля Host,
ответственность за неправомерные действия третьих лиц, которые могут
наступить в результате подбора пароля, кражи его у Вас и так далее, ложится
исключительно на Вас.
Если Вы используете персональный MySQL-сервер, у
Вас есть возможность обращаться на ту физическую машину, на которой запущен
MySQL-сервер, по протоколу FTP.
Имя сервера, к которому нужно обращаться по FTP -
mysql.baze.domain_name, где domain_name - имя Вашего домена. В
соответствии с документацией по управлению виртуальным сервером, у Вас есть
технический логин вида login@postman.ru. Для входа на сервер по FTP в
качестве логина (имени пользователя) нужно указывать то, что содержится до
символа @ в техническом логине. То есть, если Ваш технический логин (для
сервера статистики, например) vasya@postman.ru, то для входа по FTP
используйте просто логин vasya и соответствующий пароль.
Возможность работать с сервером MySQL по FTP может быть полезна, например, в
том случае, если по Вашему запросу на support@zenon.net для Вашего сервера
было включено ведение протокола "медленных запросов". Файл протокола будет находиться в
Вашей домашней директории на той машине, на которой работает MySQL.
Кроме доступа по FTP, также имеется возможность доступа на персональный
MySQL-сервер по протоколу ssh, если Вы предпочитаете работать в unix-shell.
Для этого Вы можете заходить ssh-клиентом
на хост mysql.baze.domain_name с техническим логином и паролем точно
так же, как и на виртуальный сервер.
Изменить пароль доступа к базе данных общего MySQL можно самостоятельно,
зайдя на сервер статистики http://stat.zenon.net/ под Управляющим или
техническим логином для Вашего сервера. Выберите услугу "www.Ваш_домен" -
далее ссылка "Пароль MySQL". В поле MySQL password указываете новый пароль.
После нажатия кнопки Update пароль доступа к базе будет изменен. Если Вы
меняете пароль для персонального сервера MySQL, то нужно выбрать в списке
услуг "PersonalMySQL4", далее ссылку "Пароль PersonalMySQL4". Новый пароль
будет установлен для пользователя root.
Вопрос с поддержкой русского возникает при попытке сортировать данные на
русском языке в базе. Для того, чтобы сортировка работала корректно,
необходимо помещать данные в базу в кодировке Windows-1251.
Для создания резервной копии базы MySQL и переноса её на другой сервер
используется утилита mysqldump. Данная утилита позволяет получить
SQL-скрипт (дамп базы), с помощью которого на другом сервере можно полностью
восстановить базу данных (таблицы и данные в них).
Для того, чтобы создать дамп базы, можно использовать такую команду:
mysqldump -u<логин1> -p -h<хост1> -P<порт1> <база1> > database.sql
После выполнения этой команды в файле database.sql и будет дамп базы
данных. Этот файл Вы можете копировать и переносить на другие серверы, где
восстановить структуру и содержание базы.
Восстановить базу из дампа можно вот так:
mysql -u<логин2> -p -h<хост2> -P<порт2> <база2> <
database.sql
Обратите внимание на следующую особенность. Если Вы посмотрите
содержимое файла дампа, то увидите, что он представляет из себя обычный
текстовый файл, в котором содержится последовательность команд для
заполнения базы - создание таблиц и запись в них данных. В процессе
восстановления базы эти команды выполняются, таким образом перенося данные в
базу. Если в дампе database.sql и в базе база2 содержится
таблица с одинаковым именем, то восстановление базы прервётся и Вы получите
сообщение об ошибке, поскольку нельзя будет создать таблицу с уже
существующим именем. С другой стороны, при успешном завершении
восстановления базы уже существующие в ней таблицы не будут затронуты, в
базу просто добавятся новые таблицы из дампа. Поэтому, если Вы хотите
полностью заменить содержимое базы без сохранения старых данных, то
предварительно нужно удалить все таблицы из базы командой DROP
TABLE.
В случае, если база данных имеет большой объем, то дамп можно сразу
заархивировать, а при восстановлении базы передать команде mysql данные из
архива, например, таким образом:
mysqldump -u<логин1> -p -h<хост1> -P<порт1> <база1> | gzip -c > dump.gz
gunzip -cd dump.gz | mysql -u<логин2> -p -h<хост2> -P<порт2> <база2>
При очень больших объемах данных размер файла дампа может превысить 500
Мб - это максимально допустимый размер файла на хостинге. В этом
случае при переносе базы можно вообще не создавать дамп, а выполнить подряд
команды mysqldump и mysql:
mysqldump -q -u<пользователь1> -P<порт1> -h<хост1> -p<пароль1>
<база1> | mysql -u<пользователь2> -P<порт2> -h<хост2>
-p<пароль2> <база2>
Более подробно о переносе данных в MySQL Вы можете узнать из нашей
статьи "Резервное копирование баз MySQL".
Для этого Вы можете воспользоваться phpMyAdmin,
который централизованно установлен на виртуальном unix-хостинге. Подробно о
phpMyAdmin можно прочитать в соответствующем
разделе нашей документации.
Ниже приводится список полезных ссылок на сайты, посвященные MySQL.
Главный сайт разработчиков MySQL
Документация по MySQL (установка, использование, SQL)
Справочное
руководство по MySQL
Документация по модулю DBI
Документация по модулю Apache::DBI
Документация по php-функциям для доступа к MySQL