cs:tech:idp:5:mariadb

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.

Poslední úprava:: 2024/01/11 09:56