====== MariaDB ======
**Na této stránce se nachází návod, jak do linuxové distribuce Debian nainstalovat MariaDB pro potřeby Shibboleth IdP.**
----
===== Instalace =====
Databázi //MariaDB// nainstalujeme následujícím příkazem:
# Instalace MariaDB
apt install --no-install-recommends mariadb-server mariadb-client libmariadb-java
Pomocí ''openssl'' si vygenerujeme silné heslo pro přístup k databázi uživatelem //root//:
# Vygenerování silného hesla pro uživatele root
openssl rand -hex 20
Spustíme utilitu ''mysql_secure_installation'' a postupujeme dle instrukcí v terminálu:
# Spuštení mysql_secure_installation
mysql_secure_installation
===== Databáze =====
**Máme-li persistentní identifikátory ze stávající instalace Shibboleth IdP, databázi si samozřejmě přesuneme.**
Na stávajícím serveru provedeme export:
mysqldump shibboleth > ~/persistentIDs.sql
Soubor ''persistentIDs.sql'' bezpečně překopírujeme na nový server, např. pomocí ''scp'', a po vytvoření databáze //shibboleth// importujeme stávající identifikátory:
mysql -u root -p shibboleth < ~/persistentIDs.sql
Přihlásíme se do //MariaDB//:
# Přihlášení k MariaDB
mysql
Vytvoříme databázi //shibboleth// a v ní tabulku //shibpid//.
# Vytvoříme databázi 'shibboleth' a tabulku 'shibpid'
SET NAMES 'utf8';
SET CHARACTER SET utf8;
CHARSET utf8;
CREATE DATABASE IF NOT EXISTS shibboleth CHARACTER SET=utf8;
USE shibboleth;
CREATE TABLE IF NOT EXISTS `shibpid` (
`localEntity` VARCHAR(255) NOT NULL,
`peerEntity` VARCHAR(255) NOT NULL,
`principalName` VARCHAR(255) NOT NULL DEFAULT '',
`localId` VARCHAR(255) NOT NULL,
`persistentId` VARCHAR(50) NOT NULL,
`peerProvidedId` VARCHAR(255) DEFAULT NULL,
`creationDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deactivationDate` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`localEntity`, `peerEntity`, `persistentId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Pomocí příkazu ''DESCRIBE'' si můžeme zobrazit, jak tabulka vypadá.
# Zobrazení definice tabulky 'shibpid'
DESCRIBE shibpid;
Tabulka //shibpid// musí vypadat následovně:
+------------------+--------------+------+-----+---------------------+-------------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------------------+-------------------------------+
| localEntity | varchar(255) | NO | PRI | NULL | |
| peerEntity | varchar(255) | NO | PRI | NULL | |
| principalName | varchar(255) | NO | | | |
| localId | varchar(255) | NO | | NULL | |
| persistentId | varchar(50) | NO | PRI | NULL | |
| peerProvidedId | varchar(255) | YES | | NULL | |
| creationDate | timestamp | NO | | current_timestamp() | on update current_timestamp() |
| deactivationDate | timestamp | YES | | NULL | |
+------------------+--------------+------+-----+---------------------+-------------------------------+
8 rows in set (0.002 sec)
Dále vytvoříme tabulku //StorageRecords//.
# Vytvoříme tabulku 'StorageRecords'
CREATE TABLE IF NOT EXISTS `StorageRecords` (
context varchar(255) COLLATE utf8mb4_bin NOT NULL,
id varchar(255) COLLATE utf8mb4_bin NOT NULL,
expires bigint DEFAULT NULL,
value text NOT NULL,
version bigint NOT NULL,
PRIMARY KEY (context, id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Pomocí příkazu ''DESCRIBE'' si můžeme zobrazit, jak tabulka vypadá.
# Zobrazení definice tabulky 'StorageRecords'
DESCRIBE StorageRecords;
Tabulka //StorageRecords// musí vypadat následovně:
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| context | varchar(255) | NO | PRI | NULL | |
| id | varchar(255) | NO | PRI | NULL | |
| expires | bigint(20) | YES | | NULL | |
| value | text | NO | | NULL | |
| version | bigint(20) | NO | | NULL | |
+---------+--------------+------+-----+---------+-------+
5 rows in set (0.001 sec)
Vytvoříme uživatele //shibboleth//, který bude k databázi přistupovat pomocí silného hesla, které si opět vygenerujeme pomocí příkazu ''openssl'':
# Vygenerování silného hesla pro uživatele 'shibboleth'
openssl rand -hex 20
Vytvoříme uživatele //shibboleth// a použijeme výše vygenerované silné heslo:
# Vytvoření uživatele 'shibboleth'
GRANT ALL PRIVILEGES ON shibboleth.*
TO 'shibboleth'@'localhost'
IDENTIFIED BY '___SILNE_HESLO_VYGENEROVANE_VYSE___';
FLUSH PRIVILEGES;
Pro ověření funkčnosti vytvořeného účtu se pokusíme přihlásit k databázi.
# Přihlášení k MariaDB uživatelem 'shibboleth'
mysql -u shibboleth -p shibboleth
Terminál vyzve k zadání hesla a po jeho úspěšném ověření dojde k přihlášení k MariaDB.
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
[...]
MariaDB [shibboleth]>
----
**Máme-li nainstalovanou MariaDB, můžeme pokračovat instalací [[jetty]].**