MySQL 5.1 installieren - kläglich gescheitert

l0c4lh05t

Erfahrenes Mitglied
Hi,
also ich habe versucht MySQL 5.1 zu installieren. YaST hat mir Dank den veralteten Installationsquellen nur ebenso veraltete MySQL Versionen angezeigt. Also habe ich alles was ich so an MySQL auf dem Rechner gefunden habe gelöscht - zunächst mit YaST und dann noch mal "von Hand". Dann habe ich mir eine aktuelle Version heruntergeladen mit
Code:
wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.18-beta.tar.gz
, es entpackt, dann mit
Code:
./configure --prefix=/usr/local/mysql --localstatedir=/var/mysql/data && make && make install
danach
Code:
mkdir /var/mysql
mkdir /var/mysql/data
chmod 777 /var/mysql/data
lalala
Code:
scripts/mysql_install_db
cp support-files/mysql.server /usr/sbin/mysql
chmod 755 /usr/sbin/mysql

Naja, schön und gut (hoffentlich), aber leider kam nur folgendes dabei rum:
Code:
tukatuka:~ # mysql status
MySQL is not running                                                 failed
tukatuka:~ # mysql start
Starting MySQL/usr/sbin/mysql: line 159: kill: (4908) - No such process
                                                                     failed
Verstehe ich absolut nicht, es lief doch noch gar kein MySQL Server, wieso will das Skript dann was killen...


Bitte um Hilfe :(
Danke :0
 
Warum es dann was killen ist schon etwas fragwürdig, aber Du solltest folgendes beachten: MySQL kann/soll nicht als User "root" gestartet werden, sondern von init oder mit "su" bzw "sudo" von einem unpriviligierten User. In den meisten Fällen ist das der User "mysql", der sein $Home entweder im Data-Verzeichnis (DB-Verzeichnis) hat oder gar kein Home-Verzeichnis hat, weil er sich an keiner Shell anzumelden braucht.

Aus diesem Grund kannst Du nun als User root folgendes Versuchen, sofern der User mysql existiert:
Code:
user$prompt~>su mysql && mysqld_safe &
und danach mit dem Befehl
Code:
mysql -u root -p
testen, ob Du auf die Datenbank kommst.

Edit:
Deine Kopie des Server-Scripts nach /usr/sbin/mysql ist übrigens fatal, da die Client-Anwendung mysql heisst und auch so installiert wird. Kann schon sein, dass es deshalb nicht funktioniert. Solltest Du das src-Verzeichnis vom MySQL noch haben, überinstalliere es am besten nochmal und kopiere das Start-Script "mysql.server" am besten nach /etc/init.d/mysqld - dort gehört es hin ;) und starte den server dann mit "su mysql && /etc/init.d/mysqld start"

LG
Andy
 
Zuletzt bearbeitet:
Super! Das hat funktioniert, danke für den/die Tipps!!
Code:
mysql    16563  0.0  0.0   2964  1264 ?        S    21:16   0:00 /bin/sh /usr/bin/mysqld_safe
mysql    16639  0.0  0.2  18148  4416 ?        Sl   21:17   0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql (...)
Dann werde ich dem root gleich noch fix ein Passwort geben...

Leider habe ich noch zwei Fragen:
1) Irgendwie scheint das mit den Runlevels (und YaST im Großen und Ganzen) nicht richtig zu funktionieren. In dem Runlevel-Editor steht nämlich nur, als einziger MySQL-Dienst "mysqld" und unter Aktiviert steht "Nein"! Aber wenn ich mit su mysql und dann ps x bzw. mit mysqld_safe status nachgucke scheint er aktiv zu sein. Irgendwie habe ich auch gar keine Ahnung, wie ich den Dienst bei Systemstart unter mysql, dem User starten lassen kann. Wenn ich dem Dienst jetzt einfach die Runlevels 2,3 und 5 zuweise startet er das doch wieder als root, oder nicht?
2) [Passt vielleicht nicht ganz zum Thema] Mir ist aufgefallen, zufällig, dass der Apache Webserver auch von root aus gestartet wurde/läuft:
Code:
tukatuka:~ # ps aux | grep apache
root      4012  0.0  0.0   3512  1624 ?        Ss   May21   0:00 /etc/apache2/bin/httpd -k start
daemon    4013  0.0  0.0   3648  1612 ?        S    May21   0:00 /etc/apache2/bin/httpd -k start
daemon    4014  0.0  0.0   3648  1608 ?        S    May21   0:00 /etc/apache2/bin/httpd -k start
daemon    4015  0.0  0.0   3648  1628 ?        S    May21   0:00 /etc/apache2/bin/httpd -k start
daemon    4016  0.0  0.0   3648  1620 ?        S    May21   0:00 /etc/apache2/bin/httpd -k start
daemon    4022  0.0  0.0   3648  1608 ?        S    May21   0:00 /etc/apache2/bin/httpd -k start
daemon    5586  0.0  0.0   3648  1604 ?        S    May21   0:00 /etc/apache2/bin/httpd -k start
daemon    5736  0.0  0.0   3648  1604 ?        S    May21   0:00 /etc/apache2/bin/httpd -k start
. Wenigstens ist der Dienst "apache2" direkt zum Systemstart aktiviert, bei YaST...

:confused:
 
Zum Thema Runlevel:

Ein Linux bootet ja grundlegend so:
1.) BIOS
2.) Lilo / Grub (Bootloader) vergleichbar mit dem NTLDR in Windows
3.) Kernel-Image wird geladen
4.) Der Kernel lädt die Anwendung "/sbin/init" in den Speicher
5.) init lädt die init-scripts unter /etc/init.d entsprechend der /etc/inittab, wo die Runlevel und deren Namen festgelegt sind

Da init im Kontext des Kernel läuft und mit root-Rechten im Dateisystem belegt ist, darf init JEDE Anwendung/Dienst und jede Shell starten, die in einem init-Script auftaucht, welches letztendlich ein Shell-Script ist.

Der Unterschied hierbei ist, dass der User root zwar root-Rechte hat und als einziger User die UID/GID (User-ID,GruppenID) "0" hat, aber dennoch ein User ist, der sich am System natürlich anmelden kann/muss. Somit ist es nicht immer Sinnvoll, eine Anwendung/Dienst als root zu starten, wenn dieser gerade an der Konsole (Shell) angemeldet ist. Wenn init das macht, ist das so ok und auch gut so, sofern es sich nicht gerade um einen "Root-Kit" handelt, der Dein System aushebelt und sich der Vorzüge eines Linux mit vollen Rechten bedient :D

Wenn man jetzt also im ps -ax guckt, steht da natürlich root als User drin, aber das sind wie gesagt mehr die Rechte als der User selbst ;)

Was MySQL betrifft:
Die Anwendung "mysql" ist der Client, womit man direkt an der MySQL-Shell arbeiten kann, ähnlich dem von Oracle - der Dienst/Daemon selbst sollte eigentlich "mysqld" heissen *staun*
 
Zurück