Базы данных
запланированоЗапланировано в WardPane 2.1. Этой возможности нет в текущей версии; страница описывает, как она должна работать. Планы
WordPress, Laravel и большинство веб-приложений хранят данные в MySQL или MariaDB. В WardPane 2.1 сервер баз данных будет работать на той же машине, а управлять базами можно будет из панели, примерно как в ISPmanager.
Установка сервера баз данных
По умолчанию сервера баз данных нет. install.sh ставит MySQL или MariaDB по запросу, при установке или позже, при повторном запуске. До этого раздел Базы данных пуст.
Сайты и приложения на сервере подключаются к базе локально, поэтому порт 3306 в файрволе открывать не нужно.
Управление базами данных
В панели откройте Базы данных. Там можно:
- создать базу данных и выбрать её владельца, то есть пользователя, которому она принадлежит (обычные пользователи, не администраторы, видят и правят только свои базы, см. Пользователи);
- посмотреть размер каждой базы;
- создать пользователей баз данных с паролем и выдать им привилегии на одну или несколько баз;
- удалить базы данных и их пользователей.
Вместе с базой удаляются и её данные. Если они могут понадобиться, сначала сделайте дамп из терминала:
mysqldump -u myshop -p myshop > myshop.sql
Отдельная база для каждого сайта
Заведите каждому сайту или приложению свою базу и своего пользователя с привилегиями только на эту базу. Тогда при взломе одного сайта данные остальных останутся недоступны. Пароли делайте длинными и случайными: приложение хранит пароль в своём файле настроек, запоминать его никому не нужно.
Подключение из PHP
PHP-сайт подключается с именем базы, пользователем и паролем из панели, сервер находится на той же машине.
| Настройка | Значение |
|---|---|
| Хост | 127.0.0.1 (или localhost) |
| Порт | 3306 |
| База, пользователь, пароль | как созданы в панели |
В PHP localhost означает подключение через Unix-сокет, а 127.0.0.1 подключение по TCP. Если PHP-сайт не может подключиться к localhost, укажите 127.0.0.1.
WordPress (wp-config.php):
define('DB_NAME', 'myshop');
define('DB_USER', 'myshop');
define('DB_PASSWORD', 'the password from the panel');
define('DB_HOST', '127.0.0.1');
Laravel (.env):
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myshop
DB_USERNAME=myshop
DB_PASSWORD=the-password-from-the-panel
Расширения mysqli и pdo_mysql входят в PHP, который устанавливает install.sh --php. Параметр Запретить исходящие соединения в настройках PHP базе не мешает: подключаться к самому серверу по-прежнему можно.
Подключение из Node.js
Параметры подключения лучше держать не в коде, а в переменных окружения сайта на вкладке Обработчик, например DB_HOST=127.0.0.1, DB_USER, DB_PASSWORD и DB_NAME. С пакетом mysql2 подключение выглядит так:
const mysql = require('mysql2/promise');
const pool = mysql.createPool({
host: process.env.DB_HOST || '127.0.0.1',
port: 3306,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
});
Панель хранит переменные окружения открытым текстом, и их видит любой, кто может открыть настройки сайта. См. Node.js.
SQLite
Небольшому сайту часто хватает SQLite, и тогда сервер баз данных не нужен. В PHP есть расширение sqlite3. Храните файл базы в папке, куда приложение может писать и которая никогда не отдаётся посетителям. На сайтах, созданных до версии 2.0, это data/ рядом с public/. На новых сайтах корнем документов служит вся папка сайта, поэтому укажите папку с правом записи в настройках PHP и закройте её от посетителей правилом в .htaccess корня сайта, например RedirectMatch 404 ^/db/ для папки db (см. .htaccess). Правило кладите выше этой папки, потому что файлы .htaccess внутри папок с правом записи игнорируются.