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
}

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/mariadb_centos_7.txt · Zuletzt geändert: 2017/05/24 12:24 von klaus