Na této stránce se nachází návod, jak do linuxové distribuce Debian nainstalovat MariaDB pro potřeby Shibboleth IdP.
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
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.