Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:mariadb_centos_7

MariaDB CentOS 7

Die MariaDB-Datenbank ist der freien Nachfolger von MySQL als Datenbank und bei den allermeisten Linux-Distributoren als Installationspaket enthalten. Viele OpenSource-Projekte setzen bereits die MariaDB-Datenbank ein, auch deswegen, da diese 100% kompatibel zu MySQL ist.

:!: Hinweis - Die nachfolgenden Ausführungen erheben keinen Anspruch auf Vollständigkeit, sondern stellen eine „Basiskonfiguration“ eines MariaDB-Datenbank-Servers für ein kleines privates Netzwerk dar!!!

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

Installation

Zur Installation eines MariaDB-Datenbank-Servers wird nachfolgendes Paket benötigt:

  • mariadb-server - ist im base-Repository von CentOS enthalten

Zur Installation des MariaDB-Datenbank-Servers ist nachfolgender Befehl auszuführen:

# yum install mariadb-server
Loaded plugins: changelog
Resolving Dependencies
--> Running transaction check
---> Package mariadb-server.x86_64 1:5.5.37-1.el7_0 will be installed
--> Processing Dependency: mariadb(x86-64) = 1:5.5.37-1.el7_0 for package: 1:mariadb-server-5.5.37-1.el7_0.x86_64
--> Processing Dependency: perl-DBI for package: 1:mariadb-server-5.5.37-1.el7_0.x86_64
--> Processing Dependency: perl-DBD-MySQL for package: 1:mariadb-server-5.5.37-1.el7_0.x86_64
--> Processing Dependency: perl(Data::Dumper) for package: 1:mariadb-server-5.5.37-1.el7_0.x86_64
--> Processing Dependency: perl(DBI) for package: 1:mariadb-server-5.5.37-1.el7_0.x86_64
--> Processing Dependency: libaio.so.1(LIBAIO_0.4)(64bit) for package: 1:mariadb-server-5.5.37-1.el7_0.x86_64
--> Processing Dependency: libaio.so.1(LIBAIO_0.1)(64bit) for package: 1:mariadb-server-5.5.37-1.el7_0.x86_64
--> Processing Dependency: libaio.so.1()(64bit) for package: 1:mariadb-server-5.5.37-1.el7_0.x86_64
--> Running transaction check
---> Package libaio.x86_64 0:0.3.109-12.el7 will be installed
---> Package mariadb.x86_64 1:5.5.37-1.el7_0 will be installed
---> Package perl-DBD-MySQL.x86_64 0:4.023-5.el7 will be installed
---> Package perl-DBI.x86_64 0:1.627-4.el7 will be installed
--> Processing Dependency: perl(RPC::PlServer) >= 0.2001 for package: perl-DBI-1.627-4.el7.x86_64
--> Processing Dependency: perl(RPC::PlClient) >= 0.2000 for package: perl-DBI-1.627-4.el7.x86_64
---> Package perl-Data-Dumper.x86_64 0:2.145-3.el7 will be installed
--> Running transaction check
---> Package perl-PlRPC.noarch 0:0.2020-14.el7 will be installed
--> Processing Dependency: perl(Net::Daemon) >= 0.13 for package: perl-PlRPC-0.2020-14.el7.noarch
--> Processing Dependency: perl(Net::Daemon::Test) for package: perl-PlRPC-0.2020-14.el7.noarch
--> Processing Dependency: perl(Net::Daemon::Log) for package: perl-PlRPC-0.2020-14.el7.noarch
--> Processing Dependency: perl(Compress::Zlib) for package: perl-PlRPC-0.2020-14.el7.noarch
--> Running transaction check
---> Package perl-IO-Compress.noarch 0:2.061-2.el7 will be installed
--> Processing Dependency: perl(Compress::Raw::Zlib) >= 2.061 for package: perl-IO-Compress-2.061-2.el7.noarch
--> Processing Dependency: perl(Compress::Raw::Bzip2) >= 2.061 for package: perl-IO-Compress-2.061-2.el7.noarch
---> Package perl-Net-Daemon.noarch 0:0.48-5.el7 will be installed
--> Running transaction check
---> Package perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 will be installed
---> Package perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package                     Arch       Version               Repository   Size
================================================================================
Installing:
 mariadb-server              x86_64     1:5.5.37-1.el7_0      updates      11 M
Installing for dependencies:
 libaio                      x86_64     0.3.109-12.el7        base         24 k
 mariadb                     x86_64     1:5.5.37-1.el7_0      updates     8.9 M
 perl-Compress-Raw-Bzip2     x86_64     2.061-3.el7           base         32 k
 perl-Compress-Raw-Zlib      x86_64     1:2.061-4.el7         base         57 k
 perl-DBD-MySQL              x86_64     4.023-5.el7           base        140 k
 perl-DBI                    x86_64     1.627-4.el7           base        802 k
 perl-Data-Dumper            x86_64     2.145-3.el7           base         47 k
 perl-IO-Compress            noarch     2.061-2.el7           base        260 k
 perl-Net-Daemon             noarch     0.48-5.el7            base         51 k
 perl-PlRPC                  noarch     0.2020-14.el7         base         36 k

Transaction Summary
================================================================================
Install  1 Package (+10 Dependent packages)

Total download size: 21 M
Installed size: 107 M
Is this ok [y/d/N]: y
Downloading packages:
warning: /var/cache/yum/x86_64/7/base/packages/libaio-0.3.109-12.el7.x86_64.rpm:
Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for libaio-0.3.109-12.el7.x86_64.rpm is not installed
(1/11): libaio-0.3.109-12.el7.x86_64.rpm                   |  24 kB   00:00
(2/11): perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm     |  32 kB   00:00
(3/11): perl-Compress-Raw-Zlib-2.061-4.el7.x86_64.rpm      |  57 kB   00:00
(4/11): perl-DBD-MySQL-4.023-5.el7.x86_64.rpm              | 140 kB   00:00
Public key for mariadb-server-5.5.37-1.el7_0.x86_64.rpm is not installed
(5/11): mariadb-server-5.5.37-1.el7_0.x86_64.rpm           |  11 MB   00:00
(6/11): perl-DBI-1.627-4.el7.x86_64.rpm                    | 802 kB   00:00
(7/11): perl-Data-Dumper-2.145-3.el7.x86_64.rpm            |  47 kB   00:00
(8/11): perl-IO-Compress-2.061-2.el7.noarch.rpm            | 260 kB   00:00
(9/11): perl-PlRPC-0.2020-14.el7.noarch.rpm                |  36 kB   00:00
(10/11): mariadb-5.5.37-1.el7_0.x86_64.rpm                 | 8.9 MB   00:00
(11/11): perl-Net-Daemon-0.48-5.el7.noarch.rpm             |  51 kB   00:00
--------------------------------------------------------------------------------
Total                                               21 MB/s |  21 MB  00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : perl-Data-Dumper-2.145-3.el7.x86_64                         1/11
  Installing : libaio-0.3.109-12.el7.x86_64                                2/11
  Installing : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64                 3/11
  Installing : 1:mariadb-5.5.37-1.el7_0.x86_64                             4/11
  Installing : perl-Net-Daemon-0.48-5.el7.noarch                           5/11
  Installing : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64                  6/11
  Installing : perl-IO-Compress-2.061-2.el7.noarch                         7/11
  Installing : perl-PlRPC-0.2020-14.el7.noarch                             8/11
  Installing : perl-DBI-1.627-4.el7.x86_64                                 9/11
  Installing : perl-DBD-MySQL-4.023-5.el7.x86_64                          10/11
  Installing : 1:mariadb-server-5.5.37-1.el7_0.x86_64                     11/11
  Verifying  : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64                  1/11
  Verifying  : perl-Net-Daemon-0.48-5.el7.noarch                           2/11
  Verifying  : perl-Data-Dumper-2.145-3.el7.x86_64                         3/11
  Verifying  : 1:mariadb-5.5.37-1.el7_0.x86_64                             4/11
  Verifying  : perl-PlRPC-0.2020-14.el7.noarch                             5/11
  Verifying  : 1:mariadb-server-5.5.37-1.el7_0.x86_64                      6/11
  Verifying  : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64                 7/11
  Verifying  : libaio-0.3.109-12.el7.x86_64                                8/11
  Verifying  : perl-DBI-1.627-4.el7.x86_64                                 9/11
  Verifying  : perl-IO-Compress-2.061-2.el7.noarch                        10/11
  Verifying  : perl-DBD-MySQL-4.023-5.el7.x86_64                          11/11

Installed:
  mariadb-server.x86_64 1:5.5.37-1.el7_0

Dependency Installed:
  libaio.x86_64 0:0.3.109-12.el7
  mariadb.x86_64 1:5.5.37-1.el7_0
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7
  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7
  perl-DBD-MySQL.x86_64 0:4.023-5.el7
  perl-DBI.x86_64 0:1.627-4.el7
  perl-Data-Dumper.x86_64 0:2.145-3.el7
  perl-IO-Compress.noarch 0:2.061-2.el7
  perl-Net-Daemon.noarch 0:0.48-5.el7
  perl-PlRPC.noarch 0:0.2020-14.el7

Complete!

Mit nachfolgendem Befehl, kann der Inhalt des Hauptpaketes - mariadb-server aufgelistet werden:

# rpm -qil mariadb-server
Name        : mariadb-server
Epoch       : 1
Version     : 5.5.37
Release     : 1.el7_0
Architecture: x86_64
Install Date: Mon 10 Nov 2014 04:25:59 AM CET
Group       : Applications/Databases
Size        : 58171821
License     : GPLv2 with exceptions and LGPLv2 and BSD
Signature   : RSA/SHA256, Sat 05 Jul 2014 05:28:36 PM CEST, Key ID 24c6a8a7f4a80eb5
Source RPM  : mariadb-5.5.37-1.el7_0.src.rpm
Build Date  : Tue 24 Jun 2014 05:53:24 PM CEST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://mariadb.org
Summary     : The MariaDB server and related files
Description :
MariaDB is a multi-user, multi-threaded SQL database server. It is a
client/server implementation consisting of a server daemon (mysqld)
and many different client programs and libraries. This package contains
the MariaDB server and some accompanying files and directories.
MariaDB is a community developed branch of MySQL.
/etc/logrotate.d/mariadb
/etc/my.cnf.d/server.cnf
/usr/bin/innochecksum
/usr/bin/myisam_ftdump
/usr/bin/myisamchk
/usr/bin/myisamlog
/usr/bin/myisampack
/usr/bin/mysql_convert_table_format
/usr/bin/mysql_fix_extensions
/usr/bin/mysql_install_db
/usr/bin/mysql_plugin
/usr/bin/mysql_secure_installation
/usr/bin/mysql_setpermission
/usr/bin/mysql_tzinfo_to_sql
/usr/bin/mysql_upgrade
/usr/bin/mysql_zap
/usr/bin/mysqlbug
/usr/bin/mysqld_multi
/usr/bin/mysqld_safe
/usr/bin/mysqldumpslow
/usr/bin/mysqlhotcopy
/usr/bin/mysqltest
/usr/bin/perror
/usr/bin/replace
/usr/bin/resolve_stack_dump
/usr/bin/resolveip
/usr/lib/systemd/system/mariadb.service
/usr/lib/tmpfiles.d/mariadb.conf
/usr/lib64/mysql/INFO_BIN
/usr/lib64/mysql/INFO_SRC
/usr/lib64/mysql/mysqlbug
/usr/lib64/mysql/plugin
/usr/lib64/mysql/plugin/adt_null.so
/usr/lib64/mysql/plugin/auth_0x0100.so
/usr/lib64/mysql/plugin/auth_pam.so
/usr/lib64/mysql/plugin/auth_socket.so
/usr/lib64/mysql/plugin/auth_test_plugin.so
/usr/lib64/mysql/plugin/daemon_example.ini
/usr/lib64/mysql/plugin/dialog.so
/usr/lib64/mysql/plugin/dialog_examples.so
/usr/lib64/mysql/plugin/ha_innodb.so
/usr/lib64/mysql/plugin/ha_sphinx.so
/usr/lib64/mysql/plugin/handlersocket.so
/usr/lib64/mysql/plugin/libdaemon_example.so
/usr/lib64/mysql/plugin/mypluglib.so
/usr/lib64/mysql/plugin/mysql_clear_password.so
/usr/lib64/mysql/plugin/qa_auth_client.so
/usr/lib64/mysql/plugin/qa_auth_interface.so
/usr/lib64/mysql/plugin/qa_auth_server.so
/usr/lib64/mysql/plugin/query_cache_info.so
/usr/lib64/mysql/plugin/semisync_master.so
/usr/lib64/mysql/plugin/semisync_slave.so
/usr/lib64/mysql/plugin/server_audit.so
/usr/lib64/mysql/plugin/sphinx.so
/usr/lib64/mysql/plugin/sql_errlog.so
/usr/libexec/mariadb-prepare-db-dir
/usr/libexec/mariadb-wait-ready
/usr/libexec/mysqld
/usr/share/man/man1/innochecksum.1.gz
/usr/share/man/man1/msql2mysql.1.gz
/usr/share/man/man1/myisam_ftdump.1.gz
/usr/share/man/man1/myisamchk.1.gz
/usr/share/man/man1/myisamlog.1.gz
/usr/share/man/man1/myisampack.1.gz
/usr/share/man/man1/mysql.server.1.gz
/usr/share/man/man1/mysql_convert_table_format.1.gz
/usr/share/man/man1/mysql_fix_extensions.1.gz
/usr/share/man/man1/mysql_install_db.1.gz
/usr/share/man/man1/mysql_plugin.1.gz
/usr/share/man/man1/mysql_secure_installation.1.gz
/usr/share/man/man1/mysql_setpermission.1.gz
/usr/share/man/man1/mysql_tzinfo_to_sql.1.gz
/usr/share/man/man1/mysql_upgrade.1.gz
/usr/share/man/man1/mysql_zap.1.gz
/usr/share/man/man1/mysqlbinlog.1.gz
/usr/share/man/man1/mysqlbug.1.gz
/usr/share/man/man1/mysqlcheck.1.gz
/usr/share/man/man1/mysqld_multi.1.gz
/usr/share/man/man1/mysqld_safe.1.gz
/usr/share/man/man1/mysqldumpslow.1.gz
/usr/share/man/man1/mysqlhotcopy.1.gz
/usr/share/man/man1/mysqlimport.1.gz
/usr/share/man/man1/mysqlman.1.gz
/usr/share/man/man1/mysqltest.1.gz
/usr/share/man/man1/perror.1.gz
/usr/share/man/man1/replace.1.gz
/usr/share/man/man1/resolve_stack_dump.1.gz
/usr/share/man/man1/resolveip.1.gz
/usr/share/man/man8/mysqld.8.gz
/usr/share/mysql/README.mysql-cnf
/usr/share/mysql/config.huge.ini
/usr/share/mysql/config.medium.ini
/usr/share/mysql/config.small.ini
/usr/share/mysql/errmsg-utf8.txt
/usr/share/mysql/fill_help_tables.sql
/usr/share/mysql/my-huge.cnf
/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-small.cnf
/usr/share/mysql/mysql_performance_tables.sql
/usr/share/mysql/mysql_system_tables.sql
/usr/share/mysql/mysql_system_tables_data.sql
/usr/share/mysql/mysql_test_data_timezone.sql
/var/lib/mysql
/var/log/mariadb
/var/log/mariadb/mariadb.log
/var/run/mariadb

Dienst/Deamon-Start einrichten

Um einen MariaDB-Datenbank-Server, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:

# systemctl enable mariadb.service
ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'

Eine Überprüfung, ob beim Neustart des Server der mariadb-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:

# systemctl list-unit-files --type=service | grep mariadb.service
mariadb.service                        enabled

bzw.

# systemctl is-enabled mariadb.service
enabled

iptables Regel

Damit der MariaDB-Datenbank-Server auch erreichbar ist und nicht die Ergebnisse der Datenbank-Abfragen vom Paketfilter iptables blockiert werden, muss nachfolgende Regel zum iptables-Regelwerk hinzugefügt werden.

Um die aktuellen iptables-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1      141 15811 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        1    60 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22  
5        2    64 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination          
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Nachfolgender Befehl, fügt folgende iptables-Regeln dem iptables-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:

  • -A INPUT -p tcp --dport 3306 -j ACCEPT

und hier die Befehle:

# iptables -I INPUT 5 -p tcp --dport 3306 -j ACCEPT

Ein erneute Abfrage des iptables-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1      192 19567 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        1    60 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3306  
6        3    96 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Die neue Zeile ist an Position 5 (INPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):

...
5        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3306
...

Um diese iptables-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:

# /usr/sbin/iptables-save > /etc/sysconfig/iptables 

Basis-Konfiguration

Bevor der erste Start des MariaDB-Server durchgeführt wird, können noch Anpassungen in der Konfigurationsdatei

  • /etc/my.cnf

durchgeführt werden.

Nach der Installation des MariaDB-Server, sieht der Inhalt der Konfigurationsdatei /etc/my.cnf wie nachfolgend dargestellt aus (Standardeinstellungen - komplette Konfigurationsdatei):

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
 
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
 
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

:!: HINWEIS - Ein Liste der Möglichen Optionen ist unter nachfolgendem externen Link zu finden:

lost+found Konfiguration

Eins Beispiel für eine Anpassung wäre, dass das Dateisystem in dem der MariaDB-Server die Verzeichnisse und Dateien beim ersten Start anlegt, auf einer eigenen Festplatte oder einem eignen Volume in einer VolumeGroup liegen und hier ein Verzeichnis des Dateisystem vom Dateisystem angelegt wird, dass den Namen

  • lost+found

trägt.

Dies kann zu unerwünschten Eintragungen im LOG des MySQL-Server führen, wie nachfolgen dargestellt:

...
141110 04:52:21 [ERROR] Invalid (old?) table or database name 'lost+found'
...

Um dies zu vermeiden, kann der Speicherort im Dateisystem, in dem der MariaDB-Server die Verzeichnisse und Dateien für die Datenbanken ablegt wie nachfolgend gezeigt verändert werden.

Die Anpassungen sind in der Konfigurationsdatei /etc/my.cnf vorzunehmen und in diesem Beispiel, durch voranstellen eines Kommentars im Format:

# Tachtler

gekennzeichnet.

Hier eine mögliche Anpassung (komplette Konfigurationsdatei):

[mysqld]
# Tachtler
# default: datadir=/var/lib/mysql
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
 
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
 
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

Erweiterte Konfiguration

Binary-Log

Um eine bessere Datenkonsistenz bei einem Backup und vor allem bei dem darauf folgenden Recovery zu ermöglichen, sind nachfolgende Anpassungen von Vorteil:

  1. Einführung der zusätzlichen Log-Schreibung des Binary-Logs
  2. Einführung der Log-Schreibung des Binary-Logs mittels des row-Formats
  3. Festlegung der LOG-Schreibung des Binary-Logs auf eine Größe von 100 MegyByte pro Log-Datei
  4. Daten der LOG-Schreibung sollen maximal 7 Tage beinhalten.

Die Anpassungen sind in der Konfigurationsdatei /etc/my.cnf vorzunehmen und in diesem Beispiel, durch voranstellen eines Kommentars im Format:

# Tachtler

gekennzeichnet.

Hier eine mögliche Anpassung (komplette Konfigurationsdatei):

[mysqld]
# Tachtler
# default: datadir=/var/lib/mysql
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
 
# Tachtler - binary-log -
log_bin=bin-log
binlog_format=row
max_binlog_size=100M
expire_logs_days=7
 
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
 
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

Slow-Query-Log

Zusätzlich zur Performance Überwachung, soll das Slow-Log eingeschaltet werden, welche alle Zugriffe protokolliert, welche sehr lange laufen.

Der Standardwert von 10 Sekunden oder länger der minimalen Laufzeit eines Abfrage kann mit dem Parameter

long_query_time=5

z.B. auf 5 Sekunden eingestellt werden.

Die Anpassungen sind in der Konfigurationsdatei /etc/my.cnf vorzunehmen und in diesem Beispiel, durch voranstellen eines Kommentars im Format:

# Tachtler

gekennzeichnet.

Hier eine mögliche Anpassung (komplette Konfigurationsdatei):

[mysqld]
# Tachtler
# default: datadir=/var/lib/mysql
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
 
# Tachtler - binary-log -
log_bin=bin-log
binlog_format=row
max_binlog_size=100M
expire_logs_days=7
 
# Tachtler - slow-query-log -
slow_query_log=1
slow_query_log_file=/var/log/mariadb/slow_query.log
long_query_time=5
 
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
 
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

Erster Start

Bevor weitere Konfigurationsschritte erfolgen, sollte dem ersten Start nichts im Wege stehen, da bereits hier Konfigurationseinstellungen durchgeführt werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# systemctl start mariadb.service

:!: HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !

MariaDB-Server Überprüfung

Ob der MariaDB-Server, sprich der mariadb-Dienst/Deamon auch tatsächlich als Hintergrundprozess läuft, kann mit nachfolgendem Befehl überprüft werden (Es sollte eine Ausgabe wie nachfolgend dargestellt erfolgen - es kommt auf die zweite Zeile an!):

# ps auxwf | grep mariadb
root     11195  0.0  0.0 112640   932 pts/0    S+   05:08   0:00                      \_ grep --color=auto mariadb
mysql    11151  0.3  4.6 910692 88092 ?        Sl   05:05   0:00  \_ /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql/data --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb mariadb.pid --socket=/var/lib/mysql/mysql.sock

und nachfolgender Befehl:

# netstat -tulpen | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*         LISTEN      27         33600      11151/mysqld

bzw. nachfolgender Befehl:

# systemctl status mariadb.service
mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled)
   Active: active (running) since Mon 2014-11-10 05:05:45 CET; 3min 40s ago
  Process: 10995 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 10911 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 10994 (mysqld_safe)
   CGroup: /system.slice/mariadb.service
           --10994 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           --11151 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysq...

Nov 10 05:05:42 vml70030.idmz.tachtler.net mariadb-prepare-db-dir[10911]: The...
Nov 10 05:05:42 vml70030.idmz.tachtler.net mariadb-prepare-db-dir[10911]: You...
Nov 10 05:05:42 vml70030.idmz.tachtler.net mariadb-prepare-db-dir[10911]: htt...
Nov 10 05:05:42 vml70030.idmz.tachtler.net mariadb-prepare-db-dir[10911]: Sup...
Nov 10 05:05:42 vml70030.idmz.tachtler.net mariadb-prepare-db-dir[10911]: Sky...
Nov 10 05:05:42 vml70030.idmz.tachtler.net mariadb-prepare-db-dir[10911]: Alt...
Nov 10 05:05:42 vml70030.idmz.tachtler.net mariadb-prepare-db-dir[10911]: htt...
Nov 10 05:05:42 vml70030.idmz.tachtler.net mysqld_safe[10994]: 141110 05:05:4...
Nov 10 05:05:42 vml70030.idmz.tachtler.net mysqld_safe[10994]: 141110 05:05:4...
Nov 10 05:05:45 vml70030.idmz.tachtler.net systemd[1]: Started MariaDB databa...
Hint: Some lines were ellipsized, use -l to show in full.

Eine weitere Überprüfung, ob der erste Start erfolgreich war, kann durch Einsicht der LOG-Dateien

  • /var/log/mariadb/mariadb.log

durchgeführt werden.

Ausgabe der LOG-Datei /var/log/mariadb/mariadb.log mit nachfolgendem Befehl, die Ausgabe sollte wie nachfolgend dargestellt aussehen:

# cat /var/log/mariadb/mariadb.log
141110 05:05:42 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql/data
141110  5:05:42 InnoDB: The InnoDB memory heap is disabled
141110  5:05:42 InnoDB: Mutexes and rw_locks use GCC atomic builtins
141110  5:05:42 InnoDB: Compressed tables use zlib 1.2.7
141110  5:05:42 InnoDB: Using Linux native AIO
141110  5:05:42 InnoDB: Initializing buffer pool, size = 128.0M
141110  5:05:42 InnoDB: Completed initialization of buffer pool
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
141110  5:05:42  InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
141110  5:05:42  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
141110  5:05:43  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: 127 rollback segment(s) active.
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
141110  5:05:44  InnoDB: Waiting for the background threads to start
141110  5:05:45 Percona XtraDB (http://www.percona.com) 5.5.37-MariaDB-34.0 started; log sequence number 0
141110  5:05:45 [Note] Plugin 'FEEDBACK' is disabled.
141110  5:05:45 [Note] Server socket created on IP: '0.0.0.0'.
141110  5:05:45 [Note] Event Scheduler: Loaded 0 events
141110  5:05:45 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.37-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server

Durch nachfolgenden Befehl, kann das Verzeichnis in dem die MariaDB-Datenbank standardmäßig die Dateien der einzelnen Datenbanken ablegt, angezeigt werden. Die Ausgabe sollte in etwa wie nachfolgend gezeigt aussehen:

# ls -la /var/lib/mysql/data/
total 28700
drwxr-xr-x  5 mysql mysql      151 Nov 10 05:05 .
drwxr-xr-x. 3 mysql mysql       34 Nov 10 05:05 ..
-rw-rw----  1 mysql mysql    16384 Nov 10 05:05 aria_log.00000001
-rw-rw----  1 mysql mysql       52 Nov 10 05:05 aria_log_control
-rw-rw----  1 mysql mysql  2666998 Nov 10 05:05 bin-log.000001
-rw-rw----  1 mysql mysql       51 Nov 10 05:05 bin-log.index
-rw-rw----  1 mysql mysql 18874368 Nov 10 05:05 ibdata1
-rw-rw----  1 mysql mysql  5242880 Nov 10 05:05 ib_logfile0
-rw-rw----  1 mysql mysql  5242880 Nov 10 05:05 ib_logfile1
drwx------  2 mysql mysql     4096 Nov 10 05:05 mysql
drwx------  2 mysql mysql     4096 Nov 10 05:05 performance_schema
drwx------  2 mysql mysql        6 Nov 10 05:05 test

MariaDB-Server Zugriff

Direkt nach der Installation und dem ersten Start des MariaDB-Datenbank-Servers, kann durch nachfolgenden Befehl, die korrekt Funktionsweise überprüft werden:

# mysqladmin version
mysqladmin  Ver 9.0 Distrib 5.5.37-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.

Server version          5.5.37-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 9 min 14 sec

Threads: 1  Questions: 2  Slow queries: 0  Opens: 0  Flush tables: 2  Open tables: 26  Queries per second 
avg: 0.003

Ein erstes Zugriff kann mit nachfolgendem Befehl durchgeführt werden, welche eine Ausgabe in etwa wie nachfolgend dargestellt, erzeugen sollte:

# mysql -u root
Welcome TO the MariaDB monitor.  Commands END WITH ; OR \g.
Your MariaDB connection id IS 4
Server version: 5.5.37-MariaDB MariaDB Server
 
Copyright (c) 2000, 2014, Oracle, Monty Program Ab AND others.
 
TYPE 'help;' OR '\h' FOR help. TYPE '\c' TO clear the CURRENT INPUT statement.
 
MariaDB [(NONE)]> SHOW DATABASES;
+--------------------+
| DATABASE           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 ROWS IN SET (0.00 sec)
 
MariaDB [(NONE)]> quit
Bye

Nachfolgende Eingaben sind dabei nach dem Start der MariaDB-Monitor - mysql durchzuführen:

(Auflistung aller Datenbanken):

MariaDB [(none)]> show databases;

und

(Beenden der MariaDB-Monitor):

MariaDB [(none)]> quit

MariaDB-Monitor

Der MariaDB-Monitor ist eine Art shell, welche Befehle gegen den MariaDB-Datenbank-Server ausführen kann.

Der MariaDB-Monitor erfordert eine Anmeldung, welche als z.B. Benutzer root und noch ohne Passwort-Abfrage wie folgt aussehen kann:

# mysql -h localhost -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.37-MariaDB MariaDB Server
 
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]>

Beendet wird diese Art von shell durch nachfolgenden Befehl:

MariaDB [(none)]> quit
Bye

Sicherheits-Konfiguration

Nach der erfolgreicher Installation gibt es empfohlen, sicherheitsrelevante Einstellungen, welche gerade in produktiven MariaDB-Datenbank-Server Installationen durchgeführt werden sollten.

Um nachfolgende sicherheitsrelevanten Einstellungen zu realisieren,

  • Benutzer root durch setzen eines Passwortes schützen
  • Anonyme Benutzerkonten entfernen
  • Deaktivieren des Zugriffs des Benutzers root via Remote/Entfernten-Zugriff
  • Nicht benötigte Datenbanken, wie z.B. die Datenbank test entfernen

kann das Script,

  • /usr/bin/mysql_secure_installation

genutzt, bzw. ausgeführt werden, was mit nachfolgendem Befehl durchgeführt werden kann:

:!: HINWEIS - Es gibt aktuell einen Bug bei der Ausführung des nachfolgenden Skriptes!

# /usr/bin/mysql_secure_installation
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found
...

welcher aktuell ignoriert werden kann, da dieser keine negativen Auswirkungen auf die Funktionalität des Skriptes hat!

# /usr/bin/mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Überprüfung: root Passwort

Eine Überprüfung, ob für den Benutzer root tatsächlich eine Passwort vergeben wurde, kann durch Ausführen des nachfolgenden Befehls durchgeführt werden und sollte eine Ergebnis wie das nachfolgende zeigen:

# mysql -h localhost -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Eine erfolgreiche Anmeldung, sollte nur noch mit Passwort möglich sein, wie nachfolgender Befehl und nachfolgendes Ergebnis zeigen sollte:

# mysql -h localhost -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 22
Server version: 5.5.37-MariaDB MariaDB Server
 
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> quit
Bye

Überprüfung: Anonyme Benutzerkonten

Eine Überprüfung, ob weitere anonyme Benutzerkonten vorhanden sind, kann mit nachfolgendem Befehl überprüft werden und sollte keine weiteren Benutzer außer dem Benutzer root zur Anzeige bringen:

# mysql -h localhost -u root -e "SELECT Host,User FROM mysql.user" -p
Enter password:
+-----------+------+
| Host      | User |
+-----------+------+
| 127.0.0.1 | root |
| ::1       | root |
| localhost | root |
+-----------+------+

:!: HINWEIS - Falls kein IPv6 zum Einsatz kommt, kann mit nachfolgendem Befehl der Zugriff des Benutzers root über den Host ::1 ebenfalls gelöscht werden:

# mysql -h localhost -u root -e "DELETE FROM mysql.user WHERE Host='::1' AND User='root'" -p
Enter password:

Eine erneute Überprüfung der Benutzerkonten, kann nochmals mit nachfolgendem Befehl durchgeführt werden und sollte dann nachfolgendes Ergebnis zur Anzeige bringen:

# mysql -h localhost -u root -e "SELECT Host,User FROM mysql.user" -p
Enter password:
+-----------+------+
| Host      | User |
+-----------+------+
| 127.0.0.1 | root |
| localhost | root |
+-----------+------+

Überprüfung: Remote Zugriff

Eine Überprüfung, ob der Benutzers root via Remote/Entfernten-Zugriff eine Verbindung zum MariaDB-Datenbank-Server in der Lage ist, aufzubauen, kann mit nachfolgendem Befehl überprüft werden und sollte keine weiteren Hosts außer den Host

  • 127.0.0.1
  • ::1
  • localhost

zur Anzeige bringen:

# mysql -h localhost -u root -e "SELECT Host,User FROM mysql.user" -p
Enter password:
+-----------+------+
| Host      | User |
+-----------+------+
| 127.0.0.1 | root |
| ::1       | root |
| localhost | root |
+-----------+------+

:!: HINWEIS - Falls kein IPv6 zum Einsatz kommt, kann mit nachfolgendem Befehl der Zugriff des Benutzers root über den Host ::1 ebenfalls gelöscht werden:

# mysql -h localhost -u root -e "DELETE FROM mysql.user WHERE Host='::1' AND User='root'" -p
Enter password:

Eine erneute Überprüfung, ob der Benutzers root via Remote/Entfernten-Zugriff eine Verbindung zum MariaDB-Datenbank-Server in der Lage ist, aufzubauen, kann nochmals mit nachfolgendem Befehl durchgeführt werden und sollte keine weiteren Hosts außer den Host

  • 127.0.0.1
  • localhost

zur Anzeige bringen:

# mysql -h localhost -u root -e "SELECT Host,User FROM mysql.user" -p
Enter password:
+-----------+------+
| Host      | User |
+-----------+------+
| 127.0.0.1 | root |
| localhost | root |
+-----------+------+

Überprüfung: Test-Datenbanken

Eine Überprüfung, ob Test-Datenbanken auf dem MariaDB-Datenbank-Server vorhanden sind, kann mit nachfolgendem Befehl überprüft werden und sollte nachfolgende Ausgabe zur Anzeige bringen:

# mysql -h localhost -u root -e "show databases" -p
Enter password:
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

LOG-Rotate Konfiguration

Um das Volumen von LOG-Dateien unter Linux nicht ins unermessliche ansteigen zu lassen, kann die LOG-Datei des MariaDB-Datenbank-Server durch die Konfigurationsdatei im Verzeichnis

  • /etc/logrotate.d/mariadb

wie nachfolgend dargestellt, konfiguriert werden.

Nachfolgende Schritte sind durchzuführen, da kein Neustart des MariaDB-Datenbank-Server, zur Rotation der LOG-Dateien mehr durchgeführt werden soll, sondern dies über Mechanismen des Programms

  • /usr/bin/mysqladmin

erreicht werden soll.

Da das Rotieren der LOG-Dateien effektiv durch den Benutzer root, unter Zuhilfenahme des LOG-Rotate-Mechanismus von Linux durchgeführt wird, sind entsprechende Konfigurationen durchzuführen.

/root/.my.cnf

Zuerst ist es erforderlich eine Datei in nachfolgendem Verzeichnis mit nachfolgender Bezeichnung mit nachfolgendem Befehl anzulegen:

# touch /root/.my.cnf

Anschließend sollten die Dateirechte mit nachfolgendem Befehl gesetzt werden, dass nur der Benutzer root Zugriff auf den Inhalt der Datei hat:

# chmod 400 /root/.my.cnf

Falls die Besitzrechte nicht schon bei dem Benutzer root und der Gruppe root liegen sollten, kann dies mit nachfolgendem Befehl, ebenfalls noch gesetzte werden:

# chown root:root /root/.my.cnf

Anschließend sollte mit nachfolgendem Befehl überprüft werden, ob die Konfigurationsdatei

  • /root/.my.cnf

korrekt angelegt wurde, was mit nachfolgendem Befehl durchgeführt werden kann und eine Ausgabe wie die nachfolgende zum Vorschein bringen sollte:

# ls -la /root/.my.cnf
-r-------- 1 root root 0 Nov 10 06:43 /root/.my.cnf

Der Inhalt der Konfigurationsdatei

  • /root/.my.cnf

sollte dann wie nachfolgend dargestellt aussehen:

[mysqladmin]
password=geheim
user=root

/etc/logrotate.d/mariadb

Die eigentliche Steuerungsdatei für das Rotieren der LOG-Dateien des MariaDB-Datenbank-Server lautet:

  • /etc/logrotate.d/mariadb

Der Inhalt der Konfigurationsdatei sieht wie folgt aus und sollte entsprechend Angepasst werden. Die Anpassungen sind durch voranstellen eines Kommentars im Format:

# Tachtler

gekennzeichnet.

Hier eine mögliche Anpassung (komplette Konfigurationsdatei):

# This logname can be set in /etc/my.cnf
# by setting the variable "log-error"
# in the [mysqld_safe] section as follows:
#
# [mysqld_safe]
# log-error=/var/log/mariadb/mariadb.log
#
# If the root user has a password you have to create a
# /root/.my.cnf configuration file with the following
# content:
#
# [mysqladmin]
# password = <secret>
# user= root
#
# where "<secret>" is the password.
#
# ATTENTION: This /root/.my.cnf should be readable ONLY
# for root !
 
# Then, un-comment the following lines to enable rotation of mysql's log file:
 
# Tachtler - uncommented following lines -
/var/log/mariadb/mariadb.log {
        create 640 mysql mysql
        notifempty
        daily
        rotate 3
        missingok
        compress
    postrotate
        # just if mysqld is really running
        if test -x /usr/bin/mysqladmin && \
           /usr/bin/mysqladmin ping &>/dev/null
        then
           /usr/bin/mysqladmin flush-logs
        fi
    endscript
}

SSL-Konfiguration

Nachfolgende Konfiguration ermöglicht eine SSL-Verschlüsselte Verbindung zu einem MariaDB-Datenbank-Server aufbauen zu können.

:!: HINWEIS - Es sollen self-signed-certifiacte aus einer eigenen CA erstellt werden!

Die Konfiguration beinhaltet

  1. Erstellen einer eignen CA - MariaDB CA
  2. Erstellen eines self-signed-Zertifikats für den Server - db.idmz.tachtler.net
  3. Erstellen eines self-signed-Zertifikats für den Client - MariaDB Client

SSL: Eigene CA erstellen

Nachfolgende Konfiguration erstellt eine eigene CA, aus der das ROOT-Zertifikat der CA erstellt wird, welche wiederum das MariaDB Server-Zertifikate und das MariaDB Client-Zertifikat hervorbringt.

Dazu sollen mit nachfolgenden Befehl in nachfolgendem Verzeichnis

  • /etc/pki/

die folgenden Verzeichnisse erstellt werden

  • /etc/pki/mariadb
  • /etc/pki/mariadb/certs - Verzeichnis für alle Zertifikate
  • /etc/pki/mariadb/private - Verzeichnis für alle Schlüssel
# mkdir -p /etc/pki/mariadb/{certs,private}

Ob die Verzeichnisse korrekt erstellt wurden, kann mit nachfolgendem Befehl überprüft werden:

# ll /etc/pki/mariadb/*
/etc/pki/mariadb/certs:
total 0

/etc/pki/mariadb/private:
total 0

Jetzt müssen jeweils ein

  • /etc/pki/mariadb/private/mariadb-ca-key.pem - Zertifikats-Schlüssel (Certificate-Key)
  • /etc/pki/mariadb/certs/mariadb-ca-crt.pem - ROOT-Zertifikat (Certificate)

mit nachfolgenden Befehlen erstellt werden:

1. Schritt: Erstellung eines Schlüssel für die eigene CA, mit nachfolgendem Befehl:

openssl genrsa 2048 > /etc/pki/mariadb/private/mariadb-ca-key.pem
Generating RSA private key, 2048 bit long modulus
...........+++
................................+++
e is 65537 (0x10001)

2. Schritt: Erstellung eines ROOT-Zertifikats für die eigene CA, mit nachfolgendem Befehl:

# openssl req -new -x509 -nodes -days 3650 -key /etc/pki/mariadb/private/mariadb-ca-key.pem -out /etc/pki/mariadb/certs/mariadb-ca-crt.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:DE
State or Province Name (full name) []:Bayern (Bavaria)
Locality Name (eg, city) [Default City]:Muenchen (Munich)
Organization Name (eg, company) [Default Company Ltd]:Klaus Tachtler
Organizational Unit Name (eg, section) []:.
Common Name (eg, your name or your server's hostname) []:MariaDB CA
Email Address []:hostmaster@tachtler.net

Mit nachfolgendem Befehl kann nun überprüft werden, ob der Schlüssel und das ROOT-Zertifikat für die eigene CA erstellt wurden:

# ll /etc/pki/mariadb/*
/etc/pki/mariadb/certs:
total 4
-rw-r--r-- 1 root root 1460 Apr 27 04:54 mariadb-ca-crt.pem

/etc/pki/mariadb/private:
total 4
-rw-r--r-- 1 root root 1675 Apr 27 04:52 mariadb-ca-key.pem

Mit nachfolgendem Befehl kann das soeben erstellt ROOT-Zertifikat ausgegeben und damit auch überprüft werden:

# openssl x509 -noout -text -in /etc/pki/mariadb/certs/mariadb-ca-crt.pem
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            8d:d5:4b:dd:b3:b7:7c:1b
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=DE, ST=Bayern (Bavaria), L=Muenchen (Munich), O=Klaus Tachtler, CN=MariaDB
CA/emailAddress=hostmaster@tachtler.net
        Validity
            Not Before: Apr 27 02:54:11 2018 GMT
            Not After : Apr 24 02:54:11 2028 GMT
        Subject: C=DE, ST=Bayern (Bavaria), L=Muenchen (Munich), O=Klaus Tachtler, CN=MariaDB
CA/emailAddress=hostmaster@tachtler.net
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:b9:ae:eb:99:15:f8:3a:d1:cd:b2:36:44:ae:a7:
                    f4:fd:a7:37:a8:ac:ab:90:e1:c9:18:25:cb:e7:35:
                    e8:0d:b9:15:cb:e9:41:fe:c5:06:07:2b:ce:fe:2c:
                    fd:93:70:90:5e:f9:fc:59:2c:e7:b1:6b:51:74:3a:
                    91:3e:07:8a:7d:9f:09:4b:35:a0:09:51:bb:da:fb:
                    b9:82:df:96:1e:45:a4:e5:61:c4:a0:e4:96:7c:c5:
                    ee:fa:87:e7:74:31:24:1c:48:ac:fa:98:83:a4:87:
                    45:18:c8:48:38:40:1f:2e:32:f0:dd:d9:35:5e:6e:
                    bf:a3:2c:8d:f3:73:d7:22:01:7c:8a:05:2c:3e:f9:
                    7b:0f:a1:8d:05:8e:2e:c6:a3:14:de:91:ee:7e:f8:
                    ab:92:9a:b9:67:52:4c:ba:cd:21:4f:cf:8b:e6:83:
                    5d:57:7f:64:db:1f:21:4a:d3:d2:18:39:76:1e:42:
                    7d:76:b8:13:30:0b:3a:06:dd:61:2d:2a:97:0b:22:
                    cf:31:25:48:d8:6f:a3:b1:b2:bd:c5:b2:90:03:41:
                    ef:c1:55:52:85:c5:e6:84:21:98:2c:79:25:ea:ae:
                    17:d4:92:28:2e:33:37:0f:11:f0:0c:24:48:ba:ed:
                    73:9c:c9:fd:4f:d6:50:30:55:5c:00:7d:7c:c0:20:
                    59:35
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier: 
                8D:E2:83:E1:8E:90:37:11:5A:1C:C1:B8:FE:5B:ED:7B:76:0C:DD:D6
            X509v3 Authority Key Identifier: 
                keyid:8D:E2:83:E1:8E:90:37:11:5A:1C:C1:B8:FE:5B:ED:7B:76:0C:DD:D6

            X509v3 Basic Constraints: 
                CA:TRUE
    Signature Algorithm: sha256WithRSAEncryption
         26:2c:20:9f:69:fe:42:67:00:1d:63:6d:ef:19:5a:b9:ac:db:
         a4:92:63:ac:0b:16:56:f4:d0:ab:d0:99:99:41:48:40:99:a1:
         f9:99:09:4c:10:15:b0:6a:fa:fd:f3:8d:e0:8b:25:48:10:c8:
         16:84:b2:67:e1:25:86:3e:bc:81:fa:fb:f7:45:61:b3:fb:23:
         51:65:e6:c3:98:f7:36:c9:79:cc:3f:72:33:96:ce:cc:d5:bc:
         64:ac:ba:9a:a3:f0:99:59:bc:b4:7b:2e:31:36:d4:a1:5b:66:
         c1:12:29:8c:10:94:dd:f0:d6:7e:e8:f1:15:23:0f:fe:f4:a0:
         51:bd:b8:1b:c8:6f:61:58:2d:a5:ee:03:44:b5:94:bd:0a:88:
         cb:fc:a8:51:2c:9b:06:84:88:fd:c2:86:0b:5d:ae:7f:91:05:
         1f:12:ab:d5:65:8f:4c:6f:9e:4d:e3:f6:96:fd:42:84:5c:37:
         ef:9a:47:62:21:d8:30:12:26:16:e1:65:13:55:60:e1:7e:dd:
         01:47:7f:2a:c2:76:dc:e7:80:79:6c:bd:84:0f:9e:13:cc:1b:
         e2:4c:79:1d:c2:70:61:11:d7:fa:6f:1c:fe:e8:ae:67:3a:ea:
         9b:e6:fb:c9:f8:24:a9:17:3e:c3:34:c9:59:f1:df:61:18:d0:
         ce:07:cc:04

SSL: Server-Zertifikat erstellen

Nachfolgende Befehle erstellen ein MariaDB Server-Zertifikate aus der eigenen CA.

1. Schritt: Zuerst müssen jeweils ein

  • /etc/pki/mariadb/private/mariadb-server-key.pem - Zertifikats-Schlüssel (Certificate-Key)
  • /etc/pki/mariadb/certs/mariadb-server-csr.pem - Zertifikats-Antrag (Certificate-Request/CSR)

mit nachfolgendem Befehl erstellt werden:

# openssl req -newkey rsa:2048 -days 3649 -nodes -keyout /etc/pki/mariadb/private/mariadb-server-key.pem -out /etc/pki/mariadb/certs/mariadb-server-csr.pem
Generating a 2048 bit RSA private key
......................+++
...........+++
writing new private key to '/etc/pki/mariadb/private/mariadb-server-key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:DE
State or Province Name (full name) []:Bayern (Bavaria)
Locality Name (eg, city) [Default City]:Muenchen (Munich)
Organization Name (eg, company) [Default Company Ltd]:Klaus Tachtler
Organizational Unit Name (eg, section) []:.
Common Name (eg, your name or your server's hostname) []:db.idmz.tachtler.net
Email Address []:hostmaster@tachtler.net

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:.

Mit nachfolgendem Befehl kann nun überprüft werden, ob der MariaDB Server Schlüssel und der MariaDB Server Zertifikatsantrag erstellt wurden:

# ls -la /etc/pki/mariadb/*
/etc/pki/mariadb/certs:
total 8
drwxr-xr-x 2 root root   61 Apr 27 05:07 .
drwxr-xr-x 4 root root   32 Apr 27 04:44 ..
-rw-r--r-- 1 root root 1460 Apr 27 04:54 mariadb-ca-cert.pem
-rw-r--r-- 1 root root 1078 Apr 27 05:07 mariadb-server-csr.pem

/etc/pki/mariadb/private:
total 8
drwxr-xr-x 2 root root   60 Apr 27 05:06 .
drwxr-xr-x 4 root root   32 Apr 27 04:44 ..
-rw-r--r-- 1 root root 1675 Apr 27 04:52 mariadb-ca-key.pem
-rw-r--r-- 1 root root 1708 Apr 27 05:07 mariadb-server-key.pem

2. Schritt: Anschließend muss der soeben erstellte MariaDB Server Schlüssel noch in einen RSA kompatiblen Schlüssel umgewandelt werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# openssl rsa -in /etc/pki/mariadb/private/mariadb-server-key.pem  -out /etc/pki/mariadb/private/mariadb-server-key.pem
writing RSA key

3. Schritt: Abschließend wird nun der MariaDB Server Zertifikatsantrag durch signieren durch das ROOT-Zertifikat, ein MariaDB Server Zertifikat erstellt, was mit nachfolgendem Befehl durchgführt werden kann:

# openssl x509 -req -in /etc/pki/mariadb/certs/mariadb-server-csr.pem -days 3649 -CA /etc/pki/mariadb/certs/mariadb-ca-crt.pem -CAkey /etc/pki/mariadb/private/mariadb-ca-key.pem -set_serial 01 -out /etc/pki/mariadb/certs/mariadb-server-crt.pem
Signature ok
subject=/C=DE/ST=Bayern (Bavaria)/L=Muenchen (Munich)/O=Klaus Tachtler/CN=MariaDB Server/emailAddress=hostmaster@tachtler.net
Getting CA Private Key

Mit nachfolgendem Befehl kann überprüft werden, ob das MariaDB Server Zertifikat erstellt wurde:

# ls -la /etc/pki/mariadb/*
/etc/pki/mariadb/certs:
total 12
drwxr-xr-x 2 root root   90 Apr 27 05:35 .
drwxr-xr-x 4 root root   32 Apr 27 04:44 ..
-rw-r--r-- 1 root root 1460 Apr 27 04:54 mariadb-ca-cert.pem
-rw-r--r-- 1 root root 1338 Apr 27 05:35 mariadb-server-crt.pem
-rw-r--r-- 1 root root 1078 Apr 27 05:07 mariadb-server-csr.pem

/etc/pki/mariadb/private:
total 8
drwxr-xr-x 2 root root   60 Apr 27 05:06 .
drwxr-xr-x 4 root root   32 Apr 27 04:44 ..
-rw-r--r-- 1 root root 1675 Apr 27 04:52 mariadb-ca-key.pem
-rw-r--r-- 1 root root 1679 Apr 27 05:19 mariadb-server-key.pem

Mit nachfolgendem Befehl kann das soeben erstellt MariaDB Server-Zertifikate ausgegeben und damit auch überprüft werden:

# openssl x509 -noout -text -in /etc/pki/mariadb/certs/mariadb-server-crt.pem
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=DE, ST=Bayern (Bavaria), L=Muenchen (Munich), O=Klaus Tachtler, CN=MariaDB
CA/emailAddress=hostmaster@tachtler.net
        Validity
            Not Before: Apr 27 04:26:53 2018 GMT
            Not After : Apr 23 04:26:53 2028 GMT
        Subject: C=DE, ST=Bayern (Bavaria), L=Muenchen (Munich), O=Klaus Tachtler,
CN=db.idmz.tachtler.net/emailAddress=hostmaster@tachtler.net
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:c5:81:5c:95:da:2b:19:33:cc:61:ba:b3:ea:bb:
                    48:a2:40:69:bf:7f:5a:71:1f:af:a0:94:bb:17:11:
                    59:b6:85:3b:06:a6:61:b1:88:50:a9:c0:a9:37:0c:
                    c9:30:5e:87:26:0e:32:35:02:14:b5:93:02:fb:5c:
                    65:57:f1:e0:d0:a7:5c:79:f0:74:39:3f:6e:5b:a7:
                    19:bc:18:46:55:9f:78:43:4f:f2:69:17:b1:cb:da:
                    7d:6a:f5:90:03:1b:b2:f1:8c:19:0a:bc:47:d0:da:
                    20:30:0f:63:6f:45:0b:30:8a:34:7f:70:50:90:9a:
                    f6:93:82:e4:ec:a5:74:4b:a9:80:30:d4:4a:11:41:
                    13:64:76:03:cf:be:a4:cc:46:da:e0:95:20:8f:6c:
                    39:5c:95:ab:21:e6:3d:39:69:df:69:36:a6:d8:73:
                    8c:d3:41:9e:51:72:0e:bf:c2:e7:7b:4b:da:e6:f9:
                    8f:66:8e:ba:be:a4:59:a7:dc:13:d4:00:41:83:e4:
                    d2:3f:c8:73:e7:00:ee:63:fd:f5:e8:79:41:0e:45:
                    66:d5:50:c7:14:0f:2a:1a:97:eb:e1:a0:18:d6:40:
                    8c:07:0b:05:a9:72:c8:cd:a5:96:f1:c6:e1:39:04:
                    ed:63:06:dc:8d:cd:30:90:e5:b4:2c:bd:de:b4:a6:
                    88:2a
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         73:c3:cb:a8:4e:4d:fe:82:78:18:72:6f:6d:76:7a:6b:64:25:
         b6:f3:08:51:bd:19:f4:75:9e:bd:cc:05:50:d8:6b:2b:93:b5:
         35:02:44:ff:ee:4a:b8:a9:db:57:9e:66:9c:25:28:a1:a5:48:
         2e:4f:83:d4:1d:cd:c5:7e:4e:70:10:3a:9f:dd:dc:2d:82:c9:
         e5:55:84:27:50:51:93:07:06:5e:1f:ae:b2:2c:59:23:ff:4f:
         24:c5:3f:65:07:fc:42:cd:5c:47:2f:2f:54:ca:8a:70:34:9e:
         2d:1d:bc:ec:35:9d:d0:7d:64:a5:65:16:9d:f2:77:e5:ee:a3:
         f1:94:ec:f4:89:fe:a7:95:c6:27:38:6d:ef:44:90:90:03:70:
         aa:cf:1d:57:0e:f1:2b:e5:09:ed:7d:c9:9e:c6:84:9a:77:5c:
         0d:9f:4a:d4:e5:43:00:a8:04:51:00:26:4a:23:3b:09:ed:b1:
         8a:1f:e8:62:09:5a:83:f6:43:4a:c9:53:4b:06:96:36:55:d1:
         0c:f7:1e:59:1a:c2:cb:82:6f:3e:c7:cb:53:9a:62:04:0d:38:
         f7:98:95:0c:5e:9f:e3:69:39:a3:c7:e5:b1:e6:b6:5e:52:87:
         63:05:a2:ba:b0:12:c9:01:9b:0c:38:97:2c:0d:55:3e:06:ef:
         52:ed:8a:35

SSL: Client-Zertifikat erstellen

Nachfolgende Befehle erstellen ein MariaDB Client-Zertifikate aus der eigenen CA.

:!: HINWEIS - Dies kann in Client wie z.B.

eingebunden werden.

1. Schritt: Zuerst müssen jeweils ein

  • /etc/pki/mariadb/private/mariadb-client-key.pem - Zertifikats-Schlüssel (Certificate-Key)
  • /etc/pki/mariadb/certs/mariadb-client-csr.pem - Zertifikats-Antrag (Certificate-Request/CSR)

mit nachfolgendem Befehl erstellt werden:

# openssl req -newkey rsa:2048 -days 3649 -nodes -keyout /etc/pki/mariadb/private/mariadb-client-key.pem -out /etc/pki/mariadb/certs/mariadb-client-csr.pem
Generating a 2048 bit RSA private key
.............................................................................................................
...........................................+++
......+++
writing new private key to '/etc/pki/mariadb/private/mariadb-client-key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:DE
State or Province Name (full name) []:Bayern (Bavaria)
Locality Name (eg, city) [Default City]:Muenchen (Munich)
Organization Name (eg, company) [Default Company Ltd]:Klaus Tachtler
Organizational Unit Name (eg, section) []:.
Common Name (eg, your name or your server's hostname) []:MariaDB Client
Email Address []:hostmaster@tachtler.net

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:.

Mit nachfolgendem Befehl kann nun überprüft werden, ob der MariaDB Client Schlüssel und der MariaDB Client Zertifikatsantrag erstellt wurden:

# ls -la /etc/pki/mariadb/*
/etc/pki/mariadb/certs:
total 16
drwxr-xr-x 2 root root  118 Apr 27 05:48 .
drwxr-xr-x 4 root root   32 Apr 27 04:44 ..
-rw-r--r-- 1 root root 1460 Apr 27 04:54 mariadb-ca-crt.pem
-rw-r--r-- 1 root root 1078 Apr 27 05:48 mariadb-client-csr.pem
-rw-r--r-- 1 root root 1338 Apr 27 05:43 mariadb-server-crt.pem
-rw-r--r-- 1 root root 1078 Apr 27 05:42 mariadb-server-csr.pem

/etc/pki/mariadb/private:
total 12
drwxr-xr-x 2 root root   89 Apr 27 05:48 .
drwxr-xr-x 4 root root   32 Apr 27 04:44 ..
-rw-r--r-- 1 root root 1675 Apr 27 04:52 mariadb-ca-key.pem
-rw-r--r-- 1 root root 1704 Apr 27 05:48 mariadb-client-key.pem
-rw-r--r-- 1 root root 1679 Apr 27 05:42 mariadb-server-key.pem

2. Schritt: Anschließend muss der soeben erstellte MariaDB Client Schlüssel noch in einen RSA kompatiblen Schlüssel umgewandelt werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# openssl rsa -in /etc/pki/mariadb/private/mariadb-client-key.pem  -out /etc/pki/mariadb/private/mariadb-client-key.pem
writing RSA key

3. Schritt: Abschließend wird nun der MariaDB Client Zertifikatsantrag durch signieren durch das ROOT-Zertifikat, ein MariaDB Client Zertifikat erstellt, was mit nachfolgendem Befehl durchführt werden kann:

# # openssl x509 -req -in /etc/pki/mariadb/certs/mariadb-client-csr.pem -days 3649 -CA /etc/pki/mariadb/certs/mariadb-ca-crt.pem -CAkey /etc/pki/mariadb/private/mariadb-ca-key.pem -set_serial 01 -out /etc/pki/mariadb/certs/mariadb-client-crt.pem
Signature ok
subject=/C=DE/ST=Bayern (Bavaria)/L=Muenchen (Munich)/O=Klaus Tachtler/CN=MariaDB Client/emailAddress=hostmaster@tachtler.net
Getting CA Private Key

Mit nachfolgendem Befehl kann überprüft werden, ob das MariaDB Server Zertifikat erstellt wurde:

# ls -la /etc/pki/mariadb/*
/etc/pki/mariadb/certs:
total 20
drwxr-xr-x 2 root root  147 Apr 27 05:50 .
drwxr-xr-x 4 root root   32 Apr 27 04:44 ..
-rw-r--r-- 1 root root 1460 Apr 27 04:54 mariadb-ca-crt.pem
-rw-r--r-- 1 root root 1338 Apr 27 05:50 mariadb-client-crt.pem
-rw-r--r-- 1 root root 1078 Apr 27 05:48 mariadb-client-csr.pem
-rw-r--r-- 1 root root 1338 Apr 27 05:43 mariadb-server-crt.pem
-rw-r--r-- 1 root root 1078 Apr 27 05:42 mariadb-server-csr.pem

/etc/pki/mariadb/private:
total 12
drwxr-xr-x 2 root root   89 Apr 27 05:48 .
drwxr-xr-x 4 root root   32 Apr 27 04:44 ..
-rw-r--r-- 1 root root 1675 Apr 27 04:52 mariadb-ca-key.pem
-rw-r--r-- 1 root root 1675 Apr 27 05:49 mariadb-client-key.pem
-rw-r--r-- 1 root root 1679 Apr 27 05:42 mariadb-server-key.pem

Mit nachfolgendem Befehl kann das soeben erstellt MariaDB Client-Zertifikate ausgegeben und damit auch überprüft werden:

# openssl x509 -noout -text -in /etc/pki/mariadb/certs/mariadb-client-crt.pem
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=DE, ST=Bayern (Bavaria), L=Muenchen (Munich), O=Klaus Tachtler, CN=MariaDB 
CA/emailAddress=hostmaster@tachtler.net
        Validity
            Not Before: Apr 27 03:50:10 2018 GMT
            Not After : Apr 23 03:50:10 2028 GMT
        Subject: C=DE, ST=Bayern (Bavaria), L=Muenchen (Munich), O=Klaus Tachtler, CN=MariaDB
Client/emailAddress=hostmaster@tachtler.net
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    01:d1:41:07:b9:d5:e5:83:33:f0:ef:6f:46:97:3d:
                    9e:0b:0d:d4:03:db:bb:f4:2d:46:75:4e:ba:99:7e:
                    08:dc:cd:b4:b6:59:18:41:4f:29:83:ef:b2:54:4b:
                    f7:92:50:f7:cc:8d:66:6a:ea:f4:fc:7e:f0:1b:c2:
                    93:8e:34:e5:bd:40:76:db:25:23:d1:58:46:e6:67:
                    55:48:66:c7:bb:43:0a:7b:f3:c4:26:0d:1a:b3:01:
                    d7:40:3a:d4:9a:2b:74:8d:1e:9f:ec:77:0c:74:34:
                    cb:6a:4d:43:13:b7:63:1a:5a:6b:84:17:6e:c1:2f:
                    99:f2:58:2d:89:be:7d:ad:e8:26:3b:fa:bb:7d:5d:
                    b7:d9:a3:87:7b:3a:aa:5b:4d:5a:95:75:42:1a:e1:
                    bc:5f:4b:13:2a:70:3f:99:d2:ea:7f:7d:31:ef:aa:
                    a4:d5:33:77:e3:56:81:2e:b3:8d:41:78:51:d4:11:
                    fd:2a:e3:41:6b:85:bc:bf:05:fe:03:f5:1b:20:5d:
                    a6:2b:2f:a9:a6:1b:41:df:e1:59:db:cd:d0:f0:9f:
                    3f:21:25:00:1f:f1:e5:b6:bc:a0:93:57:1e:36:3f:
                    a8:96:00:8c:f2:59:97:b2:fa:60:30:15:57:57:b6:
                    ad:db:ec:70:9a:13:cb:79:0a:8b:99:84:cf:74:e6:
                    7d:41
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         59:d8:29:47:9f:3f:ff:99:73:1d:b2:fe:20:49:53:68:52:f0:
         82:54:70:f7:f2:33:c5:16:4a:63:15:ea:9f:23:6e:1c:a5:3f:
         e2:5c:03:76:32:73:d3:ae:63:3d:88:56:71:8e:a7:60:37:a0:
         b1:9e:7e:41:88:d4:48:16:7c:8a:eb:b2:99:58:d5:b5:39:f2:
         60:f7:71:9b:4b:3f:0e:a8:d6:a8:98:c7:03:ef:18:ec:50:2d:
         2b:5e:86:44:60:79:eb:a7:44:71:53:ea:19:48:28:e7:bc:50:
         06:a9:04:11:8c:93:10:ca:ff:d7:bf:c4:90:2e:af:66:bc:19:
         14:a1:6c:b2:61:ef:d3:c6:2a:2a:19:21:b5:df:c1:ed:4d:21:
         76:e4:3c:26:b3:c1:36:93:7d:21:20:9b:c3:fc:94:d3:29:b9:
         cd:7b:79:18:43:d0:14:b0:57:83:b0:39:c0:00:61:5e:94:57:
         b7:bb:2d:9f:64:26:f4:9b:5a:ff:9b:7a:a3:10:50:99:d5:08:
         4c:c9:d1:95:33:84:02:fb:95:d4:0f:f9:e8:7c:bf:37:c2:26:
         4f:ab:c4:03:41:71:ce:bf:62:5a:c4:77:89:5a:20:15:56:81:
         6f:dd:f7:f2:89:4e:fd:98:6e:89:79:58:6a:b9:5d:38:02:e6:
         3c:f1:31:c9

/etc/my.cnf

Um den MariaDB-Datenbank-Server mit SSL-Verschlüsselung nutzen zu können, ist es erforderlich das

  • ROOT-Zertifikat aus der eigenen CA und das
  • MariaDB Server-Zertifikate
  • MariaDB Server-Schlüssel

in den mit einzubinden.

Die Anpassungen sind in der Konfigurationsdatei /etc/my.cnf vorzunehmen und in diesem Beispiel, durch voranstellen eines Kommentars im Format:

# Tachtler

gekennzeichnet.

Hier eine mögliche Anpassung (komplette Konfigurationsdatei/nur SSL-Verschlüsselung):

[mysqld]
# Tachtler
# default: datadir=/var/lib/mysql
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
 
# Tachtler - ssl -
ssl-ca=/etc/pki/mariadb/certs/mariadb-ca-crt.pem
ssl-cert=/etc/pki/mariadb/certs/mariadb-server-crt.pem
ssl-key=/etc/pki/mariadb/private/mariadb-server-key.pem
 
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
 
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

Um überprüfen zu können, ob eine SSL-Verschlüsselung nun im MariaDB-Datenbank-Server aktiv ist, ist eine Anmeldung am MariaDB-Datenbank-Server erforderlich und nachfolgende Befehle, welche den Status in Bezug auf die SSL-Verschlüsselung zeigen:

# mysql -h 127.0.0.1 -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 5.5.56-MariaDB MariaDB Server
 
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]>

Anschließend zeigt nachfolgender SQL-Befehl die SSL-Verschlüsselungseinstellungen an:

MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';
+---------------+-------------------------------------------------+
| Variable_name | Value                                           |
+---------------+-------------------------------------------------+
| have_openssl  | YES                                             |
| have_ssl      | YES                                             |
| ssl_ca        | /etc/pki/mariadb/certs/mariadb-ca-crt.pem       |
| ssl_capath    |                                                 |
| ssl_cert      | /etc/pki/mariadb/certs/mariadb-server-crt.pem   |
| ssl_cipher    |                                                 |
| ssl_key       | /etc/pki/mariadb/private/mariadb-server-key.pem |
+---------------+-------------------------------------------------+
7 rows in set (0.01 sec)

Um die Verbindung zum MariaDB-Datenbank-Server zu beenden, kann nachfolgender Befehl verwendet werden:

MariaDB [(none)]> quit
Bye

Nachfolgender Befehl baut eine SSL-Verschlüsselte Verbindung zum MariaDB-Datenbank-Server auf und zeigt so, ob SSL-Verschlüsselte Verbindungen möglich sind:

# openssl s_client -connect 127.0.0.1:3306
CONNECTED(00000003)
140490808899488:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 289 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1524802147
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/mariadb_centos_7.txt · Zuletzt geändert: 2018/04/27 06:38 von klaus