MySQL Server Installation auf Debian Lenny
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.
13 Kommentare
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
kostaki
schrieb am 10.11.2009 um 18:14 Uhr
Danke für den Tipp. Ist angepasst.
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.
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.
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.
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.
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.
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
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?
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.
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
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.
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”