Deutsch| English

MySQL 5.6 unter Ubuntu 12.10 installieren (inklusive memcached Plugin)

Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>
Follow me on Twitter
Last edited 11/21/2012

Nach What’s New in MySQL 5.6 wird MySQL 5.6 gegenüber MySQL 5.5 einige Leistungssteigerungen erfahren. Wollen Sie MySQL 5.6 testen, so müssen Sie eines der Development Releases von der MySQL Downloads Seite benutzen, da es noch keine stabile Version gibt. Dieses Tutorial erklärt, wie Sie das MySQL 5.6.8rc1 (Linux Generic) Development Release auf einem Ubuntu 12.10 Server installieren.

Für die Richtigkeit der Inhalte dieses Tutorials gebe ich keinerlei Garantie. Der Weg, den ich nehme, ist nicht der einzige um ein solches System aufzusetzen, es ist lediglich der, den ich bevorzuge.

1 Vorbemerkung

In diesem Tutorial benutze ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100. Diese Einstellungen werden sich von Ihren unterscheiden, ersetzen Sie sie also an den entsprechenden Stellen.

Es ist wichtig, dass Sie keine andere Version von MySQL auf Ihrem System installiert haben (auch keine aus den Ubuntu Repositories)! Haben Sie dies schon getan, wird dieses Tutorial nicht mehr funktionieren!

Da alle Schritte dieses Tutorials mit root-Rechten ausgeführt werden müssen, können Sie entweder allen Befehlen den String sudo voranstellen, oder sich mit folgendem Befehl als root anmelden:

sudo su

2 AppArmor deaktivieren

Ihr manuell installiertes MySQL 5.6.8 könnte nicht starten solange AppArmor läuft, deshalb deaktivieren wir es:

/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

3 Installation von MySQL 5.6.8rc1 (Linux Generic)

Zuerst erstellen Sie einen Benutzer und eine Gruppe namens mysql:

groupadd mysql
useradd -r -g mysql mysql

Installieren Sie als nächstes das libaio1 Paket:

apt-get install libaio1

Wir werden MySQL im /usr/local/mysql Verzeichnis installieren (mit /usr/local/mysql/data im data Verzeichnis, also dem Vezeichnis, das die Datenbanken beinhalten wird). Laden Sie deshalb MySQL in dieses Verzeichnis herunter /usr/local:

cd /usr/local
wget -O mysql-5.6.8-rc-linux2.6-x86_64.tar.gz http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.8-rc-linux2.6-x86_64.tar.gz/from/http://cdn.mysql.com/

Entpacken Sie MySQL, nennen Sie das Verzeichnis in mysql um und ändern Sie den Besitzer auf den Benutzer und die Gruppe mysql:

tar xvfz mysql-5.6.8-rc-linux2.6-x86_64.tar.gz
mv mysql-5.6.8-rc-linux2.6-x86_64 mysql
cd mysql
chown -R mysql .
chgrp -R mysql .

Benutzen Sie

scripts/mysql_install_db --user=mysql

um die nötigen Datenbanken zu erstellen (wie z.B. die mysql Datenbank):

Ändern Sie einige Benutzerrechte:

chown -R root .
chown -R mysql data

MySQL benutzt die my.cnf Datei in /usr/local/mysql, wir müssen uns also keine selbst erstellen. Wollen Sie MySQL Einstellugnen editieren, können Sie dies in dieser Datei tun.

Das heruntergeladene MySQL Paket bringt das Initskript mysql.server mit, welches Sie folgendermaßen nach /etc/init.d kopieren:

cp support-files/mysql.server /etc/init.d/mysql.server

Es ist bereits ausführbar, Sie müssen also keine Zugriffsrechte editieren. Sie können MySQL 5.6 nun wie folgt starten:

/etc/init.d/mysql.server start

Um MySQL automatisch beim Systemstart mitstarten zu lassen, benutzen Sie den folgenden Befehl:

update-rc.d mysql.server defaults

Die MySQL Befehle (wie mysql, mysql_secure_installation, etc.) befinden sich im /usr/local/mysql/bin Verzeichnis, welches nicht im PATH ist, was bedeutet, dass Sie all diese Befehle mit dem vollständigen oder relativen Pfad aufrufen müssten. Um dies zu verhindern erstellen Sie einen Symlink:

ln -s /usr/local/mysql/bin/* /usr/local/bin/

Nun sollten Sie ein MySQL root Passwort setzen:

mysql_secure_installation

root@server1:/usr/local/mysql# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we’ll need the current
password for the root user.  If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): <-- ENTER
OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] <-- ENTER
New password: <-- IhrMySQLrootPasswort
Re-enter new password: <-- IhrMySQLrootPasswort
Password updated successfully!
Reloading privilege tables..
… Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] <-- ENTER
… Success!

Normally, root should only be allowed to connect from ’localhost’.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] <-- ENTER
… Success!

By default, MySQL comes with a database named ’test’ that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] <-- ENTER
- Dropping test database…
… Success!
- Removing privileges on test database…
… Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] <-- ENTER
… Success!

All done!  If you’ve completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

Cleaning up…
root@server1:/usr/local/mysql#

4 Das memcached Plugin aktivieren

MySQL 5.6 liefert nun ein NoSQL interface via memcached (siehe What’s New in MySQL 5.6; diese Seite erklärt, wie Sie davon Gebrauch machen können: http://schlueters.de/blog/archives/152-Not-only-SQL-memcache-and-MySQL-5.6.html). Um dieses Feature zu benutzen, müssen Sie das memcached Plugin aktivieren - dieses wird automatisch einen memcached Daemon auf Port 11211 starten, was bedeutet, dass Sie memcached nicht noch einmal installieren müssen, da es im MySQL Paket enthalten ist.

Melden Sie sich zuerst in MySQL an…

mysql -u root -p

… um herauszufinden welche Version und welche Plugins Sie installiert haben:

mysql> select version();

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.8-rc  |
+-----------+
1 row in set (0.00 sec)

mysql>

mysql> show plugins;

Ist daemon_memcached nicht aufgelistet, bedeutet dies, dass Sie das memcached Plugin aktivieren müssen:

mysql> show plugins;

+----------------------------+----------+--------------------+---------+---------+
| Name                       | Status   | Type               | Library | License |
+----------------------------+----------+--------------------+---------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| mysql_old_password         | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_INSERTED         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL    | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
+----------------------------+----------+--------------------+---------+---------+
43 rows in set (0.00 sec)

mysql>

Stellen Sie sicher, dass Sie eine test Datenbank haben:

mysql> SHOW DATABASES;

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

mysql>

Ist keine test Datenbank vorhanden, erstellen Sie diese wie folgt:

mysql> CREATE DATABASE test;

Verlassen Sie die MySQL Shell:

mysql> quit;

Stellen Sie sicher, dass Sie immernoch im /usr/local/mysql Verzeichnis sind und benutzen dann:

mysql -u root -p < share/innodb_memcached_config.sql

Melden Sie sich dann wieder in MySQL an…

mysql -u root -p

… und erlauben das memcached Plugin folgendermaßen:

mysql> INSTALL PLUGIN daemon_memcached SONAME ‘libmemcached.so’;

Verifizieren Sie die Aktivierung:

mysql> show plugins;

Nun sollte unter anderem daemon_memcached aufgelistet sein:

mysql> show plugins;

+----------------------------+----------+--------------------+-----------------+---------+
| Name                       | Status   | Type               | Library         | License |
+----------------------------+----------+--------------------+-----------------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL            | GPL     |
| mysql_old_password         | ACTIVE   | AUTHENTICATION     | NULL            | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL            | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_FT_INSERTED         | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL            | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |
| daemon_memcached           | ACTIVE   | DAEMON             | libmemcached.so | GPL     |
+----------------------------+----------+--------------------+-----------------+---------+
44 rows in set (0.00 sec)

mysql>

Verlassen Sie wieder die MySQL Shell:

mysql> quit;

Benutzen Sie dann:

netstat -tap

Sie sollten nun sehen können, dass MySQLs memcached Daemon auf Port 11211 läuft:

root@server1:~# netstat -tap

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 *:ssh                   *:*                     LISTEN      641/sshd
tcp        0      0 *:11211                 *:*                     LISTEN      1665/mysqld
tcp        0      0 server1.example.com:ssh 192.168.0.10:51889      ESTABLISHED 1758/1
tcp        0      0 server1.example.com:ssh 192.168.0.10:51771      ESTABLISHED 961/0
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      641/sshd
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      1665/mysqld
tcp6       0      0 [::]:11211              [::]:*                  LISTEN      1665/mysqld
root@server1:~#

5 Links

vgwort />

 

 

Kommentar

Du musst eingeloggt um einen Kommentar zu hinterlassen.