Tôi vừa tự cài đặt mysql5 và vì đây luôn là một vấn đề khó khăn nên tôi đã ghi nhận quá trình mà tôi đã làm theo. Điều này đã được thực hiện trên Leopard, nhưng tôi tưởng tượng quá trình này cũng giống như trên Snow Leopard và Lion. Nó không trả lời tất cả các câu hỏi ban đầu, nhưng ít nhất nó là một cái gì đó của một hướng dẫn.
Cài đặt Mysql
Đầu tiên, cài đặt máy chủ mysql5 với:
sudo port install mysql5-server
Chỉ cần cài đặt mysql5
không cài đặt máy chủ.
Hãy chú ý đến đầu ra của bảng điều khiển, nó bao gồm hướng dẫn thiết lập macports. Bạn có thể muốn sao chép và dán nó vào một tệp văn bản. Sau đây là dựa trên nó.
Thay vì mysql5-server
, bạn có thể sử dụng một cổng như mysql55-server
, mysql56-server
, mariadb-server
hoặc percona-server
để tải phiên bản mysql mới hơn hoặc một bản fork. Nếu bạn làm vậy, hãy chú ý đến đầu ra của bảng điều khiển, vì các hướng dẫn sau dựa trên mysql5-server
và sẽ cần được điều chỉnh để sử dụng các tệp thực thi và đường dẫn chính xác.
Nếu đây là bản cài đặt mới, hãy thiết lập cơ sở dữ liệu:
sudo -u _mysql mysql_install_db5
Điều đó tạo ra một số hướng dẫn chung chung, mà tôi không nghĩ là hoàn toàn thích hợp cho macports. Theo tôi, cách tốt nhất để tải mysql5 dưới dạng daemon là sử dụng phương thức của macport:
sudo port load mysql5-server
Cũng như khởi động mysql5, thao tác này sẽ tải vĩnh viễn - nó sẽ chạy khi khởi động. Để dừng việc này sau:
sudo port unload mysql5-server
Nếu bạn không muốn chạy nó dưới dạng daemon, bạn có thể chạy nó tại dòng lệnh:
sudo /opt/local/lib/mysql5/bin/mysqld_safe
Kiểm tra xem nó đang chạy bằng cách đăng nhập vào dòng lệnh:
mysql5 -u root -p
Theo mặc định, mật khẩu trống, vì vậy chỉ cần nhấn enter khi được nhắc. Để đặt mật khẩu gốc:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'
Làm theo hướng dẫn thiết lập cả macports php và cài đặt php gốc.
Thiết lập Macports PHP
Giả sử bạn đã cài đặt và chạy macports php. Bạn cần cài đặt php5-mysql
(hoặc cái gì đó như php54-mysql
tùy thuộc vào phiên bản php bạn đang sử dụng):
sudo port install php5-mysql
Điều này sẽ cài đặt trình điều khiển mysql, mysqli và pdo.
Bây giờ, hãy tìm trong /opt/local/etc/php5
của bạn thư mục, nếu bạn chưa có php.ini
sao chép tệp cấu hình php.ini-development
hoặc php.ini-production
tới php.ini
. Bây giờ hãy chỉnh sửa php.ini
và tìm kiếm các dòng thích hợp để thêm:
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock
và:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
và:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Nếu bạn không muốn định cấu hình chúng, bạn có thể đặt chúng một cách rõ ràng trong tập lệnh php của mình khi bạn kết nối.
Nếu bạn gặp sự cố khi kết nối, bạn có thể muốn xem các cài đặt lân cận khác và so sánh với php.ini-development
và php.ini-production
để xem những gì đã được thay đổi.
Sau đó, sử dụng tập lệnh bên dưới hoặc thứ gì đó tương tự để kiểm tra xem bạn có thể kết nối với php hay không.
Hệ thống thiết lập PHP
Php của OS X đi kèm với hỗ trợ mysql và mysqli được tích hợp sẵn (nhưng không phải pdo), vì vậy tất cả những gì bạn cần làm là đặt ổ cắm macport unix. Vị trí mặc định là /opt/local/var/run/mysql5/mysqld.sock
. Tìm địa điểm chính xác trong /etc/php.ini
(nếu bạn chưa có, hãy sao chép nó từ /etc/php.ini.default
) để thêm:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
và:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Nếu bạn không muốn định cấu hình chúng, bạn có thể đặt chúng một cách rõ ràng trong tập lệnh php của mình khi bạn kết nối.
Tập lệnh thử nghiệm
Đây là một tập lệnh php để kiểm tra xem nó có thể kết nối hay không. Rõ ràng, thông thường bạn sẽ không sử dụng tài khoản gốc trong các tập lệnh php của mình, vì vậy trước tiên bạn có thể muốn tạo một tài khoản mysql khác để kiểm tra kết nối. Kết nối PDO sẽ không hoạt động đối với php gốc vì nó không có trình điều khiển 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";
}