- Поддерживаемые версии
- 1.8
- 1.9
- 1.10
- 1.11
- 1.12
- 1.13
- 1.14
- 1.15
- 1.16
- 1.17
- 1.18
- 1.19
И так, вы задались вопросом, как же установить базу данных, связать её с вашими плагинами, пользоваться адекватно, и стараться нигде не косячить? В этом вам поможет данный гайд. Здесь описано от начала установки базы данных (MariaDB) до установки веб морды (phpMyAdmin).
Все примеры будут на debian 11, на других дистрибутивах будет всё то же самое, будь то это centOS, AlmaLinux, RHEL, поделки от оракли (Oracle), сюзы (opensuse) или что-то в этом духе. Везде отличий будет по минимуму.
- Более быстрая проверка привелегий. Это даёт прибавку скорости в использовании, ведь при внесении значений считывается и проверяется привелегия пользователя, что может пагубно сказаться на ответе при вводе команд, создании таблиц, и.т.д.
- Оптимизация, потребление железа. Весомый плюс у MariaDB, это потребление железяки. Машка думает быстрее, и занимает в озу места в разы меньше, нежели тот же мускул.
- Полная SQL совместимость с MySQL. Почти всё в них совпадает, и можно использовать в любом плагине, проблем не было ни разу.
- Опенсорсность. Машка полностью опенсорс, в то время как мускул нет.
- Поддержка двоичного шифрования, а так же имеет временное табличное пространство. Это прибавляет в безопасности как раз машки, и в минус идёт мускулу.
Основа такова, но на самом деле преимуществ на много больше чем я перечислил тут, так что всё же советую использовать именно машку.
Все команды выполняются от root или дописывается везде sudo. В моём примере это были контейнеры, с рут пользователем, по этому тут этого нет.
debian и его форки (бубен, или ещё какая-то похожая пакость как убунту):
centOS, fedora, RHEL и форки (AlmaLinux, OracleLinux, RockyLinux и.т.д)
После всех манипуляций проверяем наш статус службы. Как правило демон добавляется сам в автозагрузку.
Узнать статус службы:
как видим служба активна. Если же у вас демон не активен и не добавлен в автозагрузку, делаем это:
Вписываем:
Увидим такое. Тут нас спрашивают, установить ли пароль для root юзера для бд.
Если вы хотите, впишите. Если не хотите (но лучше вписать естественно) просто нажмите ввод. После того как вы вписали, нажмите ввод.
После вы увидите такое. Это можно скипнуть нажав "n". Это авторизация по unix_socket, просто добавляет безопасности. Если установили пароль, можно не устанавливать.
Далее вы увидите это. Можно нажимать "n". Это изменение вашего пароля от рут юзера, мы его ввели ранее.
Далее вы увидите это. Можете смело нажимать "y". Это удаление анонимных пользователей. Рекомендую их удалить.
Далее вы увидите это. Это добавляет ещё большей безопасности, ибо это запрещает удалённое подключение к root пользователю "из сети" и даёт только коннект через localhost. Естественно жмём "y".
Далее увидим это. Тут нас спрашивают удалить ли тестовую базу данных, можете и не удалять, но я советую удалить, вводим "y".
Далее будет это. Тут нас спрашивают перезагружать ли нам базы данных что б изменения вступили сразу в силу. Естественно жмём "y".
Поздравляю, вы установили и настроили MariaDB!
==> Первый вариант <==
(Требует больше времени при наличии большого кол-ва баз, но рекомендую я именно его, ибо более безопасен и очень прост):
Входим в нашу машку. После ввода пишем пароль.
Создаём нашего пользователя:
Создаём базы данных. (так создаём сколько вам нужно):
Выдаём права на ваши базы данных:
Сохраняем изменения:
Выходим:
Создаём нашего пользователя:
Выдаём права юзеру:
Сохраняем изменения:
Выходим:
Описание прав можете посмотреть вот тут (а так же некоторую другую информацию) или в моей таблице ниже:
Устанавливаем phpMyAdmin и зависимости:
Для Debian и его форков (Ubuntu, и.т.д):
CentOS, Fedora, RHEL и форки:
Что же это за пакеты такие? Ответ прост:
- phpmyadmin - сама веб панель;
- php-mbstring - модуль для работы со строками, не поддерживающими кодировку ASCII;
- php-zip - расширение, поддерживающее загрузку файлов .zip;
- php-gd - поддержка библиотеки GD Graphics;
- php-json - поддержка сериализации JSON;
- php-curl - расширение, позволяющее PHP взаимодействовать с разными типами серверов, используя разные протоколы;
- httpd - вебсервер (аналог apache2 только для RHEL, CentOS и их форков).
При установке на debian, ubuntu и их форки вылезет вот это:
Выбираем apache2 (выбор веб сервера). После табом выбираем ок и тыкаем ввод.
Здесь нам скажут что можем помочь вам донастроить базы данных. Жмём "no" ведь мы опытные пользователи.
После вбиваем в поисковую строку браузера
ВНИМАНИЕ! Если вы избранный (мало-ли) и у вас не появляется окно выбора веб сервера (где мы выбирали apache2) то делаем следующее после установки phpmyadmin:
После вводим:
Затем:
Ну и в конце:
Всё, мы исправили проблему, и есть доступ к нашей панели.
Обращаю ваше внимание - при установке на fedora, RHEL, CentOS у вас будет простая установка, без псевдографики, как было на Ubuntu, Debian и.т.д.
Если у вас не подгрузился демон веб сервера на RHEL, CentOS и форках:
Добавлено по просьбам трудящихся
И так, безопасность обеспечивается вторым паролем. Для настройки делаем так. Вписываем:
И добавляем туда такое:
После выходим сохраняя, нажимаем ctrl + x и пишем Y.
После пишем это. Нужно это для добавления нашего второго пароля. В имя вашего юзера пишем имя что мы прописывали на первом этапе, ещё аж при создании юзера в машке, т.е в моём случае там будет test. Вводим два раза пароль.
После сделаем настройку apache2. Открываем конфиг, пролистываем и ищем строку AllowOverride. Она будет где-то по центру файла. Меняем None на All. p.s да простят меня центоводы, федороводы и красношляпики, не помню честно где там находится конфиг, но вроде как по тому же пути.
Нажимаем ctrl + x пишем Y.
Перезагружаем наш веб сервер командой:
Если вы нигде не ошиблись, после попадания снова в панельку вы увидите такое. Введите ваш пароль что мы создали только что ну и логин, после войдите.
После введите пароль самого юзера от машки и сидите радуйтесь, теперь ваша безопасность повышена, хоть и не на много, но всё лучше чем было
Открываем конфиг:
Меняем 80 порт на любой другой рандомный:
После изменений перезагружаем демона apache:
Теперь панель вам будет доступна по адресу
Если вы красношляпик (RHEL, CentOS и прочие производные) за что моё увОжение у вас не apache а httpd. У вас конфиг лежит по пути:
Тут всё то же самое. Только пролистываем чуть ниже, и находим ту же строку. Меняем 80 на любой рандомный порт:
Перезагружаем демона:
Нажимаем export (в ру версии экспорт) и жмём Go. После мы получим файл с базой данных, как правило такого бекапа хватает.
Выбираем нужную базу данных, выбираем import, и выбираем наш файл, что мы сохранили на прошлом этапе. Пролистываем вниз, жмём Go. Всё, мы успешно восстановили бекап! Так можно делать много раз, и любые таблицы, базы, и.т.д.
Открываем терминал, от рута. Пишем:
username - ваше имя пользователя. Настоятельно советую вписывать root, что б прошло всё без проблем!
your_databaze1 и.т.д - это ваши базы данных, первая, вторая и.т.д.
your_file.sql - это конечный файл, название может быть разное, но обязательно с расширением sql!
Так же можно сделать бекап 1 базы данных, написав название только одной. Но лучше воспользоваться примером ниже.
Если у вас море баз данных или вам просто лень вводить названия, делаем так:
Всё то же самое что и у примера выше, username используем root и.т.д.
На выходе получаем файл .sql. Берём его, и тащим на новый сервер, либо храним на текущем в безопасном месте.
На нашем сервере где мы хотим восстановить пишем:
your_database_name - имя вашей текущей базы данных, куда вы хотите залить бекап из файла your_file.sql.
Если вы сделали полный бекап (что я вам рекомендую делать) то просто пишем:
Это скопирует полный дамп в машку. Естественно так же делаем от рута, и пишем в username root.
Все примеры будут на 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
как видим служба активна. Если же у вас демон не активен и не добавлен в автозагрузку, делаем это:
Код:
systemctl enable --now mariadb
★ Конфижим нашу машку (MariaDB), чуть улучшим её безопасность и всё в таком духе ★
Вписываем:
Код:
mysql_secure_installation
Увидим такое. Тут нас спрашивают, установить ли пароль для root юзера для бд.
Если вы хотите, впишите. Если не хотите (но лучше вписать естественно) просто нажмите ввод. После того как вы вписали, нажмите ввод.
После вы увидите такое. Это можно скипнуть нажав "n". Это авторизация по unix_socket, просто добавляет безопасности. Если установили пароль, можно не устанавливать.
Далее вы увидите это. Можно нажимать "n". Это изменение вашего пароля от рут юзера, мы его ввели ранее.
Далее вы увидите это. Можете смело нажимать "y". Это удаление анонимных пользователей. Рекомендую их удалить.
Далее вы увидите это. Это добавляет ещё большей безопасности, ибо это запрещает удалённое подключение к root пользователю "из сети" и даёт только коннект через localhost. Естественно жмём "y".
Далее увидим это. Тут нас спрашивают удалить ли тестовую базу данных, можете и не удалять, но я советую удалить, вводим "y".
Далее будет это. Тут нас спрашивают перезагружать ли нам базы данных что б изменения вступили сразу в силу. Естественно жмём "y".
Поздравляю, вы установили и настроили MariaDB!
Если ваш сервер находится на стороннем сервере (где невозможно подключение по localhost/127.0.0.1) то необходимо внести изменения в создания пользователей, а так же необходимо изменить конфигурацию базы данных.
Изменение конфигурации достаточно простое.
Если у вас debian и все производные:
Открываем конфиг:
Если у вас RHEL, Fedora, RockyLinux, AlmaLinux и прочие форки:
Открываем конфиг:
Добавляем строку/удаляем комментарий строки
Дабы получилось так:
(Добавление как для RHEL так и для debian одинаковое, разница в местонахождении конфига)
После сохранения перезагружаем mariadb:
После чего переходим к правильному созданию пользователя и настройке прав. Учитывайте это если у вас база данных находится на другой машинке.
Изменение конфигурации достаточно простое.
Если у вас 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
Дабы получилось так:
(Добавление как для RHEL так и для debian одинаковое, разница в местонахождении конфига)
После сохранения перезагружаем mariadb:
Код:
systemctl restart mariadb
После чего переходим к правильному созданию пользователя и настройке прав. Учитывайте это если у вас база данных находится на другой машинке.
★ Создание юзера и выдача прав ★
==> Первый вариант <==
(Требует больше времени при наличии большого кол-ва баз, но рекомендую я именно его, ибо более безопасен и очень прост):
Если ваш сервер находится на стороннем сервере (где невозможно подключение по localhost/127.0.0.1) то необходимо внести изменения в создания пользователей, а так же необходимо изменить конфигурацию базы данных.
Создание пользователя:
Такое создание позволит использовать подключение с любого ip.
Если вы хотите указать свой ip, то замените % на ip сервера где установлена mariadb.
Выдача прав так же осуществляется с указанием ip вашей машинки или указанием %.
Или по конкретному ip:
Создание пользователя:
Код:
CREATE USER 'тут_имя_вашего_юзера'@'%' IDENTIFIED BY 'тут_ваш_пароль';
Если вы хотите указать свой 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 и их форки вылезет вот это:
Выбираем apache2 (выбор веб сервера). После табом выбираем ок и тыкаем ввод.
Здесь нам скажут что можем помочь вам донастроить базы данных. Жмём "no" ведь мы опытные пользователи.
После вбиваем в поисковую строку браузера
http://ip_сервера_где_поставлена_панель/phpmyadmin
и видим вот это. Вводим наши данные что мы вбивали ранее, и радуемся!ВНИМАНИЕ! Если вы избранный (мало-ли) и у вас не появляется окно выбора веб сервера (где мы выбирали 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
После пишем это. Нужно это для добавления нашего второго пароля. В имя вашего юзера пишем имя что мы прописывали на первом этапе, ещё аж при создании юзера в машке, т.е в моём случае там будет test. Вводим два раза пароль.
Код:
htpasswd -c /etc/phpmyadmin/.htpasswd имя_вашего_юзера
После сделаем настройку apache2. Открываем конфиг, пролистываем и ищем строку AllowOverride. Она будет где-то по центру файла. Меняем None на All. p.s да простят меня центоводы, федороводы и красношляпики, не помню честно где там находится конфиг, но вроде как по тому же пути.
Код:
nano /etc/apache2/apache2.conf
Нажимаем ctrl + x пишем Y.
Перезагружаем наш веб сервер командой:
Код:
systemctl restart apache2
Если вы нигде не ошиблись, после попадания снова в панельку вы увидите такое. Введите ваш пароль что мы создали только что ну и логин, после войдите.
После введите пароль самого юзера от машки и сидите радуйтесь, теперь ваша безопасность повышена, хоть и не на много, но всё лучше чем было
★ Смена порта веб сервера ★
Открываем конфиг:
Код:
nano /etc/apache2/ports.conf
Меняем 80 порт на любой другой рандомный:
После изменений перезагружаем демона apache:
Код:
systemctl restart apache2
Теперь панель вам будет доступна по адресу
http://ip_вашего_сервера:порт/phpmyadmin
Если вы красношляпик (RHEL, CentOS и прочие производные) за что моё увОжение у вас не apache а httpd. У вас конфиг лежит по пути:
Код:
nano /etc/httpd/conf/httpd.conf
Тут всё то же самое. Только пролистываем чуть ниже, и находим ту же строку. Меняем 80 на любой рандомный порт:
Перезагружаем демона:
Код:
systemctl restart httpd
Создание бекапов
★ Самый простой, через панель php my admin ★
Нажимаем export (в ру версии экспорт) и жмём Go. После мы получим файл с базой данных, как правило такого бекапа хватает.
★ Восстановление бекапа из php my admin ★
Выбираем нужную базу данных, выбираем import, и выбираем наш файл, что мы сохранили на прошлом этапе. Пролистываем вниз, жмём Go. Всё, мы успешно восстановили бекап! Так можно делать много раз, и любые таблицы, базы, и.т.д.
★ Вариант создания/восстановления через терминал для настоящих ♂ dungeon masters Linux'оидов ♂ ★
Открываем терминал, от рута. Пишем:
Код:
mysqldump -u username -p --databases your_database1 your_database2 your_database3 > your_file.sql
your_databaze1 и.т.д - это ваши базы данных, первая, вторая и.т.д.
your_file.sql - это конечный файл, название может быть разное, но обязательно с расширением sql!
Так же можно сделать бекап 1 базы данных, написав название только одной. Но лучше воспользоваться примером ниже.
Если у вас море баз данных или вам просто лень вводить названия, делаем так:
Код:
mysqldump -u username -p --all-databases > your_file.sql
На выходе получаем файл .sql. Берём его, и тащим на новый сервер, либо храним на текущем в безопасном месте.
★ Восстановление базы данных из бекапа ★
На нашем сервере где мы хотим восстановить пишем:
Код:
mysql -u username -p your_database_name < your_file.sql
Если вы сделали полный бекап (что я вам рекомендую делать) то просто пишем:
Код:
mysql -u username -p < your_file.sql