База данных MariaDB

В репозитории Tiny Core Linux нет MySQL. В принципе установка полноценной тяжеловесной, в плане потребления оперативной памяти, базы данных на домашний WEB-сервер нерациональна. Для работы нескольких сайтов-визиток или одностраничников достаточно решения на файлах. БД на файлах выглядят ещё более привлекательной, если учесть специфику работы TCL. Всё что хранится на системном диске находится в быстродействующей оперативной памяти мультисервера. Файловые операции выполняются в разы быстрее, по сравнению с файлами на HDD. Но даже не смотря на все эти доводы, на ПК работающем под управлением Tiny Core Linux можно развернуть полноценный веб-сервер с базой данных практически ничем не отличающейся от MySQL. Но прежде чем мы начнем установку и настройку MySQL-сервера, всё же стоит рассмотреть несколько альтернативных вариантов баз данных для PHP.

Berkeley DB - самый простой вариант организации хранилища данных для проектов написаных на PHP. Подойдёт тем, кому не нужна выборка данных из БД путем сложных SQL-запросов. Весь процесс записи и чтения данных происходит через уникальный, для каждой строки, ключ. И если вам хоть немного знаком РНР, принцип хранения данных в Berkeley DB схож с работой сессий. Разница лишь в том, что сессии хранятся в отдельных временных файлах, а BDB состоит из одного файла, с неограниченым сроком жизни. Из-за своей простоты, скорость работы Berkeley DB очень высока, однако не может похвататься надежностью. При внезапном исчезновении питания мультисервера в момент записи даных в BDB, эти данные с большой долей вероятности будут утеряны.

Чтобы иметь возможность работать с Berkeley DB необходимо установить два расширения bsddb.tcz и libgdbm.tcz, которые придется "позаимствовать" из репозитория 3.x и установить вручную. После этого следует раскоментировать строку

/usr/local/apache2/conf/php5/extensions/dist.ini

...
extension=dba.so
...

и перезапустить веб-сервер. После этого в нашем PHP появится поддержка работы с Berkeley DB.

SQLite - БД использующая SQL запросы, популярность которой стоит наравне с более "серьезными" БД серверами. Если ваш проект не является высоконагруженым, то SQLite будет идеальным вариантом. Установка библиотеки сводится к копированию единственного расширения в систему:

tce-load -wi sqlite3.tcz

и раскоментированию соответствующей строки в файле расширений для PHP:

/usr/local/apache2/conf/php5/extensions/dist.ini

...
extension=sqlite3.so
...

После перезапуска apache вы cможете использовать SQLite в своих проектах.

Если же ни один из перечисленых выше вариантов организации базы данных по каким-то причинам вам не подходит, либо вы решили установить готовую CMS требующую обязательного наличия MySQL - следуем дальше.

MariaDB - это отколовшаяся ветвь разработки MySQL, которая распространяется по абсолютно свободной лицензии. Как для личного использования, так и для корпоративных целей. Работа и синтаксисы команд для этих двух баз совершенно идентичны. И если ваш сайт написан с использованием MySQL, 99% вероятности того, что он без каких либо переделок будет полноценно работать и с MariaDB, а значит и на нашем мультисервере. Осталось только её установить и настроить:

tce-load -wi mariadb.tcz

Файлы баз данных по умолчанию хранятся на системном диске. Это не очень удобно по причине того, что риск потерять данные при внезапном отключении/перезагрузке сервера велик, а постоянный бэкап файлов баз данных затратен по времени. К тому же размер оперативной памяти в сотни а то и тысячи раз меньше емкости жесткого диска, и заполнять RAM базами данных будет более чем неразумно. По этой причине в конфигурационном файле MariaDB мы укажем явно место хранения баз данных, а сами файлы скопируем на жесткий диск. Открываем /etc/my.cnf и добавляем строку после [mysqld]:

/etc/my.cnf

...
datadir = /mnt/HDD/mariadb/data/
...

После этого на жестком диске создаем директорию /mariadb/ и копируем в неё полностью папку /usr/local/mysql/data/. Чтобы настройки не потерялись после перезагрузки Tiny Core Linux, добавим файл /etc/my.cnf в список бэкап-файлов /opt/.filetool.lst. Теперь осталось прописать в скрипт автозагрузки команду удаления, ставшей уже не нужной, директории /usr/local/mysql/data/ со всем её содержимым. Это освободит дополнительно 13Мб оперативной памяти сервера.

/opt/bootlocal.sh

...
sudo rm -rf /usr/local/mysql/data
...

Посредством правки значений в файле конфигурации /etc/my.cnf можно настроить параметры сервера MariaDB в соответствии со своими нуждами. Учитывая практически полную идентичность MariaDB и MySQL процесс настройки конфигурационного файла для обоих БД абсолютно идентичен. Разница только в том, что наш /etc/my.cnf адаптирован под слабые вычислительные ресурсы мультисервера, и многие параметры в нём убраны для упрощения настройки.
   Запустим сервер MariaDB:

sudo /usr/local/mysql/bin/mysqld_safe &

Если вы планируете использовать MariaDB на своем мультисервере постоянно в связке с Apache+PHP, эту команду запуска необходимо добавить в скрипт /opt/bootlocal.sh. Для вывода всех возможных команд администрирования MySQL-сервером достаточно выполнить:

sudo /usr/local/mysql/bin/mysqladmin --help

Можно (и нужно в целях безопасности) задать пароль уже прописаному пользователю root командой password (по умолчанию он не задан) или, к примеру, остановить MySQL-сервер командой shutdown:

sudo /usr/local/mysql/bin/mysqladmin shutdown --password=[ваш пароль]

Работать с БД удаленно я привык через редакторы heidisq или dbForge Studio. Поэтому далее настроим MariaDB на возможность удаленного администрирования.

По умолчанию к БД подключиться можно только локально, по адресу 127.0.0.1. Сделаем это посредством PHP-скрипта и добавим сетевого администратора remote_admin со всеми правами и привелегиями root-a. Создаем файл /usr/local/apache2/htdocs/db.php с таким содержимым:

/usr/local/apache2/htdocs/db.php

<?php
$link=mysql_connect('127.0.0.1','root') or die('Не удалось соединиться: '.mysql_error());
mysql_select_db('mysql') or die('Не удалось выбрать базу данных');
$request='INSERT INTO user VALUES("%","remote_admin",PASSWORD("[ваш пароль]"),"Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","","","","","0","0","0","0","","","N","N")';
mysql_query($request) or die('Запрос не удался: '.mysql_error());
mysql_free_result($result);
mysql_close($link);
?>

Как видно синтаксис запросов к MariaDB ничем не отличается от MySQL. Если перейти в браузере по адресу

http://[IP сервера]/db.php

и выполнить наш скрипт, то сможем подключиться к MySQL-серверу удаленно под пользователем remote_admin с неограничеными правами. Теперь подключившись к MariaDB посредством dbForge Studio можно удаленно создать и скорректировать учетные записи в соответстви с требуемыми политиками безопасности.

ранее: "WEB-сервер. Apache+PHP"далее: "Proxy сервер POLIPO"

Обсуждение темы ещё не открыто. Вы можете быть первым.


Оставить комментарий

Имя:

Сообщение: