Schlagwort-Archiv: ubuntu

[EN] How to install MySQL 5.6 on Ubuntu 12.04 (Precise)

This how to will cover the upgrade process of MySQL 5.6 on Ubuntu 12.04 precise. This may also work on Ubuntu 12.10 (quantal) but I haven’t tested it at moment.

DISCLAIMER: I am not responsible for any DATA LOSS you may face when using this how to! Use it at your own risk, create a backup and use your brain! With manual installation you will definitely LOOSE the support of your distribution vendor in case of security updates, be aware of this fact! Thank you!

This how to was created on an up to date (at the day of writing) Ubuntu 12.04.2 LTS machine (use lsb_relase -a to check). MySQL was already running on this machine.

First of all you need to download your new mysql 5.6 server software. You will find the latest version at the download page of mysql.com. Select „Debian Linux“ as your platform and depending on your architecture (use uname -i to get this info) you should choose the appropriate package. I have selected x86, 64 bit and will use the package „mysql-5.6.15-debian6.0-x86_64.deb“ for the next steps. Hint: Oracle suggests you to login or register, you don’t need it as there is a link „No thanks, just start my download“ at the bottom of the page ;-).

Download the package (about 300 MB):

wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15-debian6.0-x86_64.deb -O mysql-5.6.15-debian6.0-x86_64.deb

… and install it using dpkg:

dpkg -i  mysql-5.6.15-debian6.0-x86_64.deb

… don’t be a messy and delete the package as you hopefully won’t need it again:

 rm mysql-5.6.15-debian6.0-x86_64.deb

Now look at your fresh mysql 5.6 setup at /opt/mysql/server-5.6/. You should really read the INSTALL-BINARY file as there are some remarks that are good to know and aren’t covered in this howto.

As I mentioned there was already an running instance of mysql on my system. If something wents wrong we really want to have a kind of backup. You could do this on different ways, either you could use mysqldump or to keep it simple stop mysql using service mysql stop and copy your /var/lib/mysql directory using cp -rp /var/lib/mysql /var/lib/mysql.old. This may take a lot of time depending on the size of your databases. In case of emergeny you could then install your distributions mysql version and use your old data.

service mysql stop && cp -rp /var/lib/mysql /var/lib/mysql.old

Now, as you have saved your production data you can remove your Ubuntu version of mysql-server. You can do this by:

apt-get remove mysql-server mysql-server-5.5 mysql-server-core-5.5

Move your my.cnf from /etc/mysql/my.cnf which is the Ubuntu default location to /etc/my.cnf which is the one mysql uses for the start scripts. Do this by mv /etc/mysql/my.cnf /etc/my.cnf and note that the /etc/mysql/conf.d/* files will be included anyway.

mv /etc/mysql/my.cnf /etc/my.cnf

To get mysql started you will need to copy the new startscript to /etc/init.d by cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysql.server. As you probably want mysql to start automatically on system startup use update-rc.d mysql.server defaults to create a standard runlevel configuration.

cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysql.server && update-rc.d mysql.server defaults

MySQL 5.6 depends on libaio which can installed by:

apt-get install libaio1

Set correct rights for your mysql installation:

chown -R mysql /opt/mysql/server-5.6/
chgrp -R mysql /opt/mysql/server-5.6/

Update some paths in your /etc/my.cnf (use a text editor of your choice, e.g. nano):

basedir = /opt/mysql/server-5.6
lc-messages-dir = /opt/mysql/server-5.6/share

And update your mysql information schema to the latest version:

/opt/mysql/server-5.6/scripts/mysql_install_db --user=mysql --datadir=/var/lib/mysql

Pitfall: This will create my.cnf in /opt/mysql/server-5.6/ which sets SQL mode to strict. Your applications may have problems with this mode. For compatibility reasons you should DELETE this my.cnf and only rely on your /etc/my.cnf. Delete it by rm /opt/mysql/server-5.6/my.cnf. You won’t be able to overwrite this setting with your /etc/my.cnf and remove STRICT_TRANS_TABLES from your sql_mode. Read more about mysql_install_db here.

rm /opt/mysql/server-5.6/my.cnf

Start mysql by

service mysql.server start

And check your /var/log/syslog for errors. If everything works fine, you should see something like "Version: '5.6.10' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)" and you shoudn’t find any mysql related errors.

Have fun with your freshly upgraded mysql 5.6 server!

Update (29.12.2013): Updated the download url and package name to mysql-5.6.15-debian6.0-x86_64.deb (Thanks hien)!

Merkwürdige Veränderung im Ubuntu lucid iptables redirect target

Nach dem letzten Update eines Ubuntu Servers stellte ich plötzlich eine Änderung der Funktionsweise von iptables fest: Bei einem REDIRECT wurde plötzlich als Ziel nicht mehr die ursprüngliche Destination-IP der Verbindung benutzt, sondern die Destination-IP wurde durch die erste IP des Interfaces ersetzt. Das hat dazu geführt, dass ich bei meinem redirect immer nur ein connection refused bekommen habe, denn auf der ersten Interface Adresse gab es den Dienst nicht. Ärgerlicherweise ist es aber auch genau so in den manpages beschrieben (auch schon in hardy, ich habs nachgeguckt):

This target is only valid in the nat table, in the PREROUTING and OUTPUT chains, and user-defined chains which are only called from those chains. It redirects the packet to the machine itself by changing the destination IP to the primary address of the incoming interface (locally-generated packets are mapped to the 127.0.0.1 address).

Alle E-Mails an eine Adresse zustellen mit Exim

Von Entwicklungs- oder Stagingservern aus möchte man in der Regel keine E-Mails an Kunden raussenden. Das aber in einer (bestehenden) Anwendung zu berücksichtigen kann aufwändig und fehleranfällig sein. Besser wäre es doch, direkt den Mailserver die Mails abzufangen, noch bevor diese irgendwie zugestellt werden können. Die E-Mails kann man sich dann noch gleich zu einer eigenen Mailbox weiterleiten lassen um den Inhalt beim Testen schon mal zu Gesicht zu bekommen.

Hier nun ein Beispiel wie man so eine Konfiguration mit Debian/Ubuntu realisieren kann:
In der Datei /etc/exim4/exim4.conf.template gibt es einen REWRITE CONFIGURATION Abschnitt.
Nach dem begin rewrite kann man dann in der nächsten Zeile eine oder mehrere Regeln einfügen. Für den beschriebenen Fall könnte das dann so aussehen:
*@* devilhopper@example.com tT

Es gibt auch noch andere Flags als tT (das überschreibt alle To-Felder in der Mail). Eine Liste der Flags gibts im Exim-Manual.

Damit die Konfiguration aus dem Template in eine Exim-Konfiguration übersetzt wird, muss dann noch ein update-exim4.conf ausgeführt werden und mit /etc/init.d/exim4 restart Exim selbst neugestartet werden.

E-Mail bei anstehenden Debian/Ubuntu-Updates gefällig?

apticron sendet einem automatisch eine E-Mail zu, sobald Aktualisierungen anstehen. DIe Installation ist denkbar einfach, einfach apticron über apt-get install apticron installieren.

Als Standard-Empfänger ist root ausgewählt. Um sich die E-Mail weiterleiten zu lassen, kann man in /root/.forward mit dem Texteditor seiner Wahl die eigene E-Mail Adresse eintragen. Der Server wird dann bestmöglich versuchen die E-Mail zuzustellen. Ob vom Server aus das E-Mail senden klappt, kann man mit einem Einzeiler überprüfen: echo „test“ | mail -s „test“ [email adresse]. Wenn das nicht klappt, sollte man mal seine Systemkonfiguration überprüfen.

Die E-Mails von apticron enthalten außerdem einen Hinweis darauf, wie wichtig die Aktualisierung wohl ist. Für Serveradministratoren ist dieses Tool also überaus praktisch!

Gefunden habe ich apticron übrigens über das Wiki von Thomas Krenn.