Právě jsem si nainstaloval mysql5 sám, a protože je to vždy bolest, zaznamenal jsem proces, který jsem sledoval. To bylo provedeno na Leopardovi, ale myslím si, že postup je stejný na Snow Leopard a Lion. Neodpovídá na všechny původní otázky, ale alespoň je to něco jako vodítko.
Instalace Mysql
Nejprve nainstalujte server mysql5 pomocí:
sudo port install mysql5-server
Stačí nainstalovat mysql5
nenainstaluje server.
Věnujte pozornost výstupu konzole, obsahuje pokyny pro nastavení macportů. Možná jej budete chtít zkopírovat a vložit do textového souboru. Na tom je založeno následující.
Místo mysql5-server
, můžete použít port jako mysql55-server
, mysql56-server
, mariadb-server
nebo percona-server
získat novější verzi mysql nebo fork. Pokud tak učiníte, věnujte pozornost výstupu konzole, protože následující pokyny jsou založeny na mysql5-server
a bude nutné jej upravit, aby používal správné spustitelné soubory a cesty.
Pokud se jedná o novou instalaci, nastavte databázi:
sudo -u _mysql mysql_install_db5
Výsledkem jsou některé obecné pokyny, které podle mě nejsou úplně vhodné pro macporty. Podle mého názoru je nejlepším způsobem, jak načíst mysql5 jako démona, použít metodu macport:
sudo port load mysql5-server
Stejně jako spuštění mysql5, toto jej trvale načte - poběží při bootování. Chcete-li to později zastavit:
sudo port unload mysql5-server
Pokud jej nechcete spouštět jako démona, můžete jej spustit na příkazovém řádku:
sudo /opt/local/lib/mysql5/bin/mysqld_safe
Zkontrolujte, zda běží, přihlášením na příkazovém řádku:
mysql5 -u root -p
Ve výchozím nastavení je heslo prázdné, takže na výzvu stačí stisknout enter. Chcete-li nastavit heslo uživatele root:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'
Následují pokyny pro nastavení php macports a nativní instalace php.
Nastavení Macports PHP
Za předpokladu, že již máte nainstalovaný a spuštěný macports php. Musíte nainstalovat php5-mysql
(nebo něco jako php54-mysql
v závislosti na verzi php, kterou používáte):
sudo port install php5-mysql
Tím se nainstalují ovladače mysql, mysqli a pdo.
Nyní se podívejte do svého /opt/local/etc/php5
adresář, pokud ještě nemáte php.ini
konfigurační soubor zkopírujte buď php.ini-development
nebo php.ini-production
na php.ini
. Nyní upravte php.ini
a vyhledejte příslušné řádky, které chcete přidat:
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock
a:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
a:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Pokud je nechcete konfigurovat, můžete je explicitně nastavit ve vašem php skriptu, když se připojujete.
Pokud máte potíže s připojením, můžete se podívat na další nastavení v okolí a porovnat s php.ini-development
a php.ini-production
abyste viděli, co se změnilo.
Poté použijte níže uvedený skript nebo něco podobného k otestování, zda se můžete připojit k php.
Nastavení systému PHP
PHP OS X přichází s vestavěnou podporou mysql a mysqli (ale ne pdo), takže vše, co musíte udělat, je nastavit macport unix socket. Výchozí umístění je /opt/local/var/run/mysql5/mysqld.sock
. Najděte správné místo v /etc/php.ini
(pokud jej ještě nemáte, zkopírujte jej z /etc/php.ini.default
) přidat:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
a:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Pokud je nechcete konfigurovat, můžete je explicitně nastavit ve vašem php skriptu, když se připojujete.
Testovací skript
Zde je php skript pro kontrolu, zda se může připojit. Je zřejmé, že nebudete normálně používat účet root ve svých skriptech php, takže možná budete chtít nejprve vytvořit další účet mysql pro testování připojení. Připojení PDO nebude fungovat pro nativní php, protože nemá ovladače PDO.
<?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";
}