Jeg har lige installeret mysql5 selv, og da dette altid er en smerte, har jeg noteret mig den proces, jeg fulgte. Dette blev gjort på Leopard, men jeg forestiller mig, at processen er den samme på Snow Leopard og Lion. Det besvarer ikke alle de originale spørgsmål, men det er i det mindste noget af en guide.
Installation af Mysql
Installer først mysql5-serveren med:
sudo port install mysql5-server
Installerer bare mysql5
installerer ikke serveren.
Vær opmærksom på konsoludgangen, den indeholder instruktioner til opsætning af macports. Du vil måske kopiere og indsætte den i en tekstfil. Det følgende er baseret på det.
I stedet for mysql5-server
, kan du bruge en port såsom mysql55-server
, mysql56-server
, mariadb-server
eller percona-server
for at få en nyere version af mysql, eller en gaffel. Hvis du gør det, skal du være opmærksom på konsoloutputtet, da følgende instruktioner er baseret på mysql5-server
og skal justeres for at bruge de korrekte eksekverbare filer og stier.
Hvis dette er en ny installation, skal du konfigurere databasen:
sudo -u _mysql mysql_install_db5
Det giver nogle generiske instruktioner, som jeg ikke synes er helt passende til macports. Efter min mening er den bedste måde at indlæse mysql5 som en dæmon på at bruge macports metode:
sudo port load mysql5-server
Ud over at starte mysql5, indlæser dette den permanent - den kører ved opstart. Sådan stopper du dette senere:
sudo port unload mysql5-server
Hvis du ikke ønsker at køre det som en dæmon, kan du køre det på kommandolinjen:
sudo /opt/local/lib/mysql5/bin/mysqld_safe
Tjek at det kører ved at logge ind på kommandolinjen:
mysql5 -u root -p
Adgangskoden er som standard tom, så tryk bare på enter, når du bliver bedt om det. Sådan indstilles en root-adgangskode:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'
Instruktioner til opsætning af både macports php og den oprindelige php-installation følger.
Opsætning af Macports PHP
Forudsat at du allerede har macports php installeret og kørende. Du skal installere php5-mysql
(eller noget som php54-mysql
afhængig af hvilken version af php du bruger):
sudo port install php5-mysql
Dette installerer mysql-, mysqli- og pdo-driverne.
Se nu i din /opt/local/etc/php5
bibliotek, hvis du ikke allerede har en php.ini
konfigurationsfil kopi enten php.ini-development
eller php.ini-production
til php.ini
. Rediger nu php.ini
og søg efter de relevante linjer for at tilføje:
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock
og:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
og:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Hvis du ikke ønsker at konfigurere disse, kan du indstille dem eksplicit i dit php-script, når du opretter forbindelse.
Hvis du har problemer med at oprette forbindelse, vil du måske se på de andre indstillinger i nærheden og sammenligne med php.ini-development
og php.ini-production
for at se, hvad der er blevet ændret.
Brug derefter scriptet nedenfor, eller noget lignende til at teste, som du kan forbinde med php.
Opsæt system PHP
OS X's php kommer med mysql- og mysqli-understøttelse indbygget (men ikke pdo), så alt du skal gøre er at indstille macport unix-socket. Standardplaceringen er /opt/local/var/run/mysql5/mysqld.sock
. Find det rigtige sted i /etc/php.ini
(hvis du ikke allerede har det, kopier det fra /etc/php.ini.default
) for at tilføje:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
og:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Hvis du ikke ønsker at konfigurere disse, kan du indstille dem eksplicit i dit php-script, når du opretter forbindelse.
Test script
Her er et php-script til at kontrollere, at det kan oprette forbindelse. Det er klart, at du normalt ikke vil bruge root-kontoen i dine php-scripts, så du vil måske først oprette en anden mysql-konto til at teste forbindelsen. PDO-forbindelsen virker ikke for native php, da den ikke har PDO-drivere.
<?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";
}