Jag har precis installerat mysql5 själv, och eftersom detta alltid är jobbigt har jag noterat processen som jag följde. Detta gjordes på Leopard, men jag föreställer mig att processen är densamma på Snow Leopard och Lion. Det svarar inte på alla ursprungliga frågor, men det är åtminstone något av en guide.
Installera Mysql
Installera först mysql5-servern med:
sudo port install mysql5-server
Installerar bara mysql5
installerar inte servern.
Var uppmärksam på konsolutgången, den innehåller instruktioner för att ställa in macports. Du kanske vill kopiera och klistra in den i en textfil. Följande är baserat på det.
Istället för mysql5-server
, kan du använda en port som mysql55-server
, mysql56-server
, mariadb-server
eller percona-server
för att få en nyare version av mysql, eller en gaffel. Om du gör det, var uppmärksam på konsolutgången, eftersom följande instruktioner är baserade på mysql5-server
och kommer att behöva justeras för att använda rätt körbara filer och sökvägar.
Om detta är en nyinstallation, ställ in databasen:
sudo -u _mysql mysql_install_db5
Det ger några generiska instruktioner, som jag inte tror är helt lämpliga för macports. Enligt min åsikt är det bästa sättet att ladda mysql5 som en demon att använda macports metod:
sudo port load mysql5-server
Förutom att starta mysql5, laddas den permanent - den kommer att köras vid uppstart. För att stoppa detta senare:
sudo port unload mysql5-server
Om du inte vill köra den som en demon kan du köra den på kommandoraden:
sudo /opt/local/lib/mysql5/bin/mysqld_safe
Kontrollera att den körs genom att logga in på kommandoraden:
mysql5 -u root -p
Som standard är lösenordet tomt, så tryck bara på enter när du uppmanas. Så här ställer du in ett root-lösenord:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'
Instruktioner för att ställa in både macports php och den inbyggda php-installationen följer.
Ställ in Macports PHP
Förutsatt att du redan har macports php installerat och kört. Du måste installera php5-mysql
(eller något som php54-mysql
beroende på vilken version av php du använder):
sudo port install php5-mysql
Detta installerar drivrutinerna för mysql, mysqli och pdo.
Titta nu i din /opt/local/etc/php5
katalog, om du inte redan har en php.ini
konfigurationsfil kopiera antingen php.ini-development
eller php.ini-production
till php.ini
. Redigera nu php.ini
och sök efter lämpliga rader att lägga till:
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock
och:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
och:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Om du inte vill konfigurera dessa kan du ställa in dem explicit i ditt php-skript när du ansluter.
Om du har problem med att ansluta kanske du vill titta på andra närliggande inställningar och jämföra med php.ini-development
och php.ini-production
för att se vad som har ändrats.
Använd sedan skriptet nedan, eller något liknande för att testa som du kan koppla till php.
Setup System PHP
OS X:s php kommer med mysql och mysqli-stöd inbyggt (men inte pdo), så allt du behöver göra är att ställa in macport unix-socket. Standardplatsen är /opt/local/var/run/mysql5/mysqld.sock
. Hitta rätt plats i /etc/php.ini
(om du inte redan har det, kopiera det från /etc/php.ini.default
) för att lägga till:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
och:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Om du inte vill konfigurera dessa kan du ställa in dem explicit i ditt php-skript när du ansluter.
Testskript
Här är ett php-skript för att kontrollera att det kan ansluta. Uppenbarligen kommer du normalt inte att använda root-kontot i dina php-skript så du kanske vill först skapa ett annat mysql-konto för att testa anslutningen. PDO-anslutningen fungerar inte för inbyggd php eftersom den inte har PDO-drivrutiner.
<?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";
}