Введение
Любая работа с сервером после установки чаще всего начинается со стандартных обязательных действий, без которых либо не получится продвинуться дальше, либо будет неудобно работать. Например, вам в любом случае необходимо выполнить сетевые настройки, желательно обновить систему и установить часовой пояс. Рекомендуется сразу настроить автообновление времени, подрихтовать параметры sshd, установить midnight commander и выполнить другие настройки.
Об этом я хочу рассказать в статье. Я буду делиться своим реальным опытом работы. Это не значит, что нужно делать так, как я. Я могу в чем-то ошибаться, что-то делать не так удобно, как можно было бы сделать. Это просто советы, которые кому-то помогут узнать что-то новое, а кто-то возможно поделится со мной чем-то новым для меня, либо укажет на мои ошибки. Мне бы хотелось, чтобы это было так. Своими материалами я не только делюсь с вами знаниями, но и сам узнаю что-то новое в том числе и из комментариев и писем на почту.
Два, установка MySQL
① Скачать
Адрес загрузки MySQL:MySQL
Возьмите мою выбранную версию в качестве примера (бесплатная версия для установки), выберите MYSQL Community Server, а затем выберите свою версию справа. Моя — 64-разрядная. Загрузите соответствующую версию в формате zip.
После нажатия кнопки «Загрузить» произойдет переход к интерфейсу регистрации и входа. Следуйте его процессу, чтобы зарегистрироваться и загрузить его шаг за шагом. Конечно, если вы сочтете это бесполезным, просто выберите пропустить и загрузить напрямую.
① Разархивируйте, настройте файл my.ini
Как показано на рисунке выше, только что загруженный и распакованный файл не имеет файла my.ini и папки данных. Сейчас нам нужно создать файл конфигурации my.ini.нота:Не создавайте папку данных самостоятельно, она будет автоматически создана позже.
Откройте файл конфигурации my.ini с помощью Блокнота и введите следующее содержимое (каталог установки изменяется в соответствии с вашей ситуацией):
② Установить переменные среды
Настройте переменные среды MySQL и свойства системы (горячая клавиша: win + R Ввод команд в открытом рабочем окнеsysdm.cpl) -> Дополнительно -> Переменные среды -> Системные переменные ->
Добавьте путь к каталогу bin MySQL под path
Наконец сохраните.
③ cmd установить MySQL
1. Запустите cmd от имени администратора и перейдите в каталог bin MySQL:
2. Введите команду: «mysqld -install» для установки.
3. Введите команду: «mysqld -initialize» для инициализации, и папка данных может быть создана автоматически.
4. Введите команду: «net start mysql», чтобы запустить сервер.
④ Изменить начальный пароль MySQL
Введите команду mysql -uroot -p, нажмите Enter и введите пароль. Само собой разумеется, что для первого входа в систему нет пароля. Вы можете войти в систему напрямую, нажав Enter. Однако на самом деле, когда выполняется команда mysqld —initialize, она не только автоматически создает данные, но и Случайным образом назначьте пароль, найдите файлы с суффиксом .err в своих файлах и откройте их в Блокноте. Вы можете найти пароль, случайно назначенный системой, и вставить его, чтобы открыть базу данных.
Введите команду изменения пароля ниже:
Обратите внимание, что оператор завершается точкой с запятой!
Изменено успешно! На этом этапе вы можете начать свой путь к базе данных!
Ниже я вкратце расскажу о некоторых проблемах, возникающих при установке.
Настройка firewall (iptables) в Debian
В качестве firewall в Debian по-умолчанию используется iptables, его и будем настраивать. Изначально фаервол полностью открыт и пропускает весь трафик. Проверить список правил iptables можно следующей командой:
# iptables -L -v -n Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Обращаю пристальное внимание на то, что настраивать firewall без прямого доступа к консоли сервера не следует. Особенно, если вы не очень разбираетесь в этом и копируете команды с сайта
Шанс ошибиться очень высок. Вы просто потеряете удаленный доступ к серверу.
Создадим файл с правилами iptables:
# mcedit /etc/iptables.sh
Очень подробно вопрос настройки iptables я рассмотрел отдельно, рекомендую ознакомиться. Хотя в примере другая ОС linux, принципиальной разницы нет, настройки iptables абсолютно одинаковые, так как правила одни и те же.
Добавляем набор простых правил для базовой настройки. Все необходимое вы потом сможете сами открыть или закрыть по аналогии с существующими правилами:
#!/bin/bash # # Объявление переменных export IPT="iptables" # Активный сетевой интерфейс export WAN=ens18 export WAN_IP=10.20.1.16 # Очистка всех цепочек iptables $IPT -F $IPT -F -t nat $IPT -F -t mangle $IPT -X $IPT -t nat -X $IPT -t mangle -X # Установим политики по умолчанию для трафика, не соответствующего ни одному из правил $IPT -P INPUT DROP $IPT -P OUTPUT DROP $IPT -P FORWARD DROP # разрешаем локальный траффик для loopback $IPT -A INPUT -i lo -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT # разрешаем пинги $IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT $IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT $IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT $IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # Разрешаем исходящие соединения самого сервера $IPT -A OUTPUT -o $WAN -j ACCEPT # Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении. # Пропускать все уже инициированные соединения, а также дочерние от них $IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT # Пропускать новые, а так же уже инициированные и их дочерние соединения $IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT # Разрешить форвардинг для уже инициированных и их дочерних соединений $IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT # Включаем фрагментацию пакетов. Необходимо из-за разных значений MTU $IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu # Отбрасывать все пакеты, которые не могут быть идентифицированы # и поэтому не могут иметь определенного статуса. $IPT -A INPUT -m state --state INVALID -j DROP $IPT -A FORWARD -m state --state INVALID -j DROP # Приводит к связыванию системных ресурсов, так что реальный # обмен данными становится не возможным, обрубаем $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP # Открываем порт для ssh (!!!не забудьте указать свой порт, который вы изменили ранее!!!) $IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT # Открываем порт для web сервера $IPT -A INPUT -i $WAN -p tcp --dport 80 -j ACCEPT $IPT -A INPUT -i $WAN -p tcp --dport 443 -j ACCEPT # Записываем правила в файл /sbin/iptables-save > /etc/iptables_rules
Даем файлу права на запуск:
# chmod 0740 /etc/iptables.sh
Запускаем скрипт:
sh /etc/iptables.sh
Проверяем правила:
# iptables -L -v -n
Проверяем, что правила записались в файл /etc/iptables_rules. Если их там нет, то записываем их вручную.
# /sbin/iptables-save > /etc/iptables_rules
Правила применились и произошла их запись в файл /etc/iptables_rules. Теперь нужно сделать так, чтобы они применялись при загрузке сервера. Для этого делаем следующее. Открываем файл /etc/network/interfaces и добавляем в него строку pre-up iptables-restore < /etc/iptables_rules Должно получиться вот так:
# cat /etc/network/interfaces allow-hotplug eth0 iface eth0 inet dhcp pre-up iptables-restore < /etc/iptables_rules
Для проверки перезагрузите сервер и посмотрите правила iptables. Должен загрузиться настроенный набор правил из файла /etc/iptables_rules.
Установка утилит mc, htop, iftop
Следующим шагом я настраиваю некоторые полезные утилиты, которыми регулярно пользуюсь в повседневной работе. Первая из них это всем известный двухпанельный файловый менеджер Midnight Commander. Установим mc на наш сервер:
# apt install mc
И сразу же для него включаю подсветку синтаксиса всех файлов, которые не обозначены явно в файле /usr/share/mc/syntax/Syntax синтаксисом для sh и bash скриптов. Этот универсальный синтаксис нормально подходит для конфигурационных файлов, с которыми чаще всего приходится работать на сервере. Перезаписываем файл unknown.syntax. Именно этот шаблон будет применяться к .conf и .cf файлам, так как к ним явно не привязано никакого синтаксиса.
# cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax
Я сразу же ставлю редактором по-умолчанию mcedit. Для этого просто выбираю его из меню при первом редактировании какого-нибудь файла. Если у вас такое меню не появляется, можете вызвать его сами и выбрать необходимый редактор по-умолчанию:
# select-editor Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/mcedit 3. /usr/bin/vim.tiny Choose 1-3 : 2
Так же я рекомендую очень удобный диспетчер задач — htop. Мне он помог, к примеру, решить проблему Взлома сервера CentOS. Ставим его на сервер:
# apt install htop
Полезной утилитой, позволяющей смотреть сетевую загрузку в режиме реального времени, является iftop. Очень рекомендую. Более простого и удобного инструмента мне не попадалось, хотя я много перепробовал подобных вещей. Устанавливаем iftop на сервер:
# apt install iftop
А что такое SQL?
Эта аббревиатура расшифровывается как Structured Query Language, что в переводе означает «язык структурированных запросов».
SQL – это стандартизированный язык, использующийся для взаимодействия с базой данных. С помощью него, собственно, и получают доступ к информации, хранящейся в таблицах MySQL. Язык делится на три части:
- Синтаксис, помогающий решать семантические вопросы языка. То есть идентифицировать отдельные компоненты базы данных.
- Синтаксис для управления данными в базе, который помогает обновлять и искать информацию.
- Синтаксис, позволяющий выдавать пользователям права на отдельные единицы данных в базе.
Основные задачи, выполняемые SQL
Structured Query Language появился в 1970 году и быстро заменил собой аналогичные, но устаревшие VISAM и ISAM. Они были нужны для управления данными.
В их «обязанности» входило:
- Извлечение запрашиваемой информации из ячеек базы данных по запросу клиента.
- Разного рода манипуляции с данными, включая добавление новых элементов в таблицу, удаление, изменение существующей в базе информации и ее сортировку. Сюда же относят и некоторые другие редко используемые операции.
- Идентификация данных из базы. Я уже упомянул это выше. Речь идет об определении отдельных компонентов. К примеру, идентификации чисел в тексте как целых чисел для соответствующей их обработки. Также процесс идентификации необходим реляционной сущности MySQL для определения взаимоотношений между разными слоями таблиц в базе данных.
- Управление данными.
- Защита и шифрования информации в таблицах.
SQL закрывает все 5 аспектов.
Настройка и обновление времени в Debian
Теперь проверим установленный часовой пояс, время и включим автоматическую синхронизацию времени с удаленного сервера. Очень подробно этот вопрос я рассмотрел в отдельной статье — настройка времени в Debian.
Узнать дату, время, часовой пояс можно командой date:
# date Mon 12 Aug 2019 02:29:03 PM MSK
Если все указано верно, то менять ничего не нужно. Если же у вас неправильное время или указан часовой пояс не соответствующий вашему, то настроить это можно следующим образом. Сначала обновим часовые пояса:
# apt install tzdata
Теперь выберем правильный часовой пояс с помощью команды:
# dpkg-reconfigure tzdata
Выбирая соответствующие пункты визарда, указываете свой часовой пояс.
Дальше синхронизируем время с сервером времени в интернете. Для разовой или ручной синхронизации понадобится отдельная утилита. Установим ntpdate на сервер:
# apt install ntpdate
И синхронизируем время:
# ntpdate-debian 12 Aug 14:30:21 ntpdate: adjust time server 89.109.251.21 offset 0.004529 sec
Если получаете ошибку:
12 Aug 14:30:21 ntpdate: the NTP socket is in use, exiting
Значит у вас уже работает служба ntp. Ее нужно остановить и обновить время вручную. Хотя если она работает, то у вас и так должно быть все в порядке.
Для того, чтобы время автоматически синхронизировалось без вашего участия с определенной периодичностью, используется инструмент ntp. Установим его:
# apt install ntp
После установки он сам запустится и будет автоматически синхронизировать часы сервера. Проверим, запустился ли сервис ntpd:
# netstat -tulnp | grep ntp udp 0 0 10.20.1.16:123 0.0.0.0:* 8855/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 8855/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 8855/ntpd udp6 0 0 fe80::cce1:23ff:fe4:123 :::* 8855/ntpd udp6 0 0 ::1:123 :::* 8855/ntpd udp6 0 0 :::123 :::* 8855/ntpd
Принцип работы MySQL-серверов
Он такой же, как в любых клиент-серверных моделях. Одно устройство делает запрос, а второе отвечает. Запрашивающих может быть больше одного, все зависит от сервера, сети и поставленных задач.
Технически немного иные, но по своей сути идентичные процессы происходят в среде MySQL:
- Система создает базу данных для хранения информации (ее сортировки, идентификации и т.п.).
- Клиенты (другие компьютеры в сети) подают запросы к базе с помощью специфичных для SQL команд.
- Серверное приложение обрабатывает запрос и выдает ответ клиенту (выдает запрашиваемые данные).
Для взаимодействия с MySQL-сервером используются соответствующие утилиты. Некоторые работают только в командной строке. Некоторые награждены графическим интерфейсом. Популярные решения – WorkBench, SequelPro, SQL Studio, TablePlus. Правда, большинство вебмастеров предпочитает phpMyAdmin, так как та входит в LAMP и работает в браузере.
Как создать базу данных на хостинге?
У хостинг-провайдеров встречаются панели управления со встроенной функцией создания баз данных. В Timeweb такая есть. Чтобы создать на хостинге базу данных, надо открыть раздел «Базы данных MySQL» и кликнуть по кнопке «Создание новой базы данных». Система попросит указать параметры, имя пользователя и пароль администратора для авторизации.
Что касается создания БД на VDS, то можно воспользоваться панелью управления сервером. Например, ISPmanager.
В ISPmanager базы создаются так:
- Открываем панель управления.
- Переходим в пункт меню «Инструменты».
- Кликаем по подпункту «Базы данных».
- Нажимаем на кнопку «Создать».
- Указываем параметры будущей базы (логин, пароль и т.п.).
- Сохраняем данные, кликнув по кнопке ОК.
Vagrant
Это такая вспомогательная программа для VirtualBox. Хотя, работает и с другими системами виртуализации. Позволяет легко и быстро автоматизированно создавать виртуальные машины. Можно создать наподобие той, которую мы уже создали. Работать с Vagrant необходимо из командной строки.
Пишу это здесь просто для информации, что такое есть.
Я пробовал Vagrant. Да, действительно программа делает своё дело. Но мне показалось это лишним и не совсем тем, что надо. Мои соображения на этот счёт:
- Такое полезно тому, кто создаёт виртуальные машины пачками. Не мой случай. Возможно, пока.
- Виртуальные машины при помощи Vagrant создаются на основе готовых образов (боксов), список которых есть на официальном сайте. Они в случае необходимости автоматически загружаются. Честно говоря, я не сильно доверяю этим боксам. Считаю, что безопаснее создать своё. Тем более это не сложно.
В принципе, боксы для Vagrant — это созданные и специально настроенные виртуальные машины VirtualBox. Мы, вот, создали свою виртуальную машину. Её, в теории, можно немного допилить, чтобы использовать в качестве бокса Vagrant. Бокс может быть локальным.
Я когда начал изучать информацию по Vagrant, то меня напугали все эти инструкции в интернете. В каждой автор начинает разбирать конфигурационный файл виртуальной машины, и это поначалу выглядит дико и совсем непросто. Спешу успокоить новичков! Этот файл создается автоматически самим Vagrant-ом. Вы (при желании) можете внести в него дополнительные параметры, а можете и не вносить! Машина просто получит настройки по умолчанию. Часто этого достаточно.
Далее простой пример, как можно создать с помощью Vagrant тот же веб-сервер на базе Debian 8.
Перед тем как начать скачиваем Vagrant с официального сайта и устанавливаем его в любую папку
Важно, чтобы в пути к этой папке не было русских символов
Открываем консоль в Windows:
Скачиваем нужный бокс и убеждаемся, что он попал в список доступных локально боксов:
Для первой команды название бокса я нашёл в списке по запросу «debian 8 lemp». Вот информация по нему, где автор советует перед использованием бокса выполнить установку плагина:
Такая команда выполняется единожды, если ранее данный плагин ещё не инсталлировался. Плагин позволяет автоматически устанавливать в виртуальную машину дополнения гостевой ОС.
Создаём каталог и переходим в него, например:
Инициализация виртуальной машины:
При этом у нас появляется в этом каталоге файл . Он содержит конфигурацию будущей машины. Как я уже сказал, настройки можно оставить по умолчанию. Устанавливаем виртуальную машину:
Всё! Через некоторое время машина будет готова.
При установке машины автоматически устанавливаются все актуальные обновления Debian. При каждом старте монтируется общая папка.
Для входа по SSH используем адрес 127.0.0.1, порт 2222, пользователя , пароль .
Таким образом, всего несколько команд в консоли и у нас готовая для работы виртуальная машина.
Последующий запуск машины из консоли происходит быстро:
В VirtualBox машину тоже видно:
Установка LAMP в Debian
Сначала мы установим все необходимые компоненты, а затем будем настраивать их и проверять правильность работы по мере необходимости. Но сначала нужно обновить систему до последней версии:
1. Установка компонентов
Сначала установим веб-сервер и интерпретатор языка программирования PHP:
Мы установили не только веб-сервер, но и основные библиотеки PHP, которые могут понадобиться для работы с графикой, строками и сжатыми архивами. Пакет libapache2-php отвечает за интеграцию поддержки php для веб-сервера Apache.
Перед тем как перейти к настройке всего этого, нужно установить систему управления базами данных. Вы можете использовать MySQL либо же версию, разрабатываемую сообществом — MariaDB. Для установки MariaDB выполните:
А для установки MySQL:
В этой статье мы будем рассматривать MariaDB, но работа с MySQL не будет очень сильно отличаться.
2. Настройка Apache и PHP
Уже прошли те времена, когда для того чтобы подключить PHP к Apache нужно было пересмотреть кучу конфигурационных файлов, теперь установка LAMP Debian 9 выполняется достаточно просто. Если уже сейчас запустить Apache, и ввести адрес localhost, то все будет работать. Но давайте сначала добавим домен к нашему сайту. На локальной машине это тоже полезно. Сначала создадим папку для сайта:
Конфигурационные файлы виртуальных хостов хранятся в каталоге /etc/apache2/sites-available/ просто скопируйте конфигурацию по умолчанию 000-default в новый файл:
Теперь полученный файл нужно отредактировать. Нас будут интересовать директивы ServerName и DocumentRoot. Установите для них правильные значения:
Все остальное можно оставить по умолчанию. Дальше сохраните изменения и активируйте сайт командой:
Теперь осталось перезапустить Apache:
Чтобы проверить как все работает создайте файл index.php со следующим содержимым в папке /var/www/test-site/:
Если домен зарегистрирован в интернете и все запросы к нему направляются на ваш ip то уже можно открыть сайт в браузере. Если же нет, вы можете настроить маршрут для домена локально с помощью файла /etc/hosts:
Теперь можете открывать сайт в браузере и проверять:
Если вы увидели информацию о версии php, как на снимке экрана, значит все работает и нам осталось только настроить базу данных.
3. Настройка базы данных
Как я уже говорил, в качестве основной базы данных мы будем использовать mariadb. Чтобы начать ее настройку выполните:
Я не буду подробно описывать все шаги настройки. Они уже описаны в статье установка MySQL в Ubuntu. После того как процесс первоначальной настройки завершится, создадим новую базу данных:
Далее, для создания базы выполните:
Затем создайте пользователя и дайте ему доступ к этой базе данных:
Ну и для тестирования добавим таблицу:
Теперь добавим одну запись в только что созданную таблицу:
Теперь, чтобы убедиться что все работает, мы попытаемся получить данные из mysql через PHP. Для этого создадим небольшой скрипт. Он будет подключаться к базе данных и читать по порядку записи из таблицы:
$connection = mysqli_connect(«localhost»,»testuser»,»password»,»testsite») or die(«Error » . mysqli_error($connection));
$sql = «SELECT id, str FROM testtable»;
$result = mysqli_query($connection, $sql) or die(«Error » . mysqli_error($connection));
$items = array();
while($row = mysqli_fetch_assoc($result))
{
$items[] = $row;
}
echo json_encode($items);
?>
Далее, сохраните полученный скрипт, и введите его адрес в браузере:
Если вы не увидели никаких ошибок, а на экран были выведены строки из базы данных, задача установить LAMP Debian выполнена. Если же возникли какие-либо ошибки, например, подключения к базе данных, проверьте правильность написания пароля пользователя, имени базы, а также посмотрите логи mysql.
Назначение портативной установки MySQL 5.7 в Windows
Портативный вариант инсталляции базы данных MySQL в OS Windows может быть особо удобным для организации среды web разработки для приложений, рассчитанных под LAMP. Конечно, в идеальном случае, для LAMP веб разработки лучше работать в OS Linux, но для тех случаев, когда это по каким-либо причинам невозможно, приходиться организовывать нужное окружение на Win машине. Для этих целей существуют разные подходы и варианты сборок WinAMP для организации среды для web разработки. Однако в таких сборках база данных MySQL представлена в минимальном, урезанном варианте и часто не в самой свежей и последней версии. Поэтому, как раз для того, чтобы иметь свой полный и актуальный вариант portable установки MySQL сервера и есть смысл делать такую инсталляцию. Ее можно разместить прямо в каталоге вашей WAMP сборки, и использовать вместо имеющейся там изначально версии MySQL. Или вообще можно собрать свою WAMP сборку, установив в нее самостоятельно MySQL и другие компоненты, и выполнив их настройку и связку.
Основные преимущества такого варианта инсталляции MySQL сервера могут быть в следующем:
- портативность установки, т.е. вы сможете переносить и использовать MySQL сервер на других PC с Windows. Так же инсталляция не будет связана с системой и не будет прописываться в реестре. Однако, если вам не нужна именно портативная установка, то тогда, наверное, технически будет проще выполнить обычную для Windows установку при помощи MySQL Installer for Windows, который можно скачать на странице загрузки.
- возможность иметь последую актуальную версию MySQL сервера. Так на момент написания статьи MySQL имеет версию 5.7.13, которая имеет существенные преимущества перед версией 5.6 по производительности и дополнительному функционалу. Чего только стоит появление нового типа данных json, что позволяет хранить в столбце таблицы, извлекать и обрабатывать данные в виде объекта json.
- независимая настройка базы данных MySQL под свои нужды и возможность использования дополнений и плагинов, входящих в полный дистрибутив MySQL 5.7.13 Community Server.
- полезный опыт по ручной настройке базы данных MySQL, который даст вам неоспоримые преимущества при самостоятельном развертывании продуктивного LAMP web сервера, т.к. по своей сути все настройки MySQL будут одинаковы как для Windows, так и для Linux OS.
Удалите Mysql.
нота: (1) Перед удалением mysql обязательно закройте службу MySQL (я сам это тестирую, если вы не закроете Mysql, вас ждет то, что все, что вы делаете, станет бесполезным, вы Я обнаружил, что даже после того, как вы полностью удалили все связанные с mysql вещи, mysql по-прежнему остается предыдущим mysql, он стоит нетронутым и улыбается вам)
(2) Перед установкой Mysql обязательно проверьте, есть ли остатки mysql на виртуальной машине. Хорошо, следующий шаг ① Запустить команду проверки текущего состояния Mysql.
②Закройте службу Mysql в соответствии с вашей реальной ситуацией
③Проверьте текущую установку mysql и выясните, была ли она установлена раньше
④Удалить предыдущий mysql, использовать команду (удалить принудительно, решить проблему взаимозависимости и упорядоченно удалить), удалить все зависимые пакеты, относящиеся к Mysql
⑤Найдите каталог предыдущей версии mysql и удалите файлы и библиотеки старой версии mysql.
Результаты поиска следующие, удалите
⑥ /etc/my.cnf не будет удален после деинсталляции, его нужно удалить вручную
На этом этапе mysql полностью удален!
Как установить MySQL 8 в Debian 10
Шаг 1: Добавление репозитория MySQL
Чтобы установить MySQL в Debian, вам необходимо скачать и установить APT репозиторий содержащийся в .deb пакете, который управляет настройкой и установкой программного обеспечения MySQL.
Во время установки пакета вам будет предложено настроить репозиторий MySQL APT для выбора версий сервера MySQL и других компонентов, которые вы хотите установить. Для установки последней версии оставьте все как есть, перейдите к Оk и нажмите Enter.
Шаг 2: Установка MySQL
После добавления репозитория обновите кэш пакетов apt и установите пакет сервера MySQL. При этом также будут установлены пакеты для клиента и другие зависимости.
Во время установки появится диалоговое окно конфигурации, в котором нужно будет установить пароль пользователя root для MySQL. Введите безопасный и надежный пароль, а затем подтвердите его.
После этого вас предупредят о новой системе аутентификации, на основе SHA256, использующейся в MySQL, нажмите Ok. Выберите плагин аутентификации (оставьте опцию по умолчанию, чтобы использовать рекомендуемый плагин) и нажмите кнопку Enter, чтобы завершить процесс установки.
Когда установка пакетов завершится, установщик запустит службу MySQL и настроит для неё автозагрузку. Чтобы убедиться, что служба MySQL работает, проверьте ее состояние с помощью следующей команды.
Есть несколько команд systemctl, которые вам нужно знать, чтобы управлять (запускать, перезапускать и останавливать) службу MySQL, когда это будет необходимо:
Шаг 3: Настройка безопасности MySQL
Сервер MySQL из коробки не защищен, и для повышения безопасности потребуется запустить сценарий mysql_secure_installation. Выполните:
Прочитайте описание каждого вопроса и правильно ответьте на них. Во-первых, введите пароль пользователя root, который вы задали во время установки пакета. Вы можете выбрать y (для Yes) или n (для No), чтобы использовать или не использовать компонент VALIDATE PASSWORD.
Когда сценарий предложит вам установить новый пароль для пользователя root выберите No (вы уже установили его во время установки пакета). Затем внимательно следуйте другим подсказкам и выберите y (для YES), чтобы удалить анонимных пользователей, запретить удаленный вход под root в систему, удалить тестовую базу данных и перезагрузить таблицу привилегий.
Настройки MySQL Debian завершены, можно переходить к использованию.
Шаг 4: Проверка MySQL
После того как вы закончили настройку безопасности MySQL, можно начать использовать его для хранения данных для ваших веб-сайтов или веб-приложений. Чтобы получить доступ к оболочке MySQL, выполните следующую команду (пароль пользователя root введите по запросу, как показано на скриншоте):
Скорость работы MySQL
Оптимизация без аналитики бессмысленна. Перед тем как переходить к оптимизации давайте посмотрим как работает база данных сейчас, есть ли запросы, которые выполняются очень медленно. Все настройки вашего сервиса mysql находятся в файле /etc/my.cnf. Чтобы включить отображение медленных запросов добавьте такие строки в my.cnf, в секцию :
Здесь первая строка включает запись лога медленных запросов, вторая указывает, что минимальное время запроса для внесения его в этот лог — две секунды. Еще можно включить в лог запросы, которые не используют индексы:
Но это уже необязательно для проверки скорости и используется больше для отладки кода и правильности создания таблиц. Дальше перезапустите сервер баз данных и посмотрите лог:
Мы можем видеть, что есть запросы, которые выполняются больше, чем 10 секунд. Это, например, запрос
Можно его выполнить отдельно, в консоли mysql:
Здесь тоже измеряется время, и мы видим результат — три секунды. Это очень много. И еще ничего, если такие запросы приходят редко, если ваш сайт постоянно под нагрузкой, то тремя секундами вы не отделаетесь, количество необработанных запросов будет расти, а скорость ответа увеличиваться до нескольких минут. Можно пойти двумя путями — оптимизировать код, убрать сложные запросы, или же нужна оптимизация mysql на сервере.