Saya sendiri baru saja menginstal mysql5, dan karena ini selalu menyusahkan, saya mencatat proses yang saya ikuti. Ini dilakukan pada Leopard, tetapi saya membayangkan prosesnya sama pada Snow Leopard dan Lion. Itu tidak menjawab semua pertanyaan awal, tapi setidaknya itu adalah panduan.
Menginstal Mysql
Pertama, instal server mysql5 dengan:
sudo port install mysql5-server
Hanya menginstal mysql5
tidak menginstal server.
Perhatikan output konsol, itu termasuk instruksi untuk mengatur macports. Anda mungkin ingin menyalin dan menempelkannya ke file teks. Berikut ini didasarkan pada itu.
Alih-alih mysql5-server
, Anda dapat menggunakan port seperti mysql55-server
, mysql56-server
, mariadb-server
atau percona-server
untuk mendapatkan versi mysql yang lebih baru, atau fork. Jika ya, perhatikan output konsol, karena instruksi berikut didasarkan pada mysql5-server
dan perlu disesuaikan untuk menggunakan executable dan jalur yang benar.
Jika ini adalah instalasi baru, siapkan database:
sudo -u _mysql mysql_install_db5
Itu menghasilkan beberapa instruksi umum, yang menurut saya tidak sepenuhnya sesuai untuk macports. Menurut pendapat saya cara terbaik untuk memuat mysql5 sebagai daemon adalah dengan menggunakan metode macport:
sudo port load mysql5-server
Selain memulai mysql5, ini memuatnya secara permanen - ini akan berjalan saat boot. Untuk menghentikan ini nanti:
sudo port unload mysql5-server
Jika Anda tidak ingin menjalankannya sebagai daemon, Anda dapat menjalankannya di baris perintah:
sudo /opt/local/lib/mysql5/bin/mysqld_safe
Periksa apakah itu berjalan dengan masuk di baris perintah:
mysql5 -u root -p
Secara default, kata sandinya kosong, jadi tekan saja enter saat diminta. Untuk menyetel kata sandi root:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'
Petunjuk untuk menyiapkan macports php dan penginstalan php asli ikuti.
Mengatur Macports PHP
Dengan asumsi Anda sudah menginstal dan menjalankan macports php. Anda perlu menginstal php5-mysql
(atau sesuatu seperti php54-mysql
tergantung pada versi php yang Anda gunakan):
sudo port install php5-mysql
Ini menginstal driver mysql, mysqli dan pdo.
Sekarang lihat di /opt/local/etc/php5
direktori, jika Anda belum memiliki php.ini
salinan file konfigurasi baik php.ini-development
atau php.ini-production
ke php.ini
. Sekarang edit php.ini
dan cari baris yang sesuai untuk ditambahkan:
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock
dan:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
dan:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Jika Anda tidak ingin mengonfigurasinya, Anda dapat menyetelnya secara eksplisit di skrip php saat Anda terhubung.
Jika Anda mengalami masalah saat menyambungkan, Anda mungkin ingin melihat setelan terdekat lainnya, dan membandingkan dengan php.ini-development
dan php.ini-production
untuk melihat apa yang telah diubah.
Kemudian gunakan skrip di bawah ini, atau yang serupa dengan pengujian yang dapat Anda hubungkan dengan php.
Sistem Pengaturan PHP
PHP OS X dilengkapi dengan dukungan mysql dan mysqli bawaan (tetapi tidak pdo), jadi yang perlu Anda lakukan hanyalah mengatur soket macport unix. Lokasi default adalah /opt/local/var/run/mysql5/mysqld.sock
. Temukan tempat yang benar di /etc/php.ini
(jika Anda belum memilikinya, salin dari /etc/php.ini.default
) untuk menambahkan:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
dan:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Jika Anda tidak ingin mengonfigurasinya, Anda dapat menyetelnya secara eksplisit di skrip php saat Anda terhubung.
Skrip Uji
Berikut skrip php untuk memeriksa apakah itu dapat terhubung. Jelas, Anda biasanya tidak akan menggunakan akun root di skrip php Anda sehingga Anda mungkin ingin membuat akun mysql lain untuk menguji koneksi terlebih dahulu. Koneksi PDO tidak akan bekerja untuk php asli karena tidak memiliki driver 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";
}