Подключение к Mysql-серверу

Министерство  Образования Российской Федерации 
Государственный университет аэрокосмического приборостроения 
 

Отчет защищен:  
Преподаватель Балберин В.В.
 
 
 

ОТЧЕТ 
по выполненной работе

по курсу: Языки программирования сетевых приложений

Подключение к Mysql-серверу 
 
 
 

Работу  выполнил Ляпунов И.С.
студент  группы 4640М:  
 
 
 
 
 
 
 
 

Санкт - Петербург

2011 

Почему  выбрана система  Ubuntu 10.04 

Сравнение версий Ubuntu 10.04 и 11 

Была выбрана версия именно 10.04. Она более удобна пользователю по интерфейсу, больше напоминает Windows. 11-я же версия очень сильно поменялась внешне, что на мой взгляд сделало систему очень неудобной для обычного пользователя.

Сравним эти системы Ubuntu 10.04 и Windows 7

 
Windows 7 против UbuntuLinux. Готов ли Linux полностью вытеснить операционные системы семейства Windows с настольных компьютеров?

 
Установка 

Windows 7 
Установка происходит в автоматическом режиме, есть возможность работать с разделами 
Ubuntu 10.04 
Установка в автоматическом режиме, работа с разделами, совмещение с другими ОС, можно загрузить как LiveCD и сначала попробовать, как работает ОС, а потом установить 
Старт

Windows 7 
36 с.

Ubuntu 10.04

14 с. (на моём компьютере)

Безопасность

Windows 7 
Без антивируса – никуда 
Ubuntu 10.04 
Антивирус не нужен, политика ОС не позволяет запускаться опасным программам без вашего разрешения

Устройства

Windows 7 
Поддерживает стандартные устройства, для остальных нужно искать драйверы 
Ubuntu 10.04 
Поддерживает больше стандартных устройств, включая большинство веб-камер, Bluetooth-адаптеров, для остальных устройств ОС сама найдёт драйверы и установит их, если для устройства имеются Linux-драйверы

Установка программ

Windows 7 
Ищите программы, устанавливайте и удаляйте через панель управления. Инсталляторы большие, установка долгая. Обновление каждая программа выполняет сама, отчего часто висят 3-5 процессов, которые запускают обновления 
Ubuntu 10.04 
Почти любые программы можно найти в центре приложений, не открывая браузера. Всё ПО хранится в больших интернет-хранилищах (репозиториях), которые можно находить в Сети и подключать, хотя и главный репозиторий содержит программы всех категорий. Инсталляторы маленькие, установка-обновление-удаление выполняет ОС. В случае недостатка какого-то компонента, ОС автоматически устанавливает его

Работа  с Интернетом

Windows 7 
Стандартный браузер не работает со многими сайтами, почта и чат отсутствуют 
Ubuntu 10.04 
Сразу после установки вы можете выходить в Сеть через FireFox, работать с почтой (наподобие Outlook), и переписываться в 19 популярных чатах, включая ICQ, Jabber и Facebook. 
Работа с документами

Windows 7 
Есть блокнот и WordPad, работать с офисными документами можно после установки MicrosoftOffice 
Ubuntu 10.04 
Есть Gedit – аналог блокнота, но с подсветкой синтаксиса, сразу можно работать с офисными документами через OpenOffice

Мультимедиа

Windows 7 
Возможно почти всё 
Ubuntu 10.04 
"Из коробки" - поддержка основных форматов. 
Цена 
Windows 7 
Платная. 
Ubuntu 10.04 
Бесплатна. И все программы, входящие в состав бесплатны и свободны. А плюс это или минус – кому как.

Выбор СУБД. 

Почему  выбрали MySQL?

Oracle и PL SQL являются серьезными базами данных, на которых развертываются большие корпоративные системы. Тот же самый Oracle стоит приличных денег. MySQL является полностью свободным продуктом, быстро настраиваемым для нужд малых проектов и программ.  

 

Актуальность

База данных выполняют роль единого хранилища, откуда могут брать данные другие пользователи или туда их класть. Выступает в роли единого центра информации. Почему именно база данных? Потому что это основной способ хранения информации, дает возможность быстрого поиска информации и ее централизованного обновления. Единое место хранения позволяет упростить процесс защиты БД от ненужного доступа.

Собственно почти  на каждом предприятии есть своя корпоративная  сеть.  Для чего нужен DHCP сервер? Для автоматической выдачи сетевых настроек. Это

     IP адрес, маска подсети, DNS сервер, шлюз. Если сеть состоит за 5-10 компьютеров все эти настройки можно прописать вручную, а если из 100 и более, тот тут проще поставить DHSP для автоматизации этого процесса. Для чего нужен DNS? Для сопоставления IP адреса и Имение компьютера, для чего это нужно? Чтобы не запоминать IP адреса компьютеров и сервисов. Куда проще обращаться к компьютеру по имени, чем помнить его IP-адрес .

Настройка DHCP-сервер на Ubuntu.

DHCP (англ. DynamicHostConfigurationProtocol   протокол динамической конфигурации узла)   это сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP. Данный протокол работает по модели “клиент-сервер”. Для автоматической конфигурации компьютер-клиент на этапе конфигурации сетевого устройства обращается к т.н. серверу DHCP, и получает от него нужные параметры.

 
Для того чтобы Ubuntu выполнял роль DHCP-сервера надо поставить всего один пакет dhcp3-server, ставиться он одной командой

sudoapt-getinstall dhcp3-server

После того как  пакет будет установлен, DHCP-сервер будет работать как демон(т.е. запускаться при старте системы), остановить, перезапустить или запустить его можно командой.

sudo/etc/init.d/dhcp3-server stop/restart/start

Настройка DHCP-сервера  осуществляется через конфигурационный файл /etc/dhcp3/dhcpd.conf

Для того чтобы  настроить раздачу сетевых параметров dhcpd.conf должен содержать следующий  конфиг

 

subnet10.0.2.0 netmask 255.255.255.0 {        

      range10.0.2.3010.0.2.100; # Диапазон ip адресов

allow unknown-clients;

}

Вся истории аренды ip адресов пишется в файл /var/lib/dhcp3/dhcpd.leases 
 

Настройка DNS 

Настройка bind9. 

 
  Классическим ДНС сервером для unix систем является BIND (BerkleyInternetNameDomain) или сокращенно named.  
named уже есть в штатной установке FreeBSD, но можно и переустановить.

 
root@localhost# cd /usr/ports/dns/bind9 && make install

Установка из пакета:

 
root@localhost# pkg_add -r bind9

Особенностью  полной сборки является утилита rndc, управляющая демоном named. А посему пришлось сгенерировать пару ключей для rndc и правильно их прописать. Поскольку named - это штатный демон для FreeBSD, то его конфиг находится в /etc/namedb (а не в /usr/local/etc/named, как обычно), а если еще точнее, то в /var/named/etc/namedb.  
 
Итак запускаем rndc-confgen:

 
root@localhost# rndc-confgen  
                                                                                     
# Start of rndc.conf  
key "rndc-key" {  
        algorithm hmac-md5;  
        secret "zDfVVNmsufD3PYiGeXNlmw==";  
};  
 
options {  
        default-key "rndc-key";  
        default-server 127.0.0.1;  
        default-port 953;  
};  
# End of rndc.conf  
 
# Use with the following in named.conf,  
# adjusting the allow list as needed:  
# key "rndc-key" {  
#       algorithm hmac-md5;  
#       secret "zDfVVNmsufD3PYiGeXNlmw==";  
# };  
#  
# controls {  
#       inet 127.0.0.1 port 953  
#       allow { 127.0.0.1; } keys { "rndc-key"; };  
# };  
# End of named.conf 

 

Отсюда видно,что именно и в какой файл мы должны вписать, так и поступаю- делюCopy/Paste в указанные файлы. Толькораскомментировав ('#') то, что указано для named.conf.  
    Cамое время вписать в /etc/rc.conf строку:

named_enable="YES"
 

   После чего  лучше перегрузить компьютер,  но если перезагружать очень  не хочется, то можно запустить  его командой /usr/sbin/named -t /var/named -u bind. Если на команду rndcreload сервер реагирует адекватно, значит все в порядке.  
 
     ДНС может использоваться следующими способами:  
1. Кеширующий ДНС  
2. Мастер ДНС - главный держатель зоны  
3. Подчиненный ДНС - умеет скачивать доверенную зону, хранить у себя и обслуживать ДНС запросы на эту зону. 
 
 
  
Итак наш named.conf:

 
#Это вносится  от rndc-confgen  
key "rndc-key" {  
algorithm hmac-md5;  
secret "zDfVVNmsufD3PYiGeXNlmw==";  
};  
 
controls {  
inet 127.0.0.1 port 953  
allow { 127.0.0.1; } keys { "rndc-key"; };  
};  
 
# В trusted вносим сервера вторичные, провайдерские, те которые могут скачивать зоны,  
# то есть доверенные узлы. Остальным лишняя информация не нужна.  
acl "trusted"    
   {  
    192.168.0.0/24;  
    127.0.0.1;  
    195.196.197.198;  
    195.196.197.199;  
    195.94.224.129;  
   };  
 
# Описываем общие опции для всех зон:  
options  
    {  
    directory "/etc/namedb";  
    pid-file "/var/run/named/pid";  
    dump-file "/var/dump/named_dump.db";  
    statistics-file "/var/stats/named.stats";  
    allow-transfer { trusted; };              # имеют права скачивать зону  
    allow-query { any; };                     # имеют право отпралять запрос  
    allow-recursion { any; };                 # позволять рекурсивные запросы  
    listen-on{ any; };                       # слушать ip со всех нтерфейсов,  
    query-sourceaddress * port 53;  
    auth-nxdomainyes;  
    version "WinDNS 1.01";                      
    };  
 
# как будут записываться логи  
logging {  
    categorylame-servers { null; };  
    categorydefault { default_syslog;};  
channeldefault_log {  
        file "/var/log/dns.log";  
        severitynotice;  
        print-timeyes;  
        print-categoryyes;  
        print-severityyes;  
                     };  
 
    categoryqueries{ default_log;};  
    categoryxfer-in { default_log; };  
    categoryxfer-out { default_log; };  
    categorysecurity { default_log; };  
    categoryresolver { default_log; };  
    categoryclient { default_log; };  
    categoryunmatched { default_log; };  
    categorydefault { default_log; };  
    categorydatabase { default_log; };  
 
};  
 
# Для кеширующего ДНС-а нужна такая запись:  
zone "."  {  
    typehint;  
    file "named.root"; # обычно этот файл присутсвует в комплекте bind  
    };  
 
# Зона локалхоста  
zone "localhost" {  
    typemaster;  
    file "localhost.zone";  
    };  
 
# описываем обратную зону для локалхоста  
# для этого достаточно запустить скрипт sh /etc/namedb/make-localhost  
zone "0.0.127.IN-ADDR.ARPA" {  
    typemaster;  
    file "localhost.rev";  
    notifyno;  
    }; 

Здесь представлено описание доверительной зоны.

Файл /etc/named/localhost.zone

$ttl 1D  
@       IN      SOA  dommain.ru. admin.domain.ru. (  
2007110201 ;serial  
108000 ;refresh  
1800 ;retry  
1209600 ;expiry  
604800)  
    IN  NS      @     

IN  A       127.0.0.1 

Пояснения:  
 
1 Строка: "$TTL 1D"  - Time To Live 1 Day. Именно со строчки TTL должен начинаться файл зоны. В противном случае named его не прочитает  
 
2 строка: "@" (собачка :) - означает описанную зону в named.conf, в нашем случае localhost, IN  - без комментариев, SOA (startofautherity кажется) ответсвенный сервер, dommain.ru. - наш домен (обязательно с точкой), admin.domain.ru. - наше мыло (ибо собачка используется как имя зоны). Во второй строке обязательно должна присутсвовать SOA-запись .  
 
3 строка: серийный номер для обновления. Если в зону вносятся любые изменения номер должен быть увеличен. Обычно, номер делают как ГГГГ-ММ-ДД 01-99. Благодря, такой нехитрой формуле можно гарантировать возрастающую уникальность серийного номера зоны.  
 
4 строка: обновляться каждые 30 часов  
 
5 строка: повтроять через полчаса  
 
6 строка: истечение срока 1209600 сек = 2 недели  
 
8 запись типа: "    IN NS   @" - сокращенная, полная выглядит так:  
localhost.               IN    NS      @    или  
@                            IN    NS      @    что в сущности одно и то же из named.conf  
Этой строкой мы объясняем кто будет мастер-сервером ДНС (выражение IN NS) для этой зоны. Как оказывается он сам и будет.  
 
9 запись типа "    IN  A       127.0.0.1" тоже сокращенная, полный вариант описан чуть выше. Этой строкой мы объясняем на какой ip-адрес мы присваиваем имя localhost.  
 
Итак, после такого конфига у нас должен быть работающий кеширующий DNS-сервер. Пробуем:

 
root@localhost# rndc reload  
server reload successful  
root@localhost# echo "nameserver\t127.0.0.1" > /etc/resolv.conf  
root@localhost# host mail.ru  
mail.ru has address 194.67.57.126  
mail.ru has address 194.67.57.226  
mail.ru has address 194.67.57.26  
mail.ru mail is handled by 10 mxs.mail.ru. 

 
В ответ на команду "host" приходит ответ, значит наш DNS на 127.0.0.1 работает. Вообщем, кеширующий ДНС мы запустили.  
 
Теперь самое время прописать какую-нибудь зону. Например ounix.ru - домен второго уровня, полностью принадлежит нам. Тогда в /etc/namedb/named.conf вписываем:

zone "ounix.ru" {  
    type master;  
    file "ounix.ru";  
    allow-transfer { trusted;};  
        }; 
 

   А в файле "ounix.ru" мы уже описываем нашу зону и все её поддомены, NS и MX записи:

 
 
$TTL 38400  
@       IN      SOA     ns1.ounix.ru. admin.ounix.ru. (  
2007102501 ;serial  
108000 ;refresh  
1800 ;retry  
1209600 ;expiry  
604800)  
 
@       IN      NS      ns1.ounix.ru.       ; Первый (master) DNS сервер  
@       IN      NS      ns2.ounix.ru.       ; Вторичный (slave) серверзоны  
@       IN      MX 10   mail.ounix.ru.      ; MX-записьнаподдомен mail, опишемчутьпозже  
@       IN      A       195.91.211.84       ; Сама зона присваивается машине                   
mail    IN      A       195.91.211.84       ; поддомен mail присваеваем ip  
ns1     IN      A       195.91.211.84       ; поддомен ns1 тудаже  
ns2     IN      A       195.94.224.129      ; авотподдомен ns2 уйдетнадругойсервер  
ftp     IN      A       195.91.211.84        
www     IN      A       195.91.211.84        
dark    IN      A       195.91.211.84  
unix    IN      A       195.91.211.84  
test    IN      A       195.91.211.84  
jabber  IN      A       195.94.224.129

В работе описаны прямые зоны на localhost и на serv1

Хочется обратить внимание что NS и MX записи могут быть только на доменные имена, но никак не на ip адреса. Если мы пишем имя хоста полностью, обязательно ставим точку в конце, в противном случае к записи без точки добавляется имя зоны. Например, "mail" тождественно "mail.ounix.ru."  
   Таким образом, мы описали зону на master-сервере DNS. А как же вторичные сервера прописывают у себя зоны? Вот так: 

zone "ounix.ru" {  
        type slave;  
        file "slave/ounix.ru";  
        masters { 195.91.211.84; };  
    };

 
  

Мы указали, что  являемся подчиненным DNS сервером для  этой зоны, что мастер у нас 195.91.211.84, что скачивать зону на ounix.ru надо с него, а хранить ее надо в /etc/namedb/slave/ounix.ru.  И после перезапуска BIND-а, если нигде нет ошибок, на подчиненном сервере появится копия файла зоны ounix.ru 

Настраиваем обратные зоны аналогично :

 
Установка и конфигурирование MySQL

MySQL - система управления базами данных (СУБД) очень популярная в веб-разработке. MySQL используется для хранения данных для многих популярных веб-приложений.

Установка MySQL

  1. Первым шагом является установка MySQL-сервера, для этого необходимо выполнить следующую команду:

sudo apt-get install mysql-server-5.1

Во время установки  предлагается ввести пароль. Введенный  пароль 111111. MySQL сервер готов для настройки и запуска. В данный момент, нет необходимости изменять конфигурационный файл MySQL, можно лишь добавить, что располагается он здесь /etc/my.cnf.

Настройка базы данных MySQL

Активизировать  базу данных можно при помощи команды:

sudomysql_install_db

Далее, мы создадим базу данных и предоставим пользователям  разрешений на использование баз  данных. Для этого необходимо войти  в MySQL:

mysql -uroot -p

После того как  вы введете пароль root пользователя MySQL, вы сможете начать взаимодействие с MySQL сервером.

Для создания базы данных и предоставления пользователям  привилегий, введите следующую команду. Обратите внимание, двоеточие (;) в конце линии означает завершение вводы команды. Команда должна выглядеть следующим образом:

create database test; 
grant all on test.* to ’user’ identified by ’12345’; flush privileges;

В приведенном  выше примере, test это имя базы данных, user - имя пользователя c паролем 12345. Обратите внимание, что база данных имен пользователей и паролей используются только подключения к базе данных. Использование этой базы не обязательно.

Мы завершили  настройку MySQL и теперь вы можете передать учетные данные базы данных пользователям. Для выхода из администрирования MySQL введите следующую команду:

quit

Если необходимо подключатся к базе удалённо необходимо выполнить следующие действия: 

  sudo vim /etc/mysql/my.cnf
   

Находим строку: 

  bind-address = 127.0.0.1
   

Комментируем  её, добавив # в начало строки: 

  # bind-address = 127.0.0.1
   

Сохраняем файл конфигурации перезапускаем MySql: 

  sudo /etc/init.d/mysql restart
   

Всё. Теперь к  серверу MySQL можно подключаться извне.

Осталось создать  пользователей которым разрешено удалённое подключение.

Запускаем консоль  MySql и входим под : 

  mysql -uroot -p
   

Теперь создаём  пользователя:

  GRANT ALL PRIVILEGES ON *.* TO 'root'@'remote_addr' IDENTIFIED BY 'password' WITHGRANT OPTION;

Вместо ’remote_addr’ укажите адрес хоста с которого планируется подключаться или можно указать ’%’тогда подключение будет разрешено с любого адреса, ’password’ пароль пользователя.

Для непривилегированного пользователя вместо ’GRANT ALL PRIVILEGES’ можно указать конкретные разрешённые операции, например:

  GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARYTABLES, LOCK TABLES ON *.* TO 'root'@'remote_addr' IDENTIFIED BY 'password';

Так же можно  ограничить доступ к база и таблицам указав вместо ’ON *.*’ - ’ON table’ или ’ON database.*’или ’ON database.table’, где ’table’ - имя таблица, а ’database’ - имя базу данных. 

Например, нужен  пользователь без пароля работающий с существующими таблицами в базе новостей, который может создавать, удалять, обновлять и делать выборку. 

 

Программы на языке сетевых  приложений  Java для работы с MySQL-сервеом

import java.sql.Connection;          
import java.sql.DriverManager;

import java.sql.Statement;      

  public class Main {  
  public static void main(String[] argv) throws Exception {  
  Class.forName("com.mysql.jdbc.Driver");   

  • Connection con = DriverManager.getConnection("jdbc:mysql://10.0.2.1:3306/ "root", «111111");   //Создание соединения с сервером 
        Statement st = con.createStatement();  //Создание переменной выражения 
        st.executeUpdate("CREATE DATABASE myDB");  
      }}

Программа позволяет клиенту подключатся  и создавать БД на сервере.

Подключение к Mysql-серверу