Benutzer-Werkzeuge

Webseiten-Werkzeuge


mysql:administration

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)

backup_mysql_defaultdb.sh
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:

  1. Wo sind die bin`s ( bei mir unter /usr )
  2. Unter welchem Benutzer soll alles laufen ( bei mir unter mysql )
  3. 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
basedirbin`s
socketSocketdatei, diese nehme ich auch gleich zum Verbinden mit der Instanz
datadirDatenmüll ;)
portNaja, 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
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.

debian_ea.cnf
[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
mysql/administration.txt · Zuletzt geändert: 2016/12/03 13:34 von raiser