Właśnie zainstalowałem mysql5, a ponieważ jest to zawsze uciążliwe, zauważyłem proces, który zastosowałem. Zostało to zrobione w Leopardzie, ale wyobrażam sobie, że proces jest taki sam w Snow Leopard i Lion. Nie odpowiada na wszystkie oryginalne pytania, ale przynajmniej jest czymś w rodzaju przewodnika.
Instalowanie MySQL
Najpierw zainstaluj serwer mysql5 za pomocą:
sudo port install mysql5-server
Wystarczy zainstalować mysql5
nie instaluje serwera.
Zwróć uwagę na dane wyjściowe konsoli, zawiera instrukcje dotyczące konfigurowania macports. Możesz go skopiować i wkleić do pliku tekstowego. Opiera się na tym.
Zamiast mysql5-server
, możesz użyć portu takiego jak mysql55-server
, mysql56-server
, mariadb-server
lub percona-server
aby uzyskać nowszą wersję mysql lub forka. Jeśli tak, zwróć uwagę na wyjście konsoli, ponieważ poniższe instrukcje są oparte na mysql5-server
i będą musiały zostać dostosowane, aby używać poprawnych plików wykonywalnych i ścieżek.
Jeśli jest to nowa instalacja, skonfiguruj bazę danych:
sudo -u _mysql mysql_install_db5
To generuje kilka ogólnych instrukcji, które moim zdaniem nie są całkowicie odpowiednie dla macports. Moim zdaniem najlepszym sposobem na załadowanie mysql5 jako demona jest użycie metody macport:
sudo port load mysql5-server
Poza uruchomieniem mysql5, to go na stałe ładuje - będzie działać podczas uruchamiania. Aby zatrzymać to później:
sudo port unload mysql5-server
Jeśli nie chcesz uruchamiać go jako demona, możesz go uruchomić z wiersza poleceń:
sudo /opt/local/lib/mysql5/bin/mysqld_safe
Sprawdź, czy działa, logując się w wierszu poleceń:
mysql5 -u root -p
Domyślnie hasło jest puste, więc po wyświetleniu monitu naciśnij enter. Aby ustawić hasło roota:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'
Poniżej znajdują się instrukcje dotyczące konfiguracji zarówno macports php, jak i natywnego php.
Skonfiguruj Macports PHP
Zakładając, że masz już zainstalowany i uruchomiony php macports. Musisz zainstalować php5-mysql
(lub coś takiego jak php54-mysql
w zależności od używanej wersji php):
sudo port install php5-mysql
Instaluje to sterowniki mysql, mysqli i pdo.
Teraz zajrzyj do swojego /opt/local/etc/php5
katalog, jeśli nie masz jeszcze pliku php.ini
plik konfiguracyjny skopiuj albo php.ini-development
lub php.ini-production
do php.ini
. Teraz edytuj php.ini
i wyszukaj odpowiednie wiersze do dodania:
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock
i:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
i:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Jeśli nie chcesz ich konfigurować, możesz ustawić je jawnie w skrypcie php podczas łączenia.
Jeśli masz problemy z połączeniem, możesz spojrzeć na inne pobliskie ustawienia i porównać z php.ini-development
i php.ini-production
aby zobaczyć, co zostało zmienione.
Następnie użyj poniższego skryptu lub czegoś podobnego do testowania, które można połączyć z php.
Konfiguracja systemu PHP
PHP OS X ma wbudowaną obsługę mysql i mysqli (ale nie pdo), więc wszystko, co musisz zrobić, to ustawić gniazdo macport unix. Domyślna lokalizacja to /opt/local/var/run/mysql5/mysqld.sock
. Znajdź właściwe miejsce w /etc/php.ini
(jeśli jeszcze go nie masz, skopiuj go z /etc/php.ini.default
) aby dodać:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
i:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Jeśli nie chcesz ich konfigurować, możesz ustawić je jawnie w skrypcie php podczas łączenia.
Skrypt testowy
Oto skrypt php, który sprawdza, czy może się połączyć. Oczywiście, zwykle nie będziesz używać konta root w swoich skryptach php, więc możesz najpierw utworzyć inne konto mysql do testowania połączenia. Połączenie PDO nie będzie działać dla natywnego php, ponieważ nie ma sterowników 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";
}