1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Massive Probleme bei der Nutzung von Leopard als Webdev-Plattform

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von ulf, 22.02.08.

  1. ulf

    ulf Alkmene

    Dabei seit:
    18.07.07
    Beiträge:
    32
    Massive Probleme bei der Nutzung von Leopard als Webdev-Plattform [gelöst]

    Hi zusammen,

    ich hab mich ja ehrlich gefreut, als ich gesehen hab, dass der Apache2 sowie Ruby on Rails bereits unter Leopard vorinstalliert sind, selbst PHP5 befindet sich ja bereits im Lieferumfang. Kurz ein gem update gemacht um die aktuellen Versionen zu erhalten und los geht's, dachte ich wenigstens...

    Für die von mir geplanten Projekte brauche ich unbedingt MySQL. Ich habe mir das aktuelle Tiger-Package von den entsprechenden Seiten des Projekts gezogen und es installiert. Bis auf das PrefPane soll ja angeblich alles nach dem Setzen eines Symlinks auf die MySQL-Socket-Datei funktionieren.

    Aber Fehlanzeige: es geht damit los, dass ich mich an der MySQL-Datenbank nicht anmelden kann. Es scheint ein root-Kennwort zu existieren (direkt nach der Installation ^^), das ich aber nicht kenne. Wenn ich mit den bekannten Methoden versuche, das MySQL-Passwort zurückzusetzen (--skip-grant-tables) und die entsprechenden Updateanweisungen auf der MySQL-Shell ausführe, meldet mir MySQL, dass offenbar gar kein Root-Benutzer existiert (0 rows affected). Ich habe MySQL mittlerweile rund 10 Mal installiert und mit immer wieder anderen Methoden versucht, das root-Kennwort zurückzusetzen, alles ohne Erfolg. In meiner Not habe ich die entsprechenden Tabellen aus einer frisch installierten Debian-VM rauskopiert und auf den Mac kopiert. Funktioniert zwar, aber kann ja nicht im Sinne des Erfinders sein.

    Das nächste Problem ist meine RoR-Umgebung: egal, welche gems ich installieren möchte, alle Versuche brechen ab. "Witzigerweise" ist es auf meiner Debian-VM genau so. Wenn ich also bspw. das gem für sqlite installieren möchte (gem install sqlite), werde ich mit folgender Meldung "belohnt":

    Code:
    Building native extensions.  This could take a while...
    ERROR:  Error installing sqlite:
    	ERROR: Failed to build gem native extension.
    
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb install sqlite
    checking for main() in -lsqlite... no
    checking for sqlite.h... no
    *** extconf.rb failed ***
    Could not create Makefile due to some reason, probably lack of
    necessary libraries and/or headers.  Check the mkmf.log file for more
    details.  You may need configuration options.
    
    Provided configuration options:
    	--with-opt-dir
    	--without-opt-dir
    	--with-opt-include
    	--without-opt-include=${opt-dir}/include
    	--with-opt-lib
    	--without-opt-lib=${opt-dir}/lib
    	--with-make-prog
    	--without-make-prog
    	--srcdir=.
    	--curdir
    	--ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
    	--with-sqlite-dir
    	--without-sqlite-dir
    	--with-sqlite-include
    	--without-sqlite-include=${sqlite-dir}/include
    	--with-sqlite-lib
    	--without-sqlite-lib=${sqlite-dir}/lib
    	--with-sqlitelib
    	--without-sqlitelib
    
    
    Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/sqlite-2.0.1 for inspection.
    Results logged to /Library/Ruby/Gems/1.8/gems/sqlite-2.0.1/ext/gem_make.out
    
    Ich weiß wirklich nicht mehr weiter. Wenn ihr weitere Informationen wie Bildschirmausgaben, Inhalte von Log-Dateien oder ähnliches braucht, sollt ihr haben, aber bitte bitte bitte helft mir.


    Vielen Dank schon mal, Grüße
    Ulf
     
    #1 ulf, 22.02.08
    Zuletzt bearbeitet: 26.02.08
  2. ulf

    ulf Alkmene

    Dabei seit:
    18.07.07
    Beiträge:
    32
    Gibt es denn hier gar keine Profis? Auf MacUser.de hab ich wenigstens ein paar Antworten auf die gleiche Frage bekommen. Meine Fragen werden hier irgendwie nie beantwortet. Woran liegts? Komm ich unfreundlich rüber oder weiß einfach niemand hier was? Egal, ich habe beide Probleme mittlerweile selbst lösen können:

    1. Ich habe MySQL mittlerweile auf verschiedenen Wegen auf verschiedenen Macs aufgesetzt. Die Installation der aktuellen Version von dev.mysql.com läuft zwar sowohl auf meinem Leopard- als auch auf meinem Tiger-System durch, einloggen kann ich mich aber auf beiden Systemen nicht. Ursache für dieses Problem ist einfach: es gibt (!) keinen Root-Benutzer. Der muss tatsächlich per Hand angelegt werden, was natürlich nur über Umwege möglich ist. Am einfachsten ist es, die User-Tabellen aus einer Installation von einem anderen System zu importieren. Ich werde wohl heute mal einen Bug an das Entwicklerteam melden.

    2. Dass ich gems nicht kompilieren kann liegt einfach daran, dass unter Leopard der gcc standardmäßig als Universal Binary zu kompilieren versucht. Wenn ich vor dem Kompiliervorgang dem Compiler mitteile, welche Architektur er zu verwenden hat (und das MySQL-Verzeichnis als Parameter mit übergebe), läuft alles glatt:

    Code:
    $ sudo -s
    $ ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-dir=/usr/local/mysql
    Vielleicht konnte ich so wenigstens einigen Google-Suchenden weiterhelfen.
     
  3. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Wie hast du MySQL aufgesetzt? Soweit ich mich noch erinnern kann muss man nach der Installation das Scritpt mysql_install_db ausführen. Da wird dann das root Passwort festgelegt bzw. am ende gezeigt wie das festgelegt. wird.
     
  4. ulf

    ulf Alkmene

    Dabei seit:
    18.07.07
    Beiträge:
    32
    Ich habe mir das Binary-DMG von dev.mysql.com heruntergeladen und installiert. Eine Ausführung dieses Scripts war leider auch nicht möglich. Ich habe den MySQL-Server mit
    Code:
    ./bin/mysqld --skip-grant &
    gestartet, der Server startet dann auch brav und macht an der bash folgende Ausgabe:

    Code:
    localhost:mysql ulf$ 080224 14:30:52 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql-5.0.51a-osx10.4-i686/data/ is case insensitive
    080224 14:30:52  InnoDB: Started; log sequence number 0 43655
    080224 14:30:52 [Note] ./bin/mysqld: ready for connections.
    Version: '5.0.51a'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)
    
    Danach kann ich mich bspw. via phpMyAdmin auch anmelden und die Datenbanken einsehen. In der User-Tabelle steht kein Eintrag. Ein Aufruf von
    Code:
    ./scripts/mysql_install_db
    erzeugt folgende Fehlermeldung:

    Code:
    Installing MySQL system tables...
    080224 14:27:42 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql-5.0.51a-osx10.4-i686/data/ is case insensitive
    ERROR: 1062  Duplicate entry 'localhost-' for key 1
    080224 14:27:42 [ERROR] Aborting
    
    080224 14:27:42 [Note] ./bin/mysqld: Shutdown complete
    
    Installation of system tables failed!
    
    Examine the logs in ./data for more information.
    You can try to start the mysqld daemon with:
    ./bin/mysqld --skip-grant &
    and use the command line tool
    ./bin/mysql to connect to the mysql
    database and look at the grant tables:
    
    shell> ./bin/mysql -u root mysql
    mysql> show tables
    
    Try 'mysqld --help' if you have problems with paths. Using --log
    gives you a log in ./data that may be helpful.
    
    The latest information about MySQL is available on the web at
    http://www.mysql.com
    Please consult the MySQL manual section: 'Problems running mysql_install_db',
    and the manual section that describes problems on your OS.
    Another information source is the MySQL email archive.
    Please check all of the above before mailing us!
    And if you do mail us, you MUST use the ./bin/mysqlbug script!
    
    Das angesprochene Logfile finde ich nicht, eine Anmeldung nach einem Neustart ohne --skip-grant-tables ist weiterhin nicht möglich, obwohl ich im --skip-grant-tables-Modus über phpMyAdmin einen root-Benutzer mit Zugriff auf localhost und Passwort eingerichtet habe. Diesen natürlich per Hand in der Datenbanktabelle user, eine Einrichtung über den Punkte Rechte schlägt fehl, da die grant tables nicht mitgeladen werden.

    Bin für jeden Tipp dankbar. Die Lösung mit dem Import einer leeren Datenbank von einer anderen Maschine find ich doch eher unschön.
     
  5. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Welche Fehlermeldung kommt bei dem ersten Script und im welchen Benutzerkontext installierst du das alles? Ich kann in das data Verzeichnis nur als Root reinschauen. Hierzu einfach ein "sudo -s" und danach dein Passwort eintippen. Dann hast du eine root shell.
     
  6. ulf

    ulf Alkmene

    Dabei seit:
    18.07.07
    Beiträge:
    32
    Welches erste Script?

    Installiert habe ich das .pkg als normaler Benutzer, werde aber nach dem Administrator-Kennwort gefragt, die vom Script angelegten Ordner haben alle root als Besitzer.

    Ich habe die Rechte des data-Verzeichnisses angepasst, damit auch mein normaler Benutzer Zugriff darauf hat, sonst funktioniert nämlich auch das PrefPane nicht. An mangelnden Zugriffsrechten dürfte es also eher nicht liegen.
     
  7. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Und im data Verzeichnis sind keine logs? Das ist komisch. Ich habe selber eine 5.0.27 unter 10.4 laufen und keine Probleme. Die Abbruchmeldung bzgl. eines doppelten Eintrags steht oben. Deinstalliere noch einmal das Paket und lösche das mysql Verzeichnis von Hand.
     
  8. ulf

    ulf Alkmene

    Dabei seit:
    18.07.07
    Beiträge:
    32
    Im data-Verzeichnis hab ich folgende Dateien:

    ib_logfile0 (5 MB binär)
    ib_logfile1 (5 MB binär)
    ibdata1 (10 MB binär)
    localhost.err (4 KB ASCII)
    localhost.pid (4 KB Prozessdatei)
     
  9. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Was steht in der localhost.err drin? Normalerweise sollte da das Verzeichnis mysql noch einmal drin sein. Diese Datenbank fehlt. Deinstalliere mal das Paket, lösche dann alle Reste noch einmal von Hand und dann noch einmal installieren und auch das install_db script im sudo Kontext ausführen. Normalerweise sollte dies aber durch das pkg geschehen. Schau einmal nach der Installation ob im data Verzeichnis die Grand Tables liegen.
    Die PrefPane startet bei mir den sql Server aber beendet den nicht. Das mache ich immer über das Terminal. Hier gibt es noch eine kleine Anleitung hierzu: http://www.entropy.ch/software/macosx/mysql/#install
     
  10. ulf

    ulf Alkmene

    Dabei seit:
    18.07.07
    Beiträge:
    32
    So, wie befohlen hab ich alles gelöscht und neu installiert ;)

    In der localhost.err steht (nach dem Erststart über das PrefPane direkt nach der Installation und dem Ausführen von mysql_install_db) folgender Inhalt:

    Code:
    080224 22:26:12  mysqld started
    080224 22:26:12 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive
    InnoDB: The first specified data file ./ibdata1 did not exist:
    InnoDB: a new database to be created!
    080224 22:26:12  InnoDB: Setting file ./ibdata1 size to 10 MB
    InnoDB: Database physically writes the file full: wait...
    080224 22:26:12  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
    InnoDB: Setting log file ./ib_logfile0 size to 5 MB
    InnoDB: Database physically writes the file full: wait...
    080224 22:26:12  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
    InnoDB: Setting log file ./ib_logfile1 size to 5 MB
    InnoDB: Database physically writes the file full: wait...
    InnoDB: Doublewrite buffer not found: creating new
    InnoDB: Doublewrite buffer created
    InnoDB: Creating foreign key constraint system tables
    InnoDB: Foreign key constraint system tables created
    080224 22:26:12  InnoDB: Started; log sequence number 0 0
    080224 22:26:12 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
    Version: '5.0.51a'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)
    080224 22:26:22 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown
    
    080224 22:26:22  InnoDB: Starting shutdown...
    080224 22:26:23  InnoDB: Shutdown completed; log sequence number 0 43655
    080224 22:26:23 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
    
    080224 22:26:23  mysqld ended
    
    080224 22:26:31  mysqld started
    080224 22:26:31 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive
    080224 22:26:31  InnoDB: Started; log sequence number 0 43655
    080224 22:26:31 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
    Version: '5.0.51a'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)
    
    Das install_db-Script (als root ausgeführt) gibt wieder folgendes aus:

    Code:
    Installing MySQL system tables...
    080224 22:33:09 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql-5.0.51a-osx10.4-i686/data/ is case insensitive
    ERROR: 1062  Duplicate entry 'localhost-' for key 1
    080224 22:33:09 [ERROR] Aborting
    
    080224 22:33:09 [Note] ./bin/mysqld: Shutdown complete
    
    Installation of system tables failed!
    
    Examine the logs in ./data for more information.
    You can try to start the mysqld daemon with:
    ./bin/mysqld --skip-grant &
    and use the command line tool
    ./bin/mysql to connect to the mysql
    database and look at the grant tables:
    
    shell> ./bin/mysql -u root mysql
    mysql> show tables
    
    Try 'mysqld --help' if you have problems with paths. Using --log
    gives you a log in ./data that may be helpful.
    
    The latest information about MySQL is available on the web at
    http://www.mysql.com
    Please consult the MySQL manual section: 'Problems running mysql_install_db',
    and the manual section that describes problems on your OS.
    Another information source is the MySQL email archive.
    Please check all of the above before mailing us!
    And if you do mail us, you MUST use the ./bin/mysqlbug script!
    
    Im data-Verzeichnis habe ich noch die Verzeichnisse "mysql" und "test", die ja den Standarddatenbanken nach einer MySQL-Installation entsprechen. Die Datei user.MYD, die im Verzeichnis mysql liegt ist aber leer, Größe 0 Byte.
     
  11. ulf

    ulf Alkmene

    Dabei seit:
    18.07.07
    Beiträge:
    32
    Ich hab eben noch mal einen Blick in die ReadMe aus dem DMG geworfen. Folgende Sätze sind ja ganz interessant:

    Das Verzeichnis (mysql-5.0.51a-osx10.4-i686) und der Symlink (mysql) in /usr/local existieren ja auch nach der Installation. Was aber außerdem noch existiert ist ein Verzeichnis namens MySQLCOM. In diesem befinden sich die Dateien MySQLCOM und StartupParameters.plist. Inhalt von MySQLCOM wie folgt:

    Code:
    #!/bin/sh
    #
    # /Library/StartupItems/MySQLCOM/MySQLCOM
    #
    # A script to automatically start up MySQL on system bootup
    # for Mac OS X. This is actually just a wrapper script around
    # the standard mysql.server init script, which is included in
    # the binary distribution.
    #
    # (c) 2003 MySQL AB
    # Written by Lenz Grimmer <lenz@mysql.com>
    #
    
    # Suppress the annoying "$1: unbound variable" error when no option
    # was given
    if [ -z $1 ] ; then
    	echo "Usage: $0 [start|stop|restart] "
    	exit 1
    fi
    
    # Source the common setup functions for startup scripts
    test -r /etc/rc.common || exit 1
    . /etc/rc.common
    
    # The path to the mysql.server init script. The official MySQL
    # Mac OS X packages are being installed into /usr/local/mysql.
    SCRIPT="/usr/local/mysql/support-files/mysql.server"
    
    StartService ()
    {
    	if [ "${MYSQLCOM:=-NO-}" = "-YES-" ] ; then
    		ConsoleMessage "Starting MySQL database server"
    		$SCRIPT start > /dev/null 2>&1
    	fi
    }
    
    StopService ()
    {
    	ConsoleMessage "Stopping MySQL database server"
    	$SCRIPT stop > /dev/null 2>&1
    }
    
    RestartService ()
    {
    	ConsoleMessage "Restarting MySQL database server"
    	$SCRIPT restart > /dev/null 2>&1
    }
    
    if test -x $SCRIPT ; then
    	RunService "$1"
    else
    	ConsoleMessage "Could not find MySQL startup script!"
    fi
    
    Inhalt von StartupParameters.plist:

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    	<key>Description</key>
    	<string>MySQL 5.0.51a-community</string>
    	<key>OrderPreference</key>
    	<string>None</string>
    	<key>Provides</key>
    	<array>
    		<string>MySQL</string>
    	</array>
    	<key>Uses</key>
    	<array>
    		<string>Network</string>
    		<string>Resolver</string>
    	</array>
    	</dict>
    </plist>
    
    Merkwürdig finde ich auch, dass das einzige Verzeichnis, dessen Besitzer "_mysql" ist, das data-Verzeichnis ist. Der Rest gehört "root". Ist das immer so?

    Ansonsten bin ich vollständig dem MySQL-Teil dieser Anleitung gefolgt:

    http://www.apfeltalk.de/forum/apache-php-mysql-t116370.html

    Vielleicht entdeckst du ja schon dort einen Fehler.
     
  12. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Die user.MYD kann glaube ich leer sein. Hast du danach mal versucht das root passwort zu setzen? Ich glaube in der neuen Version wird das install skript direkt mit ausgeführt. Die anderen Tabellen im mysql Verzeichnis sind aber gefüllt?
    Versuche einmal das root Passwort für die Datenbank zu setzen. Root sollte angelegt worden sein mit Zugriff von localhost aus.
    Ich sichere mal meine DB und führe mal ein Update durch.
     
  13. ulf

    ulf Alkmene

    Dabei seit:
    18.07.07
    Beiträge:
    32
    Aber sollten in der user.MYD nicht die Benutzer stehen? Mir war irgendwie so *lol*

    Ja, ich habe versucht direkt nach der Installation das Root-Passwort zu setzen, da liegt ja mein eigentliches Problem ;)

    Nenn mir doch vielleicht mal deine Methode, mit der du ein root-Passwort setzt, vielleicht mache ich dabei ja schon was falsch, wobei ich die Anleitung von mysql.com verwendet hab...
     
  14. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Gib mir 20 min. Lade gerade das Paket mal runter (5.0.51a) und teste das ganze dann unter 10.4.11. Sichere gerade meine DBs.
     
  15. ulf

    ulf Alkmene

    Dabei seit:
    18.07.07
    Beiträge:
    32
    Cool, danke dir. Auf meinem Kugel-iMac mit Tiger hatte ich nämlich das gleiche Problem, als ich das mal gegentesten wollte.
     
  16. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    So, bin der Sache näher gekommen. Bei mir klappt das ohne Probleme. Teste eben noch was aus.
    Edit:
    Bei mir klappt das. Folgende Vorgehensweise:
    Zuerst das mysql Verzeichnis gelöscht (sym Link und das Verzeichnis)
    Danach das Paket installiert.
    Das mysql_install_db habe ich NICHT ausgeführt, da das Verzeichnis data/mysql gefüllt war.
    Den Server hab ich das erste mal mit ./mysql.server start gestartet (im Verzeichnis support-files)
    Danach das Passwort ändern (direkt aus dem mysql Verzeichnis):
    ./bin/mysqladmin -u root password
    Den Rest kann man dann mit den gui tools machen.
     
    #16 drlecter, 25.02.08
    Zuletzt bearbeitet: 25.02.08
  17. ulf

    ulf Alkmene

    Dabei seit:
    18.07.07
    Beiträge:
    32
    Code:
    localhost:~ ulf$ sudo /usr/local/mysql/support-files/mysql.server start
    Password:
    Starting MySQL
     SUCCESS! 
    
    Code:
    bash-3.2# ./bin/mysqladmin -u root password
    ./bin/mysqladmin: connect to server at 'localhost' failed
    error: 'Access denied for user 'root'@'localhost' (using password: NO)'
    
    Gehört vor das "password" nicht ein -p?

    Wenn ja, hier die entsprechende Fehlermeldung:

    Code:
    bash-3.2# ./bin/mysqladmin -u root -p password
    Enter password: 
    ./bin/mysqladmin: connect to server at 'localhost' failed
    error: 'Access denied for user 'root'@'localhost' (using password: YES)'
    
    Ich glaub so langsam an Flüche :D
     
  18. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Mein Fehler, du musst hinter password das neue Passwort eingeben.
     
  19. ulf

    ulf Alkmene

    Dabei seit:
    18.07.07
    Beiträge:
    32
    Code:
    bash-3.2# ./bin/mysqladmin -u root password geheim
    ./bin/mysqladmin: connect to server at 'localhost' failed
    error: 'Access denied for user 'root'@'localhost' (using password: NO)'
    
    Auszug ausm help von mysqladmin:

    Also hast du recht, aber das Programm ist anderer Meinung?!
     
  20. drlecter

    drlecter Wöbers Rambur

    Dabei seit:
    04.11.06
    Beiträge:
    6.442
    Versuche es mal mit einem leeren Passwort auf die DB zuzugreifen. So habe ich das bei mir gemacht (auch gemäß Anleitung)
    Code:
    ./bin/mysqladmin -u root password geheim
     

Diese Seite empfehlen