Acabo de instalar mysql5 yo mismo, y dado que esto siempre es un dolor, he notado el proceso que seguí. Esto se hizo en Leopard, pero me imagino que el proceso es el mismo en Snow Leopard y Lion. No responde a todas las preguntas originales, pero al menos es una especie de guía.
Instalación de Mysql
Primero, instale el servidor mysql5 con:
sudo port install mysql5-server
Solo instalando mysql5
no instala el servidor.
Preste atención a la salida de la consola, incluye instrucciones para configurar macports. Es posible que desee copiarlo y pegarlo en un archivo de texto. Lo siguiente se basa en ello.
En lugar de mysql5-server
, podría usar un puerto como mysql55-server
, mysql56-server
, mariadb-server
o percona-server
para obtener una versión más reciente de mysql o una bifurcación. Si lo hace, preste atención a la salida de la consola, ya que las siguientes instrucciones se basan en mysql5-server
y deberá ajustarse para usar las rutas y ejecutables correctos.
Si se trata de una instalación nueva, configure la base de datos:
sudo -u _mysql mysql_install_db5
Eso genera algunas instrucciones genéricas, que no creo que sean del todo apropiadas para macports. En mi opinión, la mejor forma de cargar mysql5 como demonio es usar el método de macport:
sudo port load mysql5-server
Además de iniciar mysql5, esto lo carga permanentemente; se ejecutará al arrancar. Para detener esto más tarde:
sudo port unload mysql5-server
Si no desea ejecutarlo como un demonio, puede ejecutarlo en la línea de comando:
sudo /opt/local/lib/mysql5/bin/mysqld_safe
Compruebe que se está ejecutando iniciando sesión en la línea de comando:
mysql5 -u root -p
De manera predeterminada, la contraseña está vacía, así que simplemente presione Intro cuando se le solicite. Para establecer una contraseña de root:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'
A continuación, se incluyen las instrucciones para configurar Macports php y la instalación nativa de php.
Configurar Macports PHP
Asumiendo que ya tienes macports php instalado y ejecutándose. Necesitas instalar php5-mysql
(o algo así como php54-mysql
dependiendo de la versión de php que estés usando):
sudo port install php5-mysql
Esto instala los controladores mysql, mysqli y pdo.
Ahora mira en tu /opt/local/etc/php5
directorio, si aún no tiene un php.ini
copia del archivo de configuración ya sea php.ini-development
o php.ini-production
a php.ini
. Ahora edite php.ini
y busque las líneas apropiadas para agregar:
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock
y:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
y:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Si no desea configurarlos, puede configurarlos explícitamente en su secuencia de comandos php cuando se conecte.
Si tiene problemas para conectarse, es posible que desee ver otras configuraciones cercanas y compararlas con php.ini-development
y php.ini-production
para ver qué ha cambiado.
Luego use la secuencia de comandos a continuación, o algo similar para probar que puede conectarse con php.
Configuración del sistema PHP
El php de OS X viene con soporte mysql y mysqli incorporado (pero no pdo), por lo que todo lo que necesita hacer es configurar el zócalo macport unix. La ubicación predeterminada es /opt/local/var/run/mysql5/mysqld.sock
. Encuentra el lugar correcto en /etc/php.ini
(si aún no lo tiene, cópielo de /etc/php.ini.default
) para agregar:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
y:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Si no desea configurarlos, puede configurarlos explícitamente en su secuencia de comandos php cuando se conecte.
Guión de prueba
Aquí hay un script php para comprobar que se puede conectar. Obviamente, normalmente no usará la cuenta raíz en sus scripts php, por lo que es posible que desee crear primero otra cuenta mysql para probar la conexión. La conexión PDO no funcionará para php nativo ya que no tiene controladores 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";
}