Ich habe gerade mysql5 selbst installiert, und da dies immer ein Problem ist, habe ich den Prozess notiert, dem ich gefolgt bin. Dies wurde auf Leopard durchgeführt, aber ich kann mir vorstellen, dass der Prozess auf Snow Leopard und Lion derselbe ist. Es beantwortet nicht alle ursprünglichen Fragen, aber es ist zumindest so etwas wie ein Leitfaden.
Mysql installieren
Installieren Sie zuerst den mysql5-Server mit:
sudo port install mysql5-server
Einfach mysql5
installieren installiert den Server nicht.
Achten Sie auf die Konsolenausgabe, sie enthält Anweisungen zum Einrichten von Macports. Vielleicht möchten Sie es kopieren und in eine Textdatei einfügen. Darauf basiert das Folgende.
Statt mysql5-server
, könnten Sie einen Port wie mysql55-server
verwenden , mysql56-server
, mariadb-server
oder percona-server
um eine neuere Version von mysql oder einen Fork zu erhalten. Achten Sie in diesem Fall auf die Konsolenausgabe, da die folgenden Anweisungen auf mysql5-server
basieren und müssen angepasst werden, um die richtigen ausführbaren Dateien und Pfade zu verwenden.
Wenn es sich um eine Neuinstallation handelt, richten Sie die Datenbank ein:
sudo -u _mysql mysql_install_db5
Das gibt einige allgemeine Anweisungen aus, die meiner Meinung nach für Macports nicht ganz geeignet sind. Meiner Meinung nach ist der beste Weg, mysql5 als Daemon zu laden, die Verwendung der Methode von macport:
sudo port load mysql5-server
Dadurch wird mysql5 nicht nur gestartet, sondern auch permanent geladen - es wird beim Booten ausgeführt. Um dies später zu stoppen:
sudo port unload mysql5-server
Wenn Sie es nicht als Daemon ausführen möchten, können Sie es über die Befehlszeile ausführen:
sudo /opt/local/lib/mysql5/bin/mysqld_safe
Überprüfen Sie, ob es ausgeführt wird, indem Sie sich an der Befehlszeile anmelden:
mysql5 -u root -p
Standardmäßig ist das Passwort leer, also drücken Sie einfach die Eingabetaste, wenn Sie dazu aufgefordert werden. So legen Sie ein Root-Passwort fest:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'
Anweisungen zum Einrichten sowohl von Macports PHP als auch der nativen PHP-Installation folgen.
Macports PHP einrichten
Angenommen, Sie haben bereits Macports PHP installiert und ausgeführt. Sie müssen php5-mysql
installieren (oder etwas wie php54-mysql
je nachdem, welche PHP-Version Sie verwenden):
sudo port install php5-mysql
Dadurch werden die mysql-, mysqli- und pdo-Treiber installiert.
Schauen Sie nun in Ihren /opt/local/etc/php5
Verzeichnis, wenn Sie noch keine php.ini
haben Konfigurationsdatei kopieren Sie entweder php.ini-development
oder php.ini-production
zu php.ini
. Bearbeiten Sie nun php.ini
und suchen Sie nach den entsprechenden hinzuzufügenden Zeilen:
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock
und:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
und:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Wenn Sie diese nicht konfigurieren möchten, können Sie sie explizit in Ihrem PHP-Skript festlegen, wenn Sie sich verbinden.
Wenn Sie Verbindungsprobleme haben, sollten Sie sich die anderen Einstellungen in der Nähe ansehen und mit php.ini-development
vergleichen und php.ini-production
um zu sehen, was geändert wurde.
Verwenden Sie dann das folgende Skript oder etwas Ähnliches, um zu testen, ob Sie eine Verbindung mit PHP herstellen können.
System-PHP einrichten
PHP von OS X wird mit eingebauter mysql- und mysqli-Unterstützung geliefert (aber nicht pdo), sodass Sie lediglich den Macport-Unix-Socket festlegen müssen. Der Standardspeicherort ist /opt/local/var/run/mysql5/mysqld.sock
. Finden Sie die richtige Stelle in /etc/php.ini
(Wenn Sie es noch nicht haben, kopieren Sie es von /etc/php.ini.default
) hinzufügen:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
und:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Wenn Sie diese nicht konfigurieren möchten, können Sie sie explizit in Ihrem PHP-Skript festlegen, wenn Sie sich verbinden.
Testskript
Hier ist ein PHP-Skript, um zu überprüfen, ob es eine Verbindung herstellen kann. Offensichtlich verwenden Sie normalerweise nicht das Root-Konto in Ihren PHP-Skripten, daher möchten Sie vielleicht zuerst ein anderes MySQL-Konto erstellen, um die Verbindung zu testen. Die PDO-Verbindung funktioniert nicht für natives PHP, da es keine PDO-Treiber gibt.
<?php
$username = 'root';
$password = 'correct horse battery staple';
/* Try mysql: */
$connection = mysql_connect('localhost', $username, $password);
if ($connection === FALSE) {
echo "Error connecting using mysql.\n\n";
echo "Error ".mysql_errno().": ".mysql_error()."\n\n";
}
else {
echo "Connected using mysql.\n\n";
mysql_close($connection);
}
/* Try mysqli: */
$connection = mysqli_connect('localhost', $username, $password);
if ($connection->connect_error) {
echo "Error connecting using mysqli:\n\n";
echo "Error ".$connection->connect_errno.": ".$connection->connect_error."\n\n";
}
else {
echo "Connected using mysqli.\n\n";
$connection->close();
}
/* Try pdo:
* Won't work for the version of php supplied with OS X. */
try {
$pdo = new PDO('mysql:host=localhost', $username, $password);
echo "Connected using PDO.\n\n";
$pdo = null;
}
catch(PDOException $e) {
echo "Error connecting using PDO:\n\n";
echo "Error ".$e->getCode().": ".$e->getMessage()."\n\n";
}