
- •1. Подготовка и допуск к работе
- •2. Содержание отчета
- •Лабораторная работа №15
- •Лабораторная работа № 16
- •Пример: backup table vines,query,client,distributor,delivery to c:/mysql_bak';
- •Удалены 3 таблицы. Теперь восстановим их.
- •Пример: optimizetablEmytable
- •Лабораторная работа №17
- •Значение usage можно задавать, если необходимо создать пользователя без привилегий.
- •Примеры:
- •Доступ к MySql из сети
- •С помощью утилиты Mysqlshow выполните команду на просмотр структуры и состав таблиц базы Mysql. Приведите в отчете её схему.
- •Лабораторная работа №18
- •Тема: Файлы журналов MySql Репликация в MySql
- •Цель: Формирование умений и знаний для работы в среде субд Mysql.
- •Журнал ошибок
- •Общий журнал запросов
- •Журнал обновлений (update)
- •Бинарный журнал обновлений
- •Журнал медленных запросов
- •Обслуживание файлов журналов
- •Репликация в MySql
- •Настройка репликации
- •Лабораторная работа № 19-20
- •Сохраненные процедуры и функции
- •Сохраненные подпрограммы и таблицы предоставления привилегий
- •Синтаксис хранимых процедур
- •Синтаксис alter procedure и alter function
- •Синтаксис drop procedure и drop function
- •Синтаксис команды call
- •Синтаксис составного оператора begin ... End
- •Синтаксис declare
- •Переменные в сохраненных подпрограммах Локальные переменные declare
- •Команда set
- •Команда select ... Into
- •Условия и драйверы
- •Declare условий
- •Declare драйвера
- •Курсоры
- •Объявление курсоров
- •Инструкция case
- •Инструкция loop
- •Инструкция leave
- •Инструкция iterate
- •5.2.10.6. Инструкция repeat
- •Инструкция while
- •Задание
- •Приложение а
- •Демонстрируется использование mysql в качестве несложного калькулятора:
- •Проверка таблицы при помощи команды describe:
- •Выборка всех данных
- •Выборка определенных строк. Выборка с условием
- •Операторы and и or можно использовать совместно.
- •Предположим, нужно узнать, в каком возрасте животные давали приплод:
- •В этом запросе мы указываем псевдонимы имен таблицы, для обращения к столбцам и определения, к какой из таблиц относится каждая ссылка на столбец.
- •Сортировку можно проводить по нескольким столбцам сразу.
- •Отсортировать результаты по возрасту также можно при помощи выражения orderby:
- •Максимальное значение столбца
Доступ к MySql из сети
Для сервиса, который работает на другой машине. В общем случае нам необходимо выполнить 2 действия:
а) Разрешить серверу MySQL прослушивание на сетевых интерфейсах (не только на 127.0.0.1)
б) Создать разрешения для сетевых пользователей.
Если с первым пунктом более-менее ясно, то по пункту (б) необходимо пояснить. Дело в том, что обычно пользователи создаются вида 'username'@'localhost', что позволяет им цепляться с определенными привилегиями к определенным базам данных, но только с localhost. Из сети эти пользователи подключиться не могут - MySQL сообщает им, что пароль или имя пользователя неверны. Фишка заключается в том, что MySQL содержит список пользователей, разделенный по машинам, с которых они могут цепляться. Так, пользователь User1 может подключаться с localhost с паролем ABCD, с адреса 192.168.0.1 он может быть прописан с паролем BBBCCC, а с адреса 192.168.1.1 - уже с паролем BCDE и только для некоторых баз. Т.е. мы можем задать - с каких компьютеров пользователю разрешено подключаться, какой пароль он будет иметь в таком случае и к каким базам у него будут привилегии. На самом же деле, если взглянуть в базу данных mysql, то мы увидим, что это не один пользователь, а 3 разных юзера: user1@localhost, user1@192.168.0.1 и user1@192.168.1.1. Т.е. с точки зрения MySQL - это разные пользователи, соответственно, имеющие разные привилегии и пароли. Таким образом, чтобы получить доступ из сети, нам необходимо завести дополнительных пользователей в MySQL с указанием уже не localhost. Причем, Вы можете как указать конкретные IP адреса, с которых разрешено этим пользователям подключаться, так и специальный символ '%', который обозначает "любые компьютеры, кроме localhost". Вот пример имен пользователей:
username@'localhost' : подключаться может только с localhost
username@'192.168.0.1' : подключаться может только с 192.168.0.1
username@'%' : подключаться может с любого компьютера, кроме localhost
username@'192.168.0.%' : подключаться может с любого компьютера, IP-адрес которого начинается с 192.168.0.
Как видно, для localhost пользователя необходимо всегда указывать отдельно. Если же необходимо указание нескольких IP-адресов для одного пользователя... придется заводить эти IP-адреса отдельно, к сожалению, либо через запятую, но после каждой запятой - опять конструкция вида IDENTIFIED BY. Итак, давайте дадим к серверу MySQL доступ из сети. 1) Во-первых, необходимо проверить, что сервер слушает запросы не только на localhost.
Для Debian:
Открываем файл /etc/mysql/my.cnf и ищем в нем строчку bind-address. Нам нужно, чтобы она была раскоментирована и содержала значение 0.0.0.0 :
# cat /etc/mysql/my.cnf | grep bind-address
bind-address = 0.0.0.0
Если строчку Вы меняли - необходимо перезагрузить сервер MySQL:
# /etc/init.d/mysql restart
Для FreeBSD:
По-умолчанию во FreeBSD сервер MySQL слушает на всех доступных интерфейсах и ничего дополнительно менять не нужно.
2) Теперь необходимо добавить пользователей, имеющих доступ из сети. Без этого сервер будет слушать сеть, но пускать все равно к себе не будет.
# mysql-uroot–p
Password: // приветствиеMySQL
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user1'@'192.168.0.%' IDENTIFIED BY 'password1';
mysql> GRANT ALL PRIVILEGES ON mydatabase.* TO 'user2'@'%' IDENTIFIED BY 'password2';
В этом коде пользователю user1 разрешается полный доступ ко всем базам на сервере, но только с компьютеров из сети 192.168.0.*
Второму же пользователю разрешается заходить с любого компьютера вообще (кроме localhost, конечно), но он имеет полный доступ только к базе mydatabase. По подобию можно добавлять необходимых пользователей с необходимыми привилегиями.
3) Проверяем сетевой доступ.
$ mysql -u username -p -h 192.168.0.100
Вместо 192.168.0.100 - укажите IP адрес машины с MySQL сервером, а вместо username - имя пользователя. Если сервер не пускает - в первую очередь проверьте - а не стоит ли на пути к нему файерволов и открыт ли на этих файерволах порт MySQL: 3306.
Задание.