MySQL: Anzahl der Datensätze für alle Tabellen einer Datenbank
November 20, 2013 — 14:04

Heute wollte man von mir wissen wie viele Datensätze in den Tabellen einer Datenbank sind.

Eine Möglichkeit ist es jede Tabelle einzeln mit Count abzufragen:


SELECT COUNT(*) FROM <table>;

Bei einer Datenbank mit vielen Tabellen ist dies eine Fleißarbeit, welche viel Zeit in Anspruch nimmt. Schneller, einfacher und übersichtlicher geht es wie folgt:

SELECT table_name, table_rows
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = '<database>';
MySQL: Kleines User-1×1
Oktober 23, 2013 — 14:31

Anlegen

Anlegen eines neuen Benutzers

CREATE USER 'mustermann'@'localhost' IDENTIFIED BY 'Password';

Rechte

Gebe dem Benutzer alle Rechte an einer Datenbank (inkl. Grant-Option)

GRANT ALL PRIVILEGES ON database.* TO 'mustermann'@'localhost' WITH GRANT OPTION;

Es können auch nur einzelne Rechte vergeben werden. Siehe hierzu die Referenz: http://dev.mysql.com/doc/refman/5.5/en/grant.html

Passwort ändern

UPDATE mysql.user SET Password=PASSWORD('new-password-here') WHERE User='user-name-here' AND Host='host-name-here';

oder

SET PASSWORD FOR 'user-name-here'@'hostname-name-here' = PASSWORD('new-password-here');

Löschen

DROP USER 'mustermann'@'localhost';
Bash-Scripting: Mysql-Dumpscript mit Rotation der Sicherungen
Oktober 22, 2013 — 10:00

Backup…

Ein Script um ein Dump einer MySQL-Datenbank zu ziehen und komprimiert als bz2-Datei zu speichern. Eine einfache Backuprotation wurde mit eingefügt, so dass die letzten X-Versionen in den Ordnern 1-X vorgehalten werden.

#!/bin/bash
# This Backup-Script creates a dump from the entire mysql-Database
# and safes it in the backup-directory.
# Some Backup-Rotation included.
BACKUP_ROOT="/mnt/backup/mysql"
DB_USER="root" #DB-root
DB_PASSWD="Password" #DB-root-pw
ROTATIONS="7" #Number

echo ""
echo "MySQL-Backup"
echo "----------------------------------------"
echo "Rotating Backups..."
echo "This may take some time..."
# Delete eldest Backup
rm -rf $BACKUP_ROOT/$ROTATIONS
# create directories if needed
COUNT=1

for ((i=1; $i<=$ROTATIONS; i++))
do
  if [ ! -d ${BACKUP_ROOT}/${COUNT} ]; then
    mkdir -p $BACKUP_ROOT/$COUNT
  fi
  COUNT=$(($COUNT+1))
done

# rotating the backups
COUNT=0

for ((i=1; $i<$(($ROTATIONS)); i++))
do
  mv $BACKUP_ROOT/$(($ROTATIONS-$COUNT-1)) $BACKUP_ROOT/$(($ROTATIONS-$COUNT))
  COUNT=$(($COUNT+1))
done
mkdir $BACKUP_ROOT/1
echo ""
echo "Creating new backup from Database... "
echo "This may take some time..."
mysqldump --user=$DB_USER --password=$DB_PASSWD --all-databases | bzip2 > $BACKUP_ROOT/1/mysql-`date +%Y-%m-%d`.bz2
echo "----------------------------------------"
echo ""
echo "done"
exit 0

…und Restore

Der Dump kann über eine Pipe entpackt und  zurückgesichert werden.

bunzip2 < mysql-2013-10-25.bz2 | mysql -uroot -p