Ik heb zojuist mysql5 zelf geïnstalleerd en aangezien dit altijd lastig is, heb ik het proces opgemerkt dat ik heb gevolgd. Dit werd gedaan op Leopard, maar ik kan me voorstellen dat het proces hetzelfde is op Snow Leopard en Lion. Het beantwoordt niet alle originele vragen, maar het is in ieder geval een soort gids.
Mysql installeren
Installeer eerst de mysql5-server met:
sudo port install mysql5-server
Gewoon mysql5
installeren installeert de server niet.
Let op de console-uitvoer, deze bevat instructies voor het instellen van macports. Misschien wilt u het kopiëren en in een tekstbestand plakken. Het volgende is erop gebaseerd.
In plaats van mysql5-server
, kunt u een poort gebruiken zoals mysql55-server
, mysql56-server
, mariadb-server
of percona-server
om een recentere versie van mysql of een fork te krijgen. Als je dat doet, let dan op de console-uitvoer, aangezien de volgende instructies zijn gebaseerd op mysql5-server
en moet worden aangepast om de juiste uitvoerbare bestanden en paden te gebruiken.
Als dit een nieuwe installatie is, stelt u de database in:
sudo -u _mysql mysql_install_db5
Dat levert een aantal generieke instructies op, waarvan ik denk dat ze niet helemaal geschikt zijn voor macports. Naar mijn mening is de beste manier om mysql5 als een daemon te laden de methode van macport te gebruiken:
sudo port load mysql5-server
Naast het starten van mysql5, laadt dit het permanent - het wordt uitgevoerd bij het opstarten. Om dit later te stoppen:
sudo port unload mysql5-server
Als u het niet als een daemon wilt uitvoeren, kunt u het op de opdrachtregel uitvoeren:
sudo /opt/local/lib/mysql5/bin/mysqld_safe
Controleer of het actief is door in te loggen op de opdrachtregel:
mysql5 -u root -p
Het wachtwoord is standaard leeg, dus druk gewoon op enter wanneer daarom wordt gevraagd. Om een root-wachtwoord in te stellen:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'
Instructies voor het instellen van zowel macports php als de native php-installatie volgen.
Macports PHP instellen
Ervan uitgaande dat je macports php al hebt geïnstalleerd en actief bent. U moet php5-mysql
. installeren (of zoiets als php54-mysql
afhankelijk van welke versie van php je gebruikt):
sudo port install php5-mysql
Hiermee worden de mysql-, mysqli- en pdo-stuurprogramma's geïnstalleerd.
Kijk nu in uw /opt/local/etc/php5
directory, als je nog geen php.ini
. hebt configuratiebestand kopieer ofwel php.ini-development
of php.ini-production
naar php.ini
. Bewerk nu php.ini
en zoek naar de juiste regels om toe te voegen:
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock
en:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
en:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Als u deze niet wilt configureren, kunt u ze expliciet instellen in uw php-script wanneer u verbinding maakt.
Als je problemen hebt om verbinding te maken, kun je de andere instellingen in de buurt bekijken en vergelijken met php.ini-development
en php.ini-production
om te zien wat er is gewijzigd.
Gebruik dan het onderstaande script, of iets dergelijks om te testen dat je kunt verbinden met php.
Systeem PHP instellen
De php van OS X wordt geleverd met ingebouwde mysql- en mysqli-ondersteuning (maar niet pdo), dus alles wat u hoeft te doen is de macport unix-socket in te stellen. De standaardlocatie is /opt/local/var/run/mysql5/mysqld.sock
. Zoek de juiste plaats in /etc/php.ini
(als je het nog niet hebt, kopieer het dan van /etc/php.ini.default
) om toe te voegen:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
en:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Als u deze niet wilt configureren, kunt u ze expliciet instellen in uw php-script wanneer u verbinding maakt.
Testscript
Hier is een php-script om te controleren of het verbinding kan maken. Het is duidelijk dat je normaal gesproken het root-account niet in je php-scripts zult gebruiken, dus misschien wil je eerst een ander mysql-account maken om de verbinding te testen. De PDO-verbinding werkt niet voor native php, omdat die geen PDO-stuurprogramma's heeft.
<?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";
}