MariaDB ist eine von der Community entwickelte und kommerziell unterstützte Abspaltung des relationalen Datenbankmanagementsystems (RDBMS) MySQL, die als freie und quelloffene Software unter der GNU General Public License weitergeführt werden soll. Die Entwicklung wird von einigen der ursprünglichen Entwickler von MySQL geleitet, die es aufgrund von Bedenken wegen der Übernahme durch die Oracle Corporation im Jahr 2009 abgezweigt haben.
MariaDB soll eine hohe Kompatibilität mit MySQL aufrechterhalten, mit Bibliotheks-Binärparität und exakter Übereinstimmung mit MySQL-APIs und -Befehlen, so dass es in vielen Fällen als direkter Ersatz für MySQL fungieren kann. Die neuen Funktionen weichen jedoch voneinander ab. Sie umfasst neue Speicher-Engines wie Aria, ColumnStore und MyRocks.
Der leitende Entwickler/CTO ist Michael “Monty” Widenius, einer der Gründer von MySQL AB und der Gründer von Monty Program AB. Am 16. Januar 2008 gab MySQL AB bekannt, dass das Unternehmen einer Übernahme durch Sun Microsystems für rund 1 Milliarde US-Dollar zugestimmt hat. Die Übernahme wurde am 26. Februar 2008 abgeschlossen. Sun wurde im darauffolgenden Jahr von der Oracle Corporation übernommen. MariaDB ist nach der jüngeren Tochter von Widenius, Maria, benannt. (MySQL ist nach seiner anderen Tochter My benannt.)
pacman -S mariadb
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
systemctl enable --now mariadb.service
Gebe das Passwort für den mysql-Root-Benutzer ein, und die meisten Fragen können mit Ja beantwortet werden, wenn du zum Beispiel keinen Fernzugriff brauchst.
mysql_secure_installation
mysql -u root -p
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'mypassword'; FLUSH PRIVILEGES; EXIT;
mysql -u root -p
CREATE USER 'user_name'@'%' IDENTIFIED BY 'mypassword'; FLUSH PRIVILEGES; EXIT;
mysql -u root -p
CREATE DATABASE db_name; GRANT ALL ON db_name.* to 'user_name'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES; \q
oder etwas Ausführlicheres
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, DROP, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON db_name_here.* TO 'myuser'@'localhost';
mysql -u root -p SHOW DATABASES; DROP DATABASE db_name; FLUSH PRIVILEGES; EXIT;
mysql -u root -p SELECT User FROM mysql.user; DROP USER user_name@localhost; FLUSH PRIVILEGES; EXIT;
SET PASSWORD FOR 'user_name'@'localhost' = PASSWORD('password'); FLUSH PRIVILEGES; EXIT;
Du kannst alle Datenbanken mit dem folgenden Befehl mysqldump -u root -p --all-databases | gzip > all_databases.sql.gz
sichern oder nur eine einzige Datenbank mit mysqldump -u root -p –databases database_name | gzip > database_name.sql.gz
.
Oder verwende das folgende Skript, das Folgendes enthält:
#!/bin/bash # Shell script to backup MySQL database # Set these variables MyUSER="my_user" # DB_USERNAME MyPASS="mypassword" # DB_PASSWORD MyHOST="localhost" # DB_HOSTNAME # Backup Dest directory DEST="/path/to/backup/mysql/" # Email for notifications # EMAIL="email" # How many days old files must be to be removed DAYS="60" # Linux bin paths MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" GZIP="$(which gzip)" # Get date in dd-mm-yyyy format NOW="$(date +"%d-%m-%Y_%H-%M")" # Create Backup sub-directories MBD="$DEST/$NOW/mysql" install -d $MBD # DB skip list SKIP="information_schema performance_schema" # Get all databases DBS="$($MYSQL -h $MyHOST -u $MyUSER -p$MyPASS -Bse 'show databases')" # Archive database dumps for db in $DBS do skipdb=-1 if [ "$SKIP" != "" ]; then for i in $SKIP do [ "$db" == "$i" ] && skipdb=1 || : done fi if [ "$skipdb" == "-1" ] ; then FILE="$MBD/$db.sql" $MYSQLDUMP -h $MyHOST -u $MyUSER -p$MyPASS $db > $FILE fi done # Archive the directory, send mail and cleanup cd $DEST tar -cf $NOW.tar $NOW $GZIP -9 $NOW.tar #echo -e "Subject: MySQL backup $(hostname)\r\n\r\nMySQL backup is completed! Backup name is $NOW.tar.gz" | msmtp -a default $EMAIL rm -rf $NOW # Remove old files find $DEST -mtime +$DAYS -exec rm -f {} \;
Use crontab for automation.
mysql -u root -p db_name < database.sql
Bei einer neuen Hauptversion von Mariadb (z.B. mariadb-10.7.4-1 auf mariadb-10.8.3-1) ist es ratsam, die Datenbanken zu aktualisieren:
systemctl restart mariadb.service
mariadb-upgrade -u root -p
Um alle Tabellen in allen Datenbanken zu prüfen:
mariadb-check --all-databases -u root -p -c
Um alle Tabellen in allen Datenbanken zu analysieren:
mariadb-check --all-databases -u root -p -a
Um alle Tabellen in allen Datenbanken zu reparieren:
mariadb-check --all-databases -u root -p -r
Um alle Tabellen in allen Datenbanken zu optimieren:
mariadb-check --all-databases -u root -p -o
Alle Befehle “Datenbank prüfen/aktualisieren” in einem Block
systemctl restart mariadb.service mariadb-upgrade -u root -p mariadb-check --all-databases -u root -p -c mariadb-check --all-databases -u root -p -a mariadb-check --all-databases -u root -p -r mariadb-check --all-databases -u root -p -o