Установка mariadb. Установка MariaDB на Debian
2 января, 2017 12:16 пп 13 224 views | Комментариев нетТребования
- Сервер CentOS 7.
- Пользователь с доступом к sudo.
Все необходимые инструкции можно найти в .
1: Установка MariaDB
Чтобы установить MariaDB, используйте репозиторий Yum. Запустите следующую команду и нажмите y, чтобы продолжить.
sudo yum install mariadb-server
После завершения установки запустите демон:
sudo systemctl start mariadb
Команда systemctl не показывает вывод некоторых команд. Чтобы убедиться, что демон запущен, введите:
sudo systemctl status mariadb
Если демон MariaDB был запущен, в выводе команды будут строки:
Active: active (running)
[…]
Dec 01 19:06:20 centos-512mb-sfo2-01 systemd: Started MariaDB database server.
Теперь нужно настроить автозапуск MariaDB. Для этого введите:
sudo systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
После этого нужно обеспечить безопасность данных.
2: Безопасность MariaDB
После завершения установки нужно запустить встроенный сценарий безопасности MariaDB, который изменяет некоторые опции по умолчанию и блокирует удалённый root-логин. Чтобы запустить сценарий, введите:
sudo mysql_secure_installation
Сценарий предоставляет подробное описание каждого шага. Сначала он запросит root-пароль. Поскольку в новой установке такого пароля пока нет, просто нажмите Enter. После этого сценарий предложит вам создать такой пароль. Введите сложный пароль и подтвердите его.
После этого сценарий задаст вам ряд вопросов. Чтобы принять данные по умолчанию, можете просто нажать Y и Enter. Сценарий заблокирует анонимных пользователей и удалённый root логин, удалит тестовые таблицы и перезагрузит привилегии.
3: Тестирование MariaDB
Теперь нужно убедиться, что установка MariaDB прошла успешно.
Попробуйте подключиться к БД с помощью инструмента mysqladmin (это клиент для запуска команд администрирования). Чтобы подключиться к MariaDB как root (-u root), ввести пароль (-p) и запросить версию программы, введите команду:
mysqladmin -u root -p version
Команда выведет:
mysqladmin Ver 9.0 Distrib 5.5.50-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Server version 5.5.50-MariaDB
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 4 min 4 sec
Threads: 1 Questions: 42 Slow queries: 0 Opens: 1 Flush tables: 2 Open tables: 27 Queries per second avg: 0.172
Это значит, что установка СУБД MariaDB прошла успешно.
Заключение
Теперь вы умеете выполнять базовую установку и настройку MariaDB.
Сегодня займемся поднятием одной из наиболее востребованных ролей любого linux сервера, которые занимают в этом функциональном сегменте лидирующую роль. Настройка web сервера CentOS 7 на базе связки популярного http сервера apache , интерпретатора php и сервера баз данных mysql , или коротко — установка lamp. Данная связка является самой популярной конфигурацией на сегодняшний день среди веб хостинга. Хотя последнее время ей на пятки наступает та же компания, но на базе nginx, возможно уже и опередила, точных данных у меня нет на этот счет.
Данная статья является частью единого цикла статьей про сервер .
Web сервер на CentOS 7
Итак, наш веб сервер centos будет состоять из трех основных компонентов — http сервера apache , интерпретатора языка программирования php и сервера баз данных mysql . Познакомимся немного с каждым из них:
- Apache — http сервер или просто веб сервер апач. Является кросплатформенным ПО, поддерживающим практически все популярные операционные системы, в том числе и Windows. Ценится прежде всего за свою надежность и гибкость конфигурации, которую можно существенно расширить благодаря подключаемым модулям, которых существует великое множество. Из недостатков отмечают большую требовательность к ресурсам, по сравнению с другими серверами. Держать такую же нагрузку, как, к примеру, nginx, apache не сможет при схожих параметрах железа.
- PHP — язык программирования общего назначения, который чаще всего применяется в веб разработке. На сегодняшний день это самый популярный язык в этой области применения. Поддерживается практически всеми хостинг-провайдерами.
- Mysql — система управления базами данных. Завоевала свою популярность в среде малых и средних приложений, которых очень много в вебе. Так что, как и php, на сегодняшний день является самой популярной бд, использующейся на веб сайтах. Поддерживается большинством хостингов. В CentOS вместо mysql устанавливается mariadb — ответвление mysql. Они полностью совместимы, возможен в любой момент переход с одной субд на другую и обратно. Последнее время я встречал информацию, что mariadb пошустрее работает mysql и люди потихоньку перебираются на нее. На практике мне не довелось это наблюдать, так как никогда не работал с нагруженными базами данных. А в обычных условиях разница не заметна.
Подопытным сервером будет выступать , характеристики следующие:
Процессор | 2 ядра |
Память | 8 Gb |
Диск | 150 Gb SSD |
Это кастомная настройка параметров. Они не оптимальны по цене, но мне были нужны именно такие.
Хочу сразу уточнить, что разбираю базовую дефолтную настройку. Для улучшения быстродействия, повышения надежности и удобства пользования нужно установить еще несколько инструментов, о чем я расскажу отдельно. В общем случае для организации веб сервера будет достаточно того, что есть в этой статье.
Если у вас еще нет сервера, то вам надо выполнить . А если сервер уже установлен, то не забудьте его . Рекомендую обратить внимание именно на настройку, так как там много полезной информации, которую в рамках этой статьи я не даю — обновление системы, настройка фаервола, установка редактора и многое другое.
Настройка apache в CentOS 7
В CentOS служба apache называется httpd . Когда я только знакомился с этим дистрибутивом, мне было непривычно. В Freebsd и Debian, с которыми я до этого работал служба веб сервера называлась apache, хотя где-то я замечал, кажется во фрюхе, что файл конфигурации имеет имя httpd.conf. До сих пор я не знаю, почему распространились оба эти названия. Был бы рад, если бы со мной кто-то поделился информацией на этот счет в комментариях.
Теперь приступим к установке apache . В CentOS 7 это делается очень просто:
# yum install -y httpd
Добавляем apache в автозагрузку:
# systemctl enable httpd
Запускаем apache в CentOS 7:
# systemctl start httpd
Проверяем, запустился ли сервер:
# netstat -tulnp | grep httpd tcp6 0 0:::80:::* LISTEN 21586/httpd
Все в порядке, повис на 80-м порту, как и положено. Уже сейчас можно зайти по адресу http://ip-address и увидеть картинку:
Теперь займемся настройкой apache. Я предпочитаю следующую структуру веб хостинга:
Создаем подобную структуру:
# mkdir /web && mkdir /web/site1.ru && mkdir /web/site1.ru/www && mkdir /web/site1.ru/logs # chown -R apache. /web
IncludeOptional conf.d/*.conf
Если нет, раскомментируем и идем в каталог /etc/httpd/conf.d. С оздаем там файл site1.ru.conf :
Перезапуск apache в centos
Теперь делаем restart apache :
# systemctl restart httpd
Если возникли какие-то ошибки — смотрим лог apache /var/log/httpd/error_log . Если все в порядке, то проверим, нормально ли настроен наш виртуальный хост. Для этого создадим в папке /web/site1.ru/www файл index.html следующего содержания:
# mcedit /web/site1.ru/www/index.html
Апач настроен!
# chown apache. /web/site1.ru/www/index.html192.168.1.25 site1.ru
где 192.168.1.25 ip адрес нашего веб сервера.
Теперь в браузере набираем адрес http://site1.ru . Если видим картинку:
значит все правильно настроили. Если какие-то ошибки, то идем смотреть логи. Причем в данном случае не общий лог httpd , а лог ошибок конкретного виртуального хоста по адресу /web/site1.ru/logs/error.log .
Сразу же обращу ваше внимание на настройку ротации логов виртуальных хостов. Частенько бывает, что если сразу не настроишь, потом забываешь. Но если сайт с хорошей посещаемостью, то логи будут расти стремительно и могут занять очень много места. Лучше настроить ротацию логов веб сервера сразу же после создания. Сделать это не сложно.
Чтобы настроить ротацию логов виртуальных хостов, необходимо отредактировать файл /etc/logrotate.d/httpd . Он создается во время установки apache и включает в себя настройку ротации стандартного расположения логов. А так как мы перенесли логи каждого виртуального хоста в индивидуальную папку, необходимо добавить эти папки в этот файл:
# mcedit /etc/logrotate.d/httpd /web/*/logs/*.log /var/log/httpd/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript }
В принципе, простейший веб сервер уже готов и им можно пользоваться. Но вряд ли сейчас найдутся сайты со статическим содержимым, которым достаточно поддержки только html. Так что продолжим нашу настройку.
Если вам необходимо организовать работу сайта по протоколу https , то воспользуйтесь руководством по .
Установка php в CentOS 7
Для поддержки динамического содержимого сайтов выполним следующий шаг. Установим php в CentOS 7:
# yum install -y php
И следом еще несколько полезных компонентов. Установим популярные модули для php :
# yum install -y php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd
Выполним перезапуск apache:
# systemctl restart httpd
Создадим файл в директории виртуального хоста и проверим работу php:
# mcedit /web/site1.ru/www/index.php # chown apache. /web/site1.ru/www/index.php
Заходим по адресу http://site1.ru/index.php
Вы должны увидеть вывод информации о php. Если что-то не так, возникли какие-то ошибки, смотрите лог ошибок виртуального хоста, php ошибки будут тоже там.
Где лежит php.ini
После установки часто возникает вопрос, а где хранятся настройки php? Традиционно они находятся в едином файле настроек. В CentOS php.ini лежит в /etc , прямо в корне. Там можно редактировать глобальные настройки для все виртуальных хостов. Персональные настройки каждого сайта можно сделать отдельно в файле конфигурации виртуального хоста, который мы сделали раньше. Давайте добавим туда несколько полезных настроек:
# mcedit /etc/httpd/conf.d/site1.ru.conf
Добавляем в самый конец, перед
Php_admin_value date.timezone "Europe/Moscow" php_admin_value max_execution_time 60 php_admin_value upload_max_filesize 30M
Для применения настроек нужно сделать restart apache. Теперь в выводе phpinfo можно увидеть изменение настроек.
Обновление до php 5.6 в CentOS 7
В нашем примере мы установили на CentOS 7 php 5.4 из стандартного репозитория. А что делать, если нам нужна более новая версия, например php 5.6 ? В таком случае нужно выполнить обновление php.
# wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm # rpm -Uvh remi-release-7*.rpm
Теперь обновляем php 5.4 до php 5.6 :
# yum --enablerepo=remi,remi-php56 install php php-common php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd
Перезапускаем apache:
# systemctl restart httpd
И идем смотреть вывод phpinfo — http://site1.ru/index.php
Отлично, мы обновили php до версии 5.6.
Установка MySQL в CentOS 7
Как я уже писал ранее, сейчас все большее распространение получает форк mysql — mariadb . Она имеет полную совместимость с mysql, так что можно смело пользоваться. Я предпочитаю использовать именно ее.
Устанавливаем mariadb на CentOS 7:
# yum install -y mariadb mariadb-server
Добавляем mariadb в автозапуск:
# systemctl enable mariadb.service
Запускаем mariadb:
# systemctl start mariadb
Проверяем, запустилась или нет:
# netstat -tulnp | grep mysqld tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 22276/mysqld
Обращаю внимание, что она даже в системе отображается как сервис mysqld . Теперь запускаем стандартный скрипт настройки безопасности:
# /usr/bin/mysql_secure_installation
Не буду приводить весь вывод работы этого скрипта, там все достаточно просто и понятно. Сначала задаем пароль для root (текущий пароль после установки пустой), потом удаляем анонимных пользователей, отключаем возможность подключаться root удаленно, удаляем тестового пользователя и базу.
Файл настроек mysql/mariadb лежит в /etc/my.cnf . Для обычной работы достаточно настроек по-умолчанию. Но если вы решите изменить их, не забудьте перезапустить службу баз данных.
Перезапуск mariadb /mysql в CentOS 7:
# systemctl restart mariadb
На этом все. Базовый функционал web сервера на CentOS 7 настроен.
Буду рад замечаниям и комментариям по теме статьи. Напоминаю, что данная статья является частью единого цикла статьей про сервер .
Практикум по Kali Linux
Курс для тех, кто интересуется проведением тестов на проникновение и хочет практически попробовать себя в ситуациях, близких к реальным. Курс рассчитан на тех, у кого еще нет опыта в информационной безопасности. Обучение длится 3 месяца по 4 часа в неделю. Что даст вам этот курс:- Искать и эксплуатировать уязвимости или изъяны конфигурации в корпоративных сетях, web сайтах, серверах. Упор на пентест ОС Windows и на безопасность корпоративного сегмента.
- Изучение таких инструментов, как metasploit, sqlmap, wireshark, burp suite и многие другие.
- Освоение инструментария Kali Linux на практике - с ним должен быть знаком любой специалист по ИБ.
Я собираюсь установить MariaDB SSL (Secure Sockets Layer) а также безопасные соединения от клиента MySQL и приложения PHP. Как включить SSL для сервера и клиента MariaDB, работающего в Linux или Unix-подобной системе?
MariaDB – сервер базы данных, который предлагает функциональные возможности вклинивания для сервера MySQL.
MariaDB был создан некоторыми из оригинальных авторов MySQL, с помощью более широкого штата разработчиков Free и другого программного обеспечения с открытым исходным кодом. В дополнение к основным функциям MySQL, MariaDB предлагает богатый набор улучшений функций, включая альтернативные механизмы хранения, оптимизацию серверов и другие исправления. В этом руководстве я собираюсь рассказать о том, как настроить сервер MariaDB с помощью SSL и как установить безопасные соединения с помощью консоли и PHP-скриптов.
При создании сертификатов SSL важно использовать 192.168.1.100 в качестве стандартного имени.
Шаг 1 – Установка MariaDB
Введите команду в соответствии с вашим вариантом Linux или Unix.
Установка MariaDB сервера/клиента на Ubuntu/Debian Linux
Введите одну из следующих команд: apt-get command или apt command:
$ sudo apt-get install mariadb-server mariadb-client
Установка MariaDB сервера/клиента на CentOS/RHEL/Fedora Linux
Введите следующую команду yum :
$ sudo yum install mariadb-server mariadb
Для пользователей Fedora Linux необходимо ввести команду dnf :
$ sudo dnf install mariadb-server mariadb
Установка MariaDB сервера/клиента на Arch Linux
Введите следующую команду pacman:
$ sudo pacman -S mariadb
Установка MariaDB сервера/клиента на FreeBSD unix
Для установки порта запустите:
# cd /usr/ports/databases/mariadb100-server/ && make install clean # cd /usr/ports/databases/mariadb100-client/ && make install clean
Чтобы добавить бинарный пакет, введите:
# pkg install mariadb100-server mariadb100-client
Шаг 2 – Обеспечение безопасной установки MariaDB
Введите следующую команду:
$ mysql_secure_installation
Рисунок.01: Обезопасьте установку MariaDBШаг 3 – Создайте CA сертификат
Создайте директорию под названием ssl в /etc/mysql/ directory :
$ cd /etc/mysql $ sudo mkdir ssl $ cd ssl
Значение : Стандартное значение имени (Common Name), используемое для сертификатов / ключей сервера и клиента, должно отличаться от стандартного значения имени (Common Name), используемого для сертификата CA. Чтобы избежать каких-либо проблем, я устанавливаю их следующим образом:
Стандартное имя CA: MariaDB admin
Стандартное имя сервера: MariaDB server
Стандартное имя клиента: MariaDB client
Введите следующую команду для создания нового CA ключа:
$ sudo openssl genrsa 2048 > ca-key.pem
Примеры возможных выводов данных:
Рисунок.02: Создание CA ключа
Введите следующую команду для создания сертификата с помощью этого ключа:
$ sudo openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem
Рисунок.03: Используя ключ CA, сгенерируйте сертификат CA для MariaDB
Примеры возможных выводов данных:
Теперь у вас должно быть два следующих файла::
- /etc/mysql/ssl/ca-cert.pem – Файл сертификата для Центра сертификации (Certificate Authority (CA)).
- /etc/mysql/ssl/ca-key.pem – Файл ключа для Центра сертификации (Certificate Authority (CA)).
Я собираюсь использовать оба файла для создания сертификатов сервера и клиента.
Шаг 4 – Создание сертификата сервера
Для создания ключа сервера, запустите:
$ sudo openssl req -newkey rsa:2048 -days 365000 -nodes -keyout server-key.pem -out server-req.pem
Примеры возможных выводов данных:
Рисунок 04: Создание ключа сервера для сервера MariaDB
Затем обработайте ключ RSA сервера, для этого введите:
$ sudo openssl rsa -in server-key.pem -out server-key.pem
Примеры возможных выводов данных:
Writing RSA key
Наконец, подпишите сертификат сервера, для этого запустите:
$ sudo openssl x509 -req -in server-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
Примеры возможных выводов данных:
Signature ok subject=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd/CN=MariaDB server Getting CA Private Key
Теперь у вас должны появиться дополнительные файлы:
- /etc/mysql/ssl/server-cert.pem – MariaDB файл сертификата сервера.
- /etc/mysql/ssl/server-key.pem – MariaDB файл ключа сервера.
Вы должны использовать не менее двух файлов на сервере MariaDB и любых других узлах, которые вы собираетесь использовать для трафика кластера/репликации. Эти два файла будут защищать связь на стороне сервера.
Шаг 5 – Создание сертификата клиента
Клиент mysql, и приложение PHP/Python/Perl/Ruby будет использовать сертификат клиента для защиты соединяемости клиента. Вы должны установить следующие файлы на всех ваших клиентах, включая веб-сервер. Чтобы создать клиентский ключ, запустите:
$ sudo openssl req -newkey rsa:2048 -days 365000 -nodes -keyout client-key.pem -out client-req.pem
Примеры возможных выводов данных:
Рисунок.05: Создание ключа клиента для сервера MariaDB
Затем обработайте ключ клиента RSA, для этого введите
$ sudo openssl rsa -in client-key.pem -out client-key.pem writing RSA key
Наконец, подпишите сертификат клиента, для этого запустите:
$ sudo openssl x509 -req -in client-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
Примеры возможных выводов данных:
Signature ok subject=/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd/CN=MariaDB client Getting CA Private Key
Шаг 6 – Как проверить сертификаты?
Введите следующую команду, чтобы проверить сертификаты, чтобы убедиться, что все было создано правильно:
$ openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
Примеры возможных выводов данных:
Server-cert.pem: OK client-cert.pem: OK
Не должно быть никаких ошибок, и вы должны получить ответ OK для сертификатов сервера и клиента.
Шаг 7 – Настройте сервер MariaDB для использования SSL
Отредактируйте файл vi /etc/mysql/mariadb.conf.d/50-server.cnf или /etc/mysql/mariadb.cnf следующим образом:
$ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
Добавьте следующим образом:
### MySQL Server ### ## Securing the Database with ssl option and certificates ## ## There is no control over the protocol level used. ## ## mariadb will use TLSv1.0 or better. ## ssl ssl-ca=/etc/mysql/ssl/ca-cert.pem ssl-cert=/etc/mysql/ssl/server-cert.pem ssl-key=/etc/mysql/ssl/server-key.pem
Сохраните и закройте файл. Вы можете перезапустить mariadb следующим образом:
$ sudo /etc/init.d/mysql restart
$ sudo systemctl restart mysql
Шаг 8 – Настройте клиент MariaDB для использования SSL
Настройте MariaDB клиент как 192.168.1.200 для использования SSL (добавьте в /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf ):
$ sudo vi /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf
Добавьте в раздел:
## MySQL Client Configuration ## ssl-ca=/etc/mysql/ssl/ca-cert.pem ssl-cert=/etc/mysql/ssl/client-cert.pem ssl-key=/etc/mysql/ssl/client-key.pem ### This option is disabled by default ### ### ssl-verify-server-cert ###
Сохраните и закройте файл. Вы должны скопировать файлы /etc/mysql/ssl/ca-cert.pem , /etc/mysql/ssl/client-cert.pem и /etc/mysql/ssl/client-key.pem для всех ваших клиентов. Например:
{vivek@server}: rsync /etc/mysql/ssl/ca-cert.pem /etc/mysql/ssl/client-cert.pem /etc/mysql/ssl/client-key.pem \ user@client:/etc/mysql/ssl
Шаг 9 – Проверка
Введите следующую команду:
$ mysql -u {User-Name-Here} -h {Server-IP-here} -p {DB-Name-Here} $ mysql -u root -h 192.168.1.100 -p mysql $ mysql -u root -h 127.0.0.1 -p mysql
Введите следующую SHOW VARIABLES LIKE ‘%ssl%’; команду в MariaDB [(none)]> строке:
MariaDB [(none)]> SHOW VARIABLES LIKE "%ssl%";
ИЛИ выполните команду status:
MariaDB [(none)]> status;
Примеры возможных выводов данных:
Рисунок 06: Установление безопасного соединения с консолью и ее проверкаПроверьте соединения SSL и TLS. Следующая команда должна завершиться неудачей, так как ssl 3 не поддерживается и, соответственно, она не настроена для использования:
$ openssl s_client -connect 192.168.1.100:3306 -ssl3 140510572795544:error:140A90C4:SSL routines:SSL_CTX_new:null ssl method passed:ssl_lib.c:1878:
Проверьте TLS v 1/1.1/1.2:
$ openssl s_client -connect 192.168.1.100:3306 -tls1 $ openssl s_client -connect 192.168.1.100:3306 -tls1_1 $ openssl s_client -connect 192.168.1.100:3306 -tls1_2
Примеры возможных выводов данных:
CONNECTED(00000003) --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 5 bytes and written 7 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol: TLSv1 Cipher: 0000 Session-ID: Session-ID-ctx: Master-Key: Key-Arg: None PSK identity: None PSK identity hint: None SRP username: None Start Time: 1485335036 Timeout: 7200 (sec) Verify return code: 0 (ok) ---
Как читать файл захвата пакета tcpdump для проверки защищенной связи
Наконец, вы можете использовать анализатор пакетов команд tcpdump, который запускается под командной строкой, чтобы посмотреть порт 3306:
$ sudo tcpdump -i eth0 -s 65535 port 3306 -w /tmp/mysql.pcap
Теперь подключитесь к вашему приложению PHP/Python/Perl/Ruby mysql или консольному приложению mysql:
$ mysql -u bar -h 192.168.1.100 -p foo
Используйте tcpdump для проверки того, что никакая текстовая информация, включая пароли, не обменивается между сервером и клиентом. Это делается следующим образом:
$ tcpdump -r /tmp/mysql.pcap | less
Шаг 10 – Добавлениепользователя на MariaDB сервер
Введите следующую команду:
$ mysql -u root –p
Создайте базу данных под названием foo :
CREATE DATABASE foo;
Создайте пользователя с имение bar for для базы данных под названием foo :
GRANT ALL ON foo.* TO bar@localhost IDENTIFIED BY "mypassword" REQUIRE SSL;
Предоставление доступа с веб-сервера, размещенного по адресу 192.168.1.200 :
GRANT ALL ON foo.* TO [email protected] IDENTIFIED BY "mypassword" REQUIRE SSL;
Создайте безопасное соединение из оболочки bash
Вы можете войти в систему с консоли следующим образом:
$ mysql -u bar -p -h 192.168.1.100 foo
Создайте безопасное соединение из Python
Сначала установите интерфейс Python для MySQL:
$ sudo apt-get install python-mysql.connector
ИЛИ для Python v3.x
$ sudo apt-get install python3-mysql.connector
Здесь приведен пример кода Python для безопасного соединения с использованием:
#!/usr/bin/python import MySQLdb ssl = {"cert": "/etc/mysql/ssl/client-cert.pem", "key": "/etc/mysql/ssl/client-key.pem"} conn = MySQLdb.connect(host="192.168.1.100", user="bar", passwd="mypassword", ssl=ssl) cursor = conn.cursor() cursor.execute("SHOW STATUS LIKE "Ssl_cipher"") print cursor.fetchone()
#!/usr/bin/python # Note (Example is valid for Python v2 and v3) from __future__ import print_function import sys import mysql.connector from mysql.connector.constants import ClientFlag config = { "user": "bar", "password": "mypassword", "host": "192.168.1.100", "client_flags": , "ssl_ca": "/etc/mysql/ssl/ca-cert.pem", "ssl_cert": "/etc/mysql/ssl/client-cert.pem", "ssl_key": "/etc/mysql/ssl/client-key.pem", } cnx = mysql.connector.connect(**config) cur = cnx.cursor(buffered=True) cur.execute("SHOW STATUS LIKE "Ssl_cipher"") print(cur.fetchone()) cur.close() cnx.close()
Примеры возможных выводов данных:
("Ssl_cipher", "DHE-RSA-AES256-SHA")
| |1: Установка MariaDB
Debian 9 содержит пакет MariaDB 10.1 в стандартном репозитории. Это его вариант MySQL по умолчанию.
Чтобы установить его, обновите индекс пакетов:
Теперь установите пакет:
sudo apt install mariadb-server
Команда установит MariaDB, но не предложит вам выбрать пароль или изменить другие настройки. На данный момент установка MariaDB имеет несколько уязвимостей, которые нужно устранить.
2: Настройка MariaDB
После завершения установки нужно запустить сценарий безопасности, который удалит ненадёжные параметры и защитит БД от несанкционированного доступа.
sudo mysql_secure_installation
Сценарий задаст ряд вопросов. Сначала нужно указать root-пароль MariaDB. Это административная учетная запись MariaDB, которая имеет повышенные привилегии. Вы установили MariaDB только что и еще не внесли никаких изменений в конфигурацию, этого пароля пока у вас нет, поэтому просто нажмите Enter.
В следующем запросе скрипт предложит настроить пароль root для базы данных. Введите N и нажмите клавишу Enter. В Debian учетная запись root MariaDB тесно связана с автоматизированным обслуживанием системы, поэтому изменять стандартные методы аутентификации этой учетной записи нельзя. Иначе при обновлении пакета БД может повредиться, а доступ к учетной записи root может быть утрачен. Позже мы рассмотрим, как настроить дополнительную учетную запись администратора, если аутентификация сокетов вам не подходит.
На остальные вопросы можно нажать Y и Enter. Это удалит анонимных пользователей и тестовые базы данных, отключит удалённый root логин и обновит текущие настройки MariaDB.
3: Настройка поддержки парольной аутентификации
В новых установках Debian пользователь root MariaDB по умолчанию поддерживает аутентификацию с помощью плагина unix_socket, а не с помощью пароля. Это во многих случаях позволяет повысить безопасность и удобство использования, но также может усложнить работу, если вам необходимо разрешить доступ внешней программе (например, phpMyAdmin).
Поскольку сервер использует root-пользователя для таких задач, как ротация логов, запуск и остановка сервера, аутентификацию учетной записи root лучше не изменять. Изменение учетных данных в файле /etc/mysql/debian.cnf может сработать на начальном этапе, но дальнейшие обновления пакетов перезапишут эти изменения. Вместо этого разработчики рекомендуют создать отдельную учетную запись администратора с парольной аутентификацией.
Итак, создайте аккаунт под названием admin с теми же правами, что и у root, но с поддержкой парольной аутентификации. Для этого откройте командную строку MariaDB в терминале:
Теперь создайте нового пользователя с привилегиями root и поддержкой парольной аутентификации. Укажите в команде имя и пароль своего пользователя.
GRANT ALL ON *.* TO "admin"@"localhost" IDENTIFIED BY "password" WITH GRANT OPTION;
Сбросьте привилегии:
FLUSH PRIVILEGES;
Закройте оболочку MariaDB:
4: Тестирование MariaDB
При установке из стандартного репозитория MariaDB запускается автоматически. Чтобы убедиться в этом, проверьте состояние сервиса:
sudo systemctl status mariadb
mariadb.service - MariaDB database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-09-04 16:22:47 UTC; 2h 35min ago
Process: 15596 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSIT
Process: 15594 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
Process: 15478 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||
Process: 15474 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITI
Process: 15471 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysql
Main PID: 15567 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 27 (limit: 4915)
CGroup: /system.slice/mariadb.service
└─15567 /usr/sbin/mysqld
Sep 04 16:22:45 deb-mysql1 systemd: Starting MariaDB database server...
Sep 04 16:22:46 deb-mysql1 mysqld: 2018-09-04 16:22:46 140183374869056 /usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) starting as process 15567 ...
Sep 04 16:22:47 deb-mysql1 systemd: Started MariaDB database server.
Если СУБД по какой-то причине не запустилась, введите:
sudo systemctl start mariadb
Для дополнительной проверки вы можете попробовать подключиться к базе данных с помощью инструмента mysqladmin (это клиент, который позволяет запускать административные команды). Например, эта команда подключится к MariaDB как root и выведет версию с помощью Unix-сокета:
sudo mysqladmin version
mysqladmin Ver 9.1 Distrib 10.1.26-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Server version 10.1.26-MariaDB-0+deb9u1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 2 hours 44 min 46 sec
Threads: 1 Questions: 36 Slow queries: 0 Opens: 21 Flush tables: 1 Open tables: 15 Queries per second avg: 0.003
Если вы создали дополнительного администратора, вы можете выполнить эту операцию с помощью команды:
mysqladmin -u admin -p version
СУБД MariaDB запущена и работает должным образом.
В данной статье мы рассмотрим как установить и настроить Linux, Apache, MariaDB, PHP на Centos7 /RHEL 7. В новой версии Centos7 /RHEL 7 много изменений.
Что такое LAMP?
LAMP — комплект программного обеспечения на ОС, состоящей из операционной системы Linux, веб-сервера Apache, сервера базы данных MySQL и языка программирования PHP (или Perl / Python) . LAMP используется для работы тяжелых динамических веб-сайтов полностью состоящий из свободного программного обеспечения с открытым исходным кодом. В этой статье я собираюсь объяснить, как Linux, Apache, MySQL / MariaDB (замена для MySQL), PHP (LAMP) устанавливаются на CentOS 7 или RHEL 7.
- Устанавливаем RHEL 7 или CentOS 7 сервер. Открываем терминал к серверу по ssh, у Вас должны быть права суперпользователя root.
- Вам также понадобятся знания команд yum
- Вам понадобится IP адрес вашего сервера, используйте следующую комманду, что бы определить IP адрес для интерфейса eth0
- Полученный IP 10.180.10.10 адрес будем использовать для тестирования установки
Итак приступим
Установка Apache on a CentOS 7 /RHEL 7 сервер
Для установки веб сервера используем команду
Yum install httpd
Включите службу HTTPd в автозагрузки
systemctl enable httpd.service ln -s "/usr/lib/systemd/system/httpd.service" "/etc/systemd/system/multi-user.target.wants/httpd.service"Чтобы отключить, автоматическую загрузку
Systemctl disable httpd.service rm "/etc/systemd/system/multi-user.target.wants/httpd.service"
Запустите HTTPd службу на CentOS 7 / RHEL 7
systemctl start httpd.serviceНа данном этапе вы можете указать в веб-браузере IP-адрес вашего сервера, http://10.180.10.10. Вы увидите стартовую страницу apache:
Остановка HTTPd службы на CentOS 7 / RHEL 7
systemctl stop httpd.serviceПерезапуск HTTPd службы на CentOS 7 / RHEL 7
Просмотр статуса apache службы на CentOS 7 / RHEL 7
Убедитесь что веб сервер запущен
Systemctl status httpd.service
Также перезапуск веб сервера может быть выполнен следующей командой
Apachectl graceful
Проверка apache / httpd на наличие ошибок конфигурации в Centos 7/ RHEL 7
Apachectl configtest
Конфигурация по умолчанию HTTPD сервера:
- По умолчанию конфигурационный файл: /etc/httpd/conf/httpd.conf
- Файлы конфигурации, загружаемых модулей: /etc/httpd/conf.modules.d/ (например, PHP)
- Выберите MPMs как загружаемые модули и события: / etc/httpd/conf.modules.d/00-mpm.conf
- Стандартные порты: 80 и 443 (SSL)
- Файлы журналов по умолчанию: /var/log/httpd/{access_log,error_log}
Установка MariaDB на сервере CentOS 7 / RHEL
MariaDB — обновленная замена для сервера MySQL. На RHEL / CentOS 7 вместо MySQL используется система управления базами данных MariaDB. Введите следующую yum команду для установки MariaDB сервера:
Yum install mariadb-server mariadb
Для запуска MariaDB, используйте команду:
Systemctl start mariadb.service
Чтобы убедиться, что сервис MariaDB запускается автоматически во время загрузки, введите:
Systemctl enable mariadb.service
Вывод команды
Ln -s "/usr/lib/systemd/system/mariadb.service" "/etc/systemd/system/multi-user.target.wants/mariadb.service"
Чтобы остановить / перезапуск и отключить MariaDB используйте следующие команды:
Sudo systemctl stop mariadb.service #-- Остановить mariadb сервер sudo systemctl restart mariadb.service #-- Перзапусить mariadb сервер sudo systemctl disable mariadb.service #-- Отключить автозагрузку mariadb сервер sudo systemctl is-active mariadb.service #-- Проверка запущен ли сервер?
Первый запуск MariaDB
Введите следующую команду:
/usr/bin/mysql_secure_installation
Отвечая на вопросы Вы сможете настроить первоначальную безопасность БД
Проверка установки MariaDB
Введите следующую команду
Mysql -u root -p
Пример вывода:
Установка PHP на CentOS 7 / RHEL 7
Для установки PHP и модулей, такие как GD / mysql введите следующую комманду
Yum install php php-mysql php-gd php-pear
Необходимо перезагрузить HTTPD (Apache) сервер, введите:
Systemctl restart httpd.service
Для поиска всех других PHP модулей:
Yum search php-
Чтобы получить более подробную информацию о модуле:
Yum info php-pgsql
Проверка PHP на сервере
Создайте файл с именем /var/www/html/test.php следующим образом:
Vi /var/www/html/test.php
Добавьте следующий код:
LAMP сервер установлен, если у вас есть проблемы с настройкой сервера, мы производим разовые работы по установке и настройке web сервера LAMP .