====== Administration ======
===== Datenbnaken sichern =====
/usr/bin/mysqldump --defaults-extra-file=/etc/mysql/debian.cnf -AxicKe -h 127.0.0.1 -P 3306 > /var/mysqlbackup/3306.sql
===== Datenbnaken sichern (ohne MYSQL + SCHEMA) =====
DATABASES=$(mysql --defaults-extra-file=/etc/mysql/debian.cnf -h 127.0.0.1 -P 3306 -NBe 'show schemas' | grep -wv 'mysql\|information_schema')
/usr/bin/mysqldump --defaults-extra-file=/etc/mysql/debian.cnf -xicKe -h 127.0.0.1 -P 3306 --databases $DATABASES > /var/mysqlbackup/3306.sql
/usr/bin/mysqldump --defaults-extra-file=/etc/mysql/debian.cnf -xicKe -h 127.0.0.1 -P 3306 --databases mysql > /var/mysqlbackup/3306_mysql.sql
===== Neue Datenbankinstanz anlegen (Debian etch)=====
Was muss man wissen:
- Wo sind die **bin**`s (// bei mir unter /usr //)
- Unter welchem Benutzer soll alles laufen (// bei mir unter **mysql** //)
- Wo soll der Datenmüll abgelegt werden (// bei mir unter **/var/lib/mysql_ea** //)
Und schon kann es losgehen. Schauen wir uns mal den Befehl **mysql_install_db** an. Mit diesem kann man eine neue saubere Instanz vom MySql anlegen. Und zwar mit folgendem Aufruf:
# mysql_install_db --basedir=/usr --datadir=/var/lib/mysql_ea --user=mysql
Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h debian password 'new-password'
Alternatively you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/scripts/mysqlbug script!
Jetzt haben wir eine neue Instanz. Wir wurden auch darauf hingewiesen, dass wir ein Passwort setzen sollen - und was wir machen müssen, damit diese Instanz beim Starten des System mit anläuft.
Schaue wir doch aber erst einmal, was uns das gebracht hat.
# cd /var/lib/mysql_ea/
# ls -ali
6423260 drwx------ 2 mysql root 4096 27. Nov 17:50 mysql
Perfekt! Die Mysql-Datenbak wurde angelegt. Nun starten wir diese Instanz, um gleich mal das Passwort zu setzen.\\
:!: Ich bevorzuge diesen Weg. Aber ihr könnt natürlich auch den **mysqladmin**-Befehl nehmen.:!:\\
Um mal einen Überlick über die Parameter von **mysqld** zu bekommen... (ich erspare mir hier alles abzudrucken... ich werde nur die wichtigsten zum Starten der Instanz aufzeigen).
# mysqld --verbose --help
|basedir|**bin**`s|
|socket|Socketdatei, diese nehme ich auch gleich zum Verbinden mit der Instanz|
|datadir|Datenmüll ;)|
|port|Naja, noch ein Port angeben, wenn ihr schon eine Defaultinstanz auf 3306 laufen habt. Sonst...\\[ERROR] Can't start server: Bind on TCP/IP port: Address already in use,\\[ERROR] Do you already have another mysqld server running on port: 3306 ?,\\[ERROR] Aborting|
# mysqld --basedir=/usr --datadir=/var/lib/mysql_ea --socket=/var/run/mysqld/mysql_ea.sock --port=3310 --bind-address=192.168.10.40 --skip-grant-tables &
161127 19:10:28 InnoDB: Started; log sequence number 0 44233
161127 19:10:28 [Note] mysqld: ready for connections.
Version: '5.1.49-3~bpo50+1' socket: '/var/run/mysqld/mysql_ea.sock' port: 3310 (Debian)
Super! Die Instanz läuft. Vergesst bitte das **&** nicht. Wenn der Prozess gestartet wird, kommt ihr aus diesem sonst nicht mehr heraus. Ihr müsst ihn dann von einer anderen Shell aus steuern.\\
\\
Alternativ, wenn **&** vergessen wurde **[STRG]** + **[z]** und dann **bg** (Erst Prozess anhalten, dann in den Hintergrund schieben)\\
Nun setzen wir noch ein Passwort:
# mysql -S /var/run/mysqld/mysql_ea.sock
> use mysql;
> UPDATE `user` SET `Password`=PASSWORD('neues_passwort') WHERE `User` = 'root';
> flush privileges;
> quit
So, nun noch schnell den alten mysql Prozess abschießen **ps ax|grep mysql**, und **kill -9 xxxxx**\\
Und jetzt die Instanz ohne **skip-grant-tables** starten. Jetzt sollte man für **root** das eben gesetzte Passwort eingeben.
# mysqld --basedir=/usr --datadir=/var/lib/mysql_ea --socket=/var/run/mysqld/mysql_ea.sock --port=3310 --bind-address=192.168.10.40 &
161127 19:22:03 [Note] Plugin 'FEDERATED' is disabled.
161127 19:22:03 InnoDB: Started; log sequence number 0 44233
161127 19:22:03 [Note] Event Scheduler: Loaded 0 events
161127 19:22:03 [Note] mysqld: ready for connections.
Version: '5.1.49-3~bpo50+1' socket: '/var/run/mysqld/mysql_ea.sock' port: 3310 (Debian)
# mysql -S /var/run/mysqld/mysql_ea.sock -p
> neues_passwort
> ...
===== Datenbank START/STOP =====
# vi /etc/init.d/mysql_ea
#!/bin/sh
### BEGIN INIT INFO
# Provides: Mysql_Enterprise_Architect
# Required-Start: $local_fs $network $named $time $syslog
# Required-Stop: $local_fs $network $named $time $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Mysql Enterprise Architect
### END INIT INFO
SCRIPT=mysqld_safe
BASEDIR=/usr
DATADIR=/var/lib/mysql_ea
SOCKET=/var/run/mysqld/mysql_ea.sock
PORT=3310
BINDADDRESS="0.0.0.0"
PIDFILE=/var/run/mysqld/mysql_ea.pid
LOGFILE=/var/log/mysql_ea.log
ADMINFILE=/etc/mysql/debian_ea.cnf
PIDNUMBER=0
start() {
if [ -f "$PIDFILE" ]; then
PIDNUMBER=$(cat "$PIDFILE")
if kill -0 $PIDNUMBER ; then
echo "Process is running under: $PIDNUMBER"
return 1
fi
fi
mysqld_safe --basedir=$BASEDIR --datadir=$DATADIR --socket=$SOCKET --port=$PORT --bind-address=$BINDADDRESS --log-error=$LOGFILE --pid-file=$PIDFILE >/dev/null 2>&1 &
}
stop() {
echo "shutdown process is running ...."
if [ ! -f "$PIDFILE" ] || ! kill -0 $(cat "$PIDFILE"); then
echo "Processis not running"
return 1
fi
mysqladmin --defaults-file=$ADMINFILE shutdown
echo "shutdown process completed"
}
case "$1" in
start)
start
;;
stop)
stop
;;
retart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac
Nun noch das Konfigurationsfile, was von **mysqladmin** genutzt wird, anlegen.\\
Vergesst bitte nicht, die Rechte dieser Datei anzupassen. **500** sollte ausreichen.\\
Alternativ, um noch mehr Sicherheit zu gewährleisten, könnt ihr einen neuen Benutzer in dieser Instanz anlegen, der eben nur die administrativen Reche besitzt, die DB herunterzufahren (**shutdwon**).
# vi /etc/mysql/debian_ea.cnf
Hier wird das Passwort und der Benutzer hinterlegt, der dann Zugriff auf die Datenbankinstanz hat, um diese herunterzufahren.
[client]
user = root
password = neues_passwort
socket = /var/run/mysqld/mysql_ea.sock
[mysql_upgrade]
user = root
password = neues_passwort
socket = /var/run/mysqld/mysql_ea.sock
basedir = /usr