Установка MariaDB, phpMyAdmin создание бекапов

Руководство Установка MariaDB, phpMyAdmin создание бекапов

Поддерживаемые версии
  1. 1.8
  2. 1.9
  3. 1.10
  4. 1.11
  5. 1.12
  6. 1.13
  7. 1.14
  8. 1.15
  9. 1.16
  10. 1.17
  11. 1.18
  12. 1.19
И так, вы задались вопросом, как же установить базу данных, связать её с вашими плагинами, пользоваться адекватно, и стараться нигде не косячить? В этом вам поможет данный гайд. Здесь описано от начала установки базы данных (MariaDB) до установки веб морды (phpMyAdmin).
Все примеры будут на debian 11, на других дистрибутивах будет всё то же самое, будь то это centOS, AlmaLinux, RHEL, поделки от оракли (Oracle), сюзы (opensuse) или что-то в этом духе. Везде отличий будет по минимуму.


Предисловие. Почему именно MariaDB а не MySQL


- Более быстрая проверка привелегий. Это даёт прибавку скорости в использовании, ведь при внесении значений считывается и проверяется привелегия пользователя, что может пагубно сказаться на ответе при вводе команд, создании таблиц, и.т.д.
- Оптимизация, потребление железа. Весомый плюс у MariaDB, это потребление железяки. Машка думает быстрее, и занимает в озу места в разы меньше, нежели тот же мускул.
- Полная SQL совместимость с MySQL. Почти всё в них совпадает, и можно использовать в любом плагине, проблем не было ни разу.
- Опенсорсность. Машка полностью опенсорс, в то время как мускул нет.
- Поддержка двоичного шифрования, а так же имеет временное табличное пространство. Это прибавляет в безопасности как раз машки, и в минус идёт мускулу.

Основа такова, но на самом деле преимуществ на много больше чем я перечислил тут, так что всё же советую использовать именно машку.


Установка и настройка MariaDB


Все команды выполняются от root или дописывается везде sudo. В моём примере это были контейнеры, с рут пользователем, по этому тут этого нет.

debian и его форки (бубен, или ещё какая-то похожая пакость как убунту):
Код:
apt update && apt upgrade -y && apt install mariadb-server -y

centOS, fedora, RHEL и форки (AlmaLinux, OracleLinux, RockyLinux и.т.д)
Код:
dnf install mariadb-server -y

После всех манипуляций проверяем наш статус службы. Как правило демон добавляется сам в автозагрузку.

Узнать статус службы:
Код:
systemctl status mariadb
Screenshot from 2022-08-05 00-20-28.png


как видим служба активна. Если же у вас демон не активен и не добавлен в автозагрузку, делаем это:
Код:
systemctl enable --now mariadb


★ Конфижим нашу машку (MariaDB), чуть улучшим её безопасность и всё в таком духе ★

Вписываем:
Код:
mysql_secure_installation

Увидим такое. Тут нас спрашивают, установить ли пароль для root юзера для бд.
Если вы хотите, впишите. Если не хотите (но лучше вписать естественно) просто нажмите ввод. После того как вы вписали, нажмите ввод.
Screenshot from 2022-08-05 00-26-23.png


После вы увидите такое. Это можно скипнуть нажав "n". Это авторизация по unix_socket, просто добавляет безопасности. Если установили пароль, можно не устанавливать.
Screenshot from 2022-08-05 00-32-04.png


Далее вы увидите это. Можно нажимать "n". Это изменение вашего пароля от рут юзера, мы его ввели ранее.
Screenshot from 2022-08-05 00-32-43.png


Далее вы увидите это. Можете смело нажимать "y". Это удаление анонимных пользователей. Рекомендую их удалить.
Screenshot from 2022-08-05 00-35-19.png


Далее вы увидите это. Это добавляет ещё большей безопасности, ибо это запрещает удалённое подключение к root пользователю "из сети" и даёт только коннект через localhost. Естественно жмём "y".
Screenshot from 2022-08-05 00-36-47.png


Далее увидим это. Тут нас спрашивают удалить ли тестовую базу данных, можете и не удалять, но я советую удалить, вводим "y".
Screenshot from 2022-08-05 00-37-53.png


Далее будет это. Тут нас спрашивают перезагружать ли нам базы данных что б изменения вступили сразу в силу. Естественно жмём "y".
Screenshot from 2022-08-05 00-39-25.png


Поздравляю, вы установили и настроили MariaDB!
Screenshot from 2022-08-05 00-39-41.png


Если ваш сервер находится на стороннем сервере (где невозможно подключение по localhost/127.0.0.1) то необходимо внести изменения в создания пользователей, а так же необходимо изменить конфигурацию базы данных.

Изменение конфигурации достаточно простое.

Если у вас debian и все производные:
Открываем конфиг:
Код:
nano /etc/mysql/mariadb.conf.d/50-server.cnf

Если у вас RHEL, Fedora, RockyLinux, AlmaLinux и прочие форки:
Открываем конфиг:
Код:
nano /etc/my.cnf.d/mariadb-server.cnf

Добавляем строку/удаляем комментарий строки bind-address = 0.0.0.0
Дабы получилось так:
1682095950416.png

(Добавление как для RHEL так и для debian одинаковое, разница в местонахождении конфига)

После сохранения перезагружаем mariadb:
Код:
systemctl restart mariadb

После чего переходим к правильному созданию пользователя и настройке прав. Учитывайте это если у вас база данных находится на другой машинке.

★ Создание юзера и выдача прав ★

==> Первый вариант <==
(Требует больше времени при наличии большого кол-ва баз, но рекомендую я именно его, ибо более безопасен и очень прост):​

Если ваш сервер находится на стороннем сервере (где невозможно подключение по localhost/127.0.0.1) то необходимо внести изменения в создания пользователей, а так же необходимо изменить конфигурацию базы данных.

Создание пользователя:
Код:
CREATE USER 'тут_имя_вашего_юзера'@'%' IDENTIFIED BY 'тут_ваш_пароль';
Такое создание позволит использовать подключение с любого ip.

Если вы хотите указать свой ip, то замените % на ip сервера где установлена mariadb.
Код:
CREATE USER 'тут_имя_вашего_юзера'@'тут_ваш_ip_от_mariadb' IDENTIFIED BY 'тут_ваш_пароль';

Выдача прав так же осуществляется с указанием ip вашей машинки или указанием %.
Код:
GRANT ALL PRIVILEGES ON имя_базы_данных.* TO 'тут_имя_вашего_юзера'@'%';

Или по конкретному ip:
Код:
GRANT ALL PRIVILEGES ON имя_базы_данных.* TO 'тут_имя_вашего_юзера'@'тут_ваш_ip_от_mariadb';

Входим в нашу машку. После ввода пишем пароль.
Код:
mysql -u root -p

Создаём нашего пользователя:
Код:
CREATE USER 'тут_имя_вашего_юзера'@'localhost' IDENTIFIED BY 'тут_ваш_пароль';

Создаём базы данных. (так создаём сколько вам нужно):
Код:
CREATE DATABASE имя_базы_данных;

Выдаём права на ваши базы данных:
Код:
GRANT ALL PRIVILEGES ON имя_базы_данных.* TO 'тут_имя_вашего_юзера'@'localhost';

Сохраняем изменения:
Код:
FLUSH PRIVILEGES;

Выходим:
Код:
exit


==> Второй вариант <==
(Не совсем логичное создание базы данных и выдачи прав, но имеет место быть):
Входим в нашу машку. После ввода пишем пароль.
Код:
mysql -u root -p
Создаём нашего пользователя:
Код:
CREATE USER 'тут_имя_вашего_юзера'@'localhost' IDENTIFIED BY 'тут_ваш_пароль';
Выдаём права юзеру:
Код:
GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP ON *.* TO
'тут_имя_вашего_юзера'@'localhost';
Сохраняем изменения:
Код:
FLUSH PRIVILEGES;
Выходим:
Код:
exit
Описание прав можете посмотреть вот тут (а так же некоторую другую информацию) или в моей таблице ниже:
ПривилегияКонтекст (поле) действия
SELECTтаблицы (выбор в таблицах и.т.д)
INSERTтаблицы (вставлять в таблицах и.т.д)
UPDATEтаблицы (обновление таблиц и.т.д)
DELETEтаблицы (удаление таблиц, строк и.т.д)
INDEXтаблицы (индексирование таблиц и.т.д)
ALTERтаблицы (изменение таблиц и.т.д)
CREATEбазы данных, таблицы или индексы (создание всего перечисленного)
DROPбазы данных или таблицы (удаление всего перечисленного)


Установка PhpMyAdmin


Устанавливаем phpMyAdmin и зависимости:

Для Debian и его форков (Ubuntu, и.т.д):
Код:
apt update && apt upgrade -y && apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl php -y

CentOS, Fedora, RHEL и форки:
Код:
dnf install phpmyadmin php-mbstring php-zip php-gd php-json php-curl php httpd -y

Что же это за пакеты такие? Ответ прост:
- phpmyadmin - сама веб панель;
- php-mbstring - модуль для работы со строками, не поддерживающими кодировку ASCII;
- php-zip - расширение, поддерживающее загрузку файлов .zip;
- php-gd - поддержка библиотеки GD Graphics;
- php-json - поддержка сериализации JSON;
- php-curl - расширение, позволяющее PHP взаимодействовать с разными типами серверов, используя разные протоколы;
- httpd - вебсервер (аналог apache2 только для RHEL, CentOS и их форков).

При установке на debian, ubuntu и их форки вылезет вот это:
1659647851129.png

Выбираем apache2 (выбор веб сервера). После табом выбираем ок и тыкаем ввод.

Здесь нам скажут что можем помочь вам донастроить базы данных. Жмём "no" ведь мы опытные пользователи.
1659648062553.png


После вбиваем в поисковую строку браузера http://ip_сервера_где_поставлена_панель/phpmyadmin и видим вот это. Вводим наши данные что мы вбивали ранее, и радуемся!
1659648133877.png

1659648236264.png


ВНИМАНИЕ! Если вы избранный (мало-ли) и у вас не появляется окно выбора веб сервера (где мы выбирали apache2) то делаем следующее после установки phpmyadmin:
Код:
apt install apache2

После вводим:
Код:
ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf

Затем:
Код:
a2enconf phpmyadmin

Ну и в конце:
Код:
systemctl restart apache2

Всё, мы исправили проблему, и есть доступ к нашей панели.

Обращаю ваше внимание - при установке на fedora, RHEL, CentOS у вас будет простая установка, без псевдографики, как было на Ubuntu, Debian и.т.д.

Если у вас не подгрузился демон веб сервера на RHEL, CentOS и форках:
Код:
systemctl enable --now httpd



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


★ Добавляем безопасности нашей панельке оберегая от лишнего постороннего доступа. ★
Добавлено по просьбам трудящихся​

И так, безопасность обеспечивается вторым паролем. Для настройки делаем так. Вписываем:
Код:
nano /usr/share/phpmyadmin/.htaccess

И добавляем туда такое:
Код:
AuthType Basic
Authname "Restricted Content"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
После выходим сохраняя, нажимаем ctrl + x и пишем Y.

После пишем это. Нужно это для добавления нашего второго пароля. В имя вашего юзера пишем имя что мы прописывали на первом этапе, ещё аж при создании юзера в машке, т.е в моём случае там будет test. Вводим два раза пароль.
Код:
htpasswd -c /etc/phpmyadmin/.htpasswd имя_вашего_юзера

После сделаем настройку apache2. Открываем конфиг, пролистываем и ищем строку AllowOverride. Она будет где-то по центру файла. Меняем None на All. p.s да простят меня центоводы, федороводы и красношляпики, не помню честно где там находится конфиг, но вроде как по тому же пути.
Код:
nano /etc/apache2/apache2.conf
1659953695440.png

1659953708699.png

Нажимаем ctrl + x пишем Y.

Перезагружаем наш веб сервер командой:
Код:
systemctl restart apache2


Если вы нигде не ошиблись, после попадания снова в панельку вы увидите такое. Введите ваш пароль что мы создали только что ну и логин, после войдите.
После введите пароль самого юзера от машки и сидите радуйтесь, теперь ваша безопасность повышена, хоть и не на много, но всё лучше чем было
1659953794886.png

1659953860864.png


★ Смена порта веб сервера ★

Открываем конфиг:
Код:
nano /etc/apache2/ports.conf

Меняем 80 порт на любой другой рандомный:
1674072775078.png


После изменений перезагружаем демона apache:
Код:
systemctl restart apache2

Теперь панель вам будет доступна по адресу http://ip_вашего_сервера:порт/phpmyadmin

Если вы красношляпик (RHEL, CentOS и прочие производные) за что моё увОжение у вас не apache а httpd. У вас конфиг лежит по пути:
Код:
nano /etc/httpd/conf/httpd.conf

Тут всё то же самое. Только пролистываем чуть ниже, и находим ту же строку. Меняем 80 на любой рандомный порт:
1674073640604.png


Перезагружаем демона:
Код:
systemctl restart httpd


Создание бекапов


★ Самый простой, через панель php my admin ★

Нажимаем export (в ру версии экспорт) и жмём Go. После мы получим файл с базой данных, как правило такого бекапа хватает.
1659650356770.png


★ Восстановление бекапа из php my admin ★

Выбираем нужную базу данных, выбираем import, и выбираем наш файл, что мы сохранили на прошлом этапе. Пролистываем вниз, жмём Go. Всё, мы успешно восстановили бекап! Так можно делать много раз, и любые таблицы, базы, и.т.д.
1659650469528.png


★ Вариант создания/восстановления через терминал для настоящих ♂ dungeon masters Linux'оидов ♂ ★

Открываем терминал, от рута. Пишем:
Код:
mysqldump -u username -p --databases your_database1 your_database2 your_database3 > your_file.sql
username - ваше имя пользователя. Настоятельно советую вписывать root, что б прошло всё без проблем!
your_databaze1 и.т.д - это ваши базы данных, первая, вторая и.т.д.
your_file.sql - это конечный файл, название может быть разное, но обязательно с расширением sql!
Так же можно сделать бекап 1 базы данных, написав название только одной. Но лучше воспользоваться примером ниже.

Если у вас море баз данных или вам просто лень вводить названия, делаем так:
Код:
mysqldump -u username -p --all-databases > your_file.sql
Всё то же самое что и у примера выше, username используем root и.т.д.

На выходе получаем файл .sql. Берём его, и тащим на новый сервер, либо храним на текущем в безопасном месте.

★ Восстановление базы данных из бекапа ★

На нашем сервере где мы хотим восстановить пишем:
Код:
mysql -u username -p your_database_name < your_file.sql
your_database_name - имя вашей текущей базы данных, куда вы хотите залить бекап из файла your_file.sql.

Если вы сделали полный бекап (что я вам рекомендую делать) то просто пишем:
Код:
mysql -u username -p < your_file.sql
Это скопирует полный дамп в машку. Естественно так же делаем от рута, и пишем в username root.
  • 1682435465897.png
    1682435465897.png
    57.3 KB · Просмотры: 63
Автор
Furry__wolf
Просмотры
6 055
Первый выпуск
Обновление
Оценка
4.00 звёзд 2 оценок

Другие ресурсы пользователя Furry__wolf

Поделиться ресурсом

Последние обновления

  1. Добавление информации о RHEL и его форках

    Дополнил информацию о местонахождении о конфигурации базы данных. (Лол, человек который юзает...
  2. Добавление спойлеров с полезной информацией

    Добавил спойлеры с информацией о подключении к внешнему серверу (не localhost) и способы...
  3. Обновление инструкции

    Удивительно, случайно наткнулся на пост где рекомендовали мою инструкцию. В связи с этим...

Последние рецензии

Все подробно, четко, надеюсь ты будешь поддерживать актуальность этой инструкции.
В качестве веб-сервера, лyчше использовать nginx или caddy-server
Furry__wolf
Furry__wolf
А лучше не писать глупые рецензии без обоснования своих слов, а уж тем более ставить низкую оценку.
Назад
Сверху Снизу