Самият аз току-що инсталирах mysql5 и тъй като това винаги е болка, отбелязах процеса, който следвах. Това беше направено на Leopard, но предполагам, че процесът е същият при Snow Leopard и Lion. Той не отговаря на всички първоначални въпроси, но поне е нещо като ръководство.
Инсталиране на Mysql
Първо, инсталирайте mysql5 сървъра с:
sudo port install mysql5-server
Просто инсталирам mysql5
не инсталира сървъра.
Обърнете внимание на изхода на конзолата, той включва инструкции за настройка на macports. Може да искате да го копирате и поставите в текстов файл. На него се основава следното.
Вместо mysql5-server
, можете да използвате порт като mysql55-server
, mysql56-server
, mariadb-server
или percona-server
за да получите по-нова версия на mysql или fork. Ако го направите, обърнете внимание на изхода на конзолата, тъй като следните инструкции са базирани на mysql5-server
и ще трябва да се коригира, за да се използват правилните изпълними файлове и пътища.
Ако това е нова инсталация, настройте базата данни:
sudo -u _mysql mysql_install_db5
Това извежда някои общи инструкции, които не мисля, че са напълно подходящи за macports. Според мен най-добрият начин да заредите mysql5 като демон е да използвате метода на macport:
sudo port load mysql5-server
Освен че стартира mysql5, това го зарежда постоянно - той ще работи при стартиране. За да спрете това по-късно:
sudo port unload mysql5-server
Ако не искате да го стартирате като демон, можете да го стартирате от командния ред:
sudo /opt/local/lib/mysql5/bin/mysqld_safe
Проверете дали работи, като влезете в командния ред:
mysql5 -u root -p
По подразбиране паролата е празна, така че просто натиснете enter, когато бъдете подканени. За да зададете root парола:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'
Следват инструкции за настройка както на macports php, така и на собствената php инсталация.
Настройте Macports PHP
Ако приемем, че вече имате инсталиран и работещ macports php. Трябва да инсталирате php5-mysql
(или нещо като php54-mysql
в зависимост от това коя версия на php използвате):
sudo port install php5-mysql
Това инсталира драйверите на mysql, mysqli и pdo.
Сега погледнете във вашия /opt/local/etc/php5
директория, ако все още нямате php.ini
копие на конфигурационния файл или php.ini-development
или php.ini-production
към php.ini
. Сега редактирайте php.ini
и потърсете подходящите редове за добавяне:
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock
и:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
и:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Ако не искате да ги конфигурирате, можете да ги зададете изрично във вашия php скрипт, когато се свързвате.
Ако имате проблеми със свързването, може да искате да разгледате другите настройки наблизо и да сравните с php.ini-development
и php.ini-production
за да видите какво е променено.
След това използвайте скрипта по-долу или нещо подобно за тестване, което можете да свържете с php.
Настройка на системния PHP
php на OS X идва с вградена поддръжка на mysql и mysqli (но не и pdo), така че всичко, което трябва да направите, е да настроите macport unix сокета. Местоположението по подразбиране е /opt/local/var/run/mysql5/mysqld.sock
. Намерете правилното място в /etc/php.ini
(ако вече го нямате, копирайте го от /etc/php.ini.default
), за да добавите:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
и:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Ако не искате да ги конфигурирате, можете да ги зададете изрично във вашия php скрипт, когато се свързвате.
Тестов скрипт
Ето php скрипт, за да проверите дали може да се свърже. Очевидно е, че обикновено няма да използвате root акаунта във вашите php скриптове, така че може да искате първо да създадете друг mysql акаунт за тестване на връзката. PDO връзката няма да работи за родния php, тъй като няма 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";
}