MySQL Server Installation auf Debian Lenny

2009-08-07 - kostaki 13 Kommentare »

Heutzutage gehört ein Datenbankserver genauso zu einem Webserver wie die Butter zum Brot. Die wohl meist verbreitete Kombination ist das LAMP System (LAMP Steht für Linux Apache MySQL und PHP). Linux sollte schon laufen und wie man den Apache und PHP installiert habe ich hier beschrieben. Der MySQL Server muss natürlich nicht auf dem gleichen Physischen Server laufen wie der Rest des LAMPs. In diesem kleinen (sehr kleinen) Tutorial beschreibe ich die Installation eines MySQL Servers auf einem frischen Debian Lenny.

$ aptitude install mysql-server

That's it. Der Installer fragt noch nach dem MySQL root Passwort und dann ist der Server auch schon fertig. Bei früheren Debian Versionen wurde das root Passwort leer gelassen und musste nach der Installation gesetzt werden. Hier haben die Debianer nach gelegt. Scheinbar haben viele Leute es dabei belassen, was natürlich ein Sicherheitsproblem ist. Noch schnell testen ob alles funktioniert:

$ mysql -uroot -ppassword

Hier ist noch eine gute Basis Config.

$ nano /etc/mysql/my.cnf
[client]
port				= 3306
socket				= /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket				= /var/run/mysqld/mysqld.sock
nice				= 0

[mysqld]
user				= mysql
pid-file			= /var/run/mysqld/mysqld.pid
socket				= /var/run/mysqld/mysqld.sock
port				= 3306
basedir				= /usr
datadir				= /var/lib/mysql
tmpdir				= /tmp
language			= /usr/share/mysql/english
skip-external-locking
bind-address			= 127.0.0.1
key_buffer			= 512M
max_heap_table_size		= 128M
max_allowed_packet		= 16M
thread_stack			= 128K
thread_cache_size		= 8
max_connections			= 250
table_cache			= 512
query_cache_limit		= 16M
query_cache_size		= 128M

# in diesem log landen alle Querys die als zu Langsam eingestuft wurde.
log_slow_queries		= /var/log/mysql/mysql-slow.log

# stuft alle Querys als zu langsam ein die 3 oder mehr Sekunden brauchen
long_query_time			= 2

log-queries-not-using-indexes

# Barkley DB Support abschalten. (Wird entfernt in 5.1.12)
skip-bdb

# Wer keine InnoDB Tabellen braucht sollte den Support hier abschalten
# Wer sie braucht sollte sich die Optionen dafür näher angucken bevor er das hier entfernt
skip-innodb

[mysqldump]
quick
quote-names
max_allowed_packet		= 16M

[isamchk]
key_buffer			= 16M

!includedir /etc/mysql/conf.d/

Nach dem bearbeiten natürlich noch den den mysql Server neu starten.

$ /etc/init.d/mysql restart

Wenn ihr viel auf der Konsole arbeitet und nicht immer das root Passwort eingeben wollt, könnt ihr euch in eurem home Verzeichnis eine '.my.cnf' anlegen, in der ihr das Passwort vorhalten könnt. Hier ein Beispiel für den root User.

$ nano /root/.my.cnf
[mysql]
user=root
password=rootpassword

[mysqldump]
user=root
password=rootpassword

Wenn man jetzt mysql/mysqldump eintippt ohne Passwort, werden die Daten aus dieser Datei genommen. Damit auch nur ihr Zugriff darauf habt noch die Zugriffsrechte richtig setzen.

$ chown root:root /root/.my.cnf
$ chmod 600 /root/.my.cnf

Ein weiterer Vorteil davon ist das das Passwort nicht per ps ausgelesen werden kann.

  1. 13 Kommentare

  2. andre
    schrieb am 10.11.2009 um 11:19 Uhr

    ne schlaue sache wärs wenn man noch den neustart von mysql mit aufnehmen würde ;)

    /etc/init.d/mysql restart

    aber sonst sehr nice ;)

  3. kostaki
    schrieb am 10.11.2009 um 18:14 Uhr

    Danke für den Tipp. Ist angepasst. :)

  4. Marus
    schrieb am 10.12.2009 um 19:55 Uhr

    Übersehe ich was, oder hat deine Beispielconfig einen Fehler? Die läuft so nämlich nicht bei mir. Werd ich mir bei gelegenheit mal in den Logs ansehen.

  5. kostaki
    schrieb am 10.12.2009 um 20:45 Uhr

    Da brauche ich schon mehr Infos ;)

    Ich kopiere die als Basis eigentlich immer rein und sie funktioniert.

  6. Marus
    schrieb am 13.12.2009 um 00:02 Uhr

    Die hatte ich leider auch nicht. Er gab mir nur ein mysqld . . . failed! beim Start aus und das wars. Hab eben nochmal die Logs durchsucht, doch da steht leider nichts drin.

    //Später
    Ok habe raus gefunden, warum es nicht geht. Es liegt am Server. Obwohl er ein Gig Speicher haben soll, scheint da was nicht zu stimmen. Wenn ich die Zeilen für die LOG Pfade eingebe in der original Config, wie bei dir, gehts auch nicht mehr und er quittiert mir mit der Meldung von zu wenig Hauptspeicher. Auch die Erhöhung der Cache Limits findet er nicht gut. Ok ist ja nur ein Testserver zum spielen und der kommt ja dann eh weg.

  7. kostaki
    schrieb am 13.12.2009 um 10:36 Uhr

    Stimmt. Ich bin mir der Config von einem Normalen Server ausgegangen der so 1-2GB RAM haben muss. Bei nem VServer muss man natürlich mehr aufpassen wie viel Arbeitsspeicher man für den mysqld abstellt.

  8. Marus
    schrieb am 09.02.2010 um 11:58 Uhr

    So mal wieder einen Server eingerichtet und da bin ich auf einen netten Befehl gestoßen, der auch evtl. ganz interesant sein könnte:

    mysql_secure_installation

    Hier werden dann einige Sicherheitsabfragen für MySQL geklärt. Beispielsweise Setzen/Ändern des Root Passworts, Löschen der Test Datenbank und des Anonymus Zugangs und der Zugriff von Root über Remote. Hat wunderbar funktioniert.

  9. kostaki
    schrieb am 09.02.2010 um 17:20 Uhr

    Stimmt schon. Hier wird erklärt was es genau macht: http://dev.mysql.com/doc/refman/5.1/en/mysql-secure-installation.html

  10. Gerhard
    schrieb am 03.03.2012 um 14:58 Uhr

    Hallo,
    auf mysql -uroot -ppassword erhalte ich:
    ERROR 1045 (28000): Access denied for user ‘root’@'localhost’ (using password: YES)
    Ich bin so vorgegangen, wie oben beschrieben.
    Woran kann das liegen?

  11. kostaki
    schrieb am 03.03.2012 um 15:36 Uhr

    Hm die Meldung besagt das das Passwort falsch ist. Mehr kann man davon nicht ableiten.

  12. ivo
    schrieb am 08.01.2013 um 23:19 Uhr

    Hallo,
    hier war ja lange zeit keiner mehr. Hoffe mal das mir jemand noch Hlefen kann und zwar bekomme ich die selbe fehlermeldung wie Gerhard : ERROR 1045 (28000): Access denied for user ‘root’@'localhost’ (using password: YES). Ich bin als root angemeldet.

    Danke im vorraus

  13. gam
    schrieb am 16.01.2013 um 11:37 Uhr

    Möglicherweise wurde das Passwort nicht korrekt eingegeben. Der Befehl lautet:

    mysql -r -p

    Beispiel:

    mysql -rroot -pgeheim

    Allerdings können auch Probleme bei Sonderzeichen im Passwort auftreten. Also Zeichen wie §^{ … sollte man vermeiden. Gängigere wie $ und @ funktionieren normalerweise problemlos.

  14. gam
    schrieb am 16.01.2013 um 11:40 Uhr

    So, und schon waren sie weg, meine Sonderzeichen “” darum nochmal.

    Der Befehl lautet (ohne die Anführungzeichen):

    mysql -r”benutzer” -p”ihr passwort”

Kommentar schreiben

*

*