Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Configuração do Macports mysql5 no Snow Leopard


Acabei de instalar o mysql5, e como isso é sempre uma dor, observei o processo que segui. Isso foi feito no Leopard, mas imagino que o processo seja o mesmo no Snow Leopard e no Lion. Ele não responde a todas as perguntas originais, mas pelo menos é um guia.

Instalando o MySQL


Primeiro, instale o servidor mysql5 com:
sudo port install mysql5-server

Apenas instalando o mysql5 não instala o servidor.

Preste atenção na saída do console, ela inclui instruções para configurar macports. Você pode querer copiá-lo e colá-lo em um arquivo de texto. O seguinte é baseado nele.

Em vez de mysql5-server , você pode usar uma porta como mysql55-server , mysql56-server , mariadb-server ou percona-server para obter uma versão mais recente do mysql, ou um fork. Se você fizer isso, preste atenção na saída do console, pois as instruções a seguir são baseadas em mysql5-server e precisará ser ajustado para usar os executáveis ​​e caminhos corretos.

Se esta for uma nova instalação, configure o banco de dados:
sudo -u _mysql mysql_install_db5

Isso gera algumas instruções genéricas, que não acho totalmente apropriadas para macports. Na minha opinião, a melhor maneira de carregar o mysql5 como um daemon é usar o método do macport:
sudo port load mysql5-server

Além de iniciar o mysql5, isso o carrega permanentemente - ele será executado na inicialização. Para parar isso mais tarde:
sudo port unload mysql5-server

Se você não quiser executá-lo como um daemon, poderá executá-lo na linha de comando:
sudo /opt/local/lib/mysql5/bin/mysqld_safe

Verifique se ele está sendo executado fazendo login na linha de comando:
mysql5 -u root -p

Por padrão, a senha está vazia, então basta pressionar enter quando solicitado. Para definir uma senha de root:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'

Seguem instruções para configurar o macports php e a instalação nativa do php.

Configurar Macports PHP


Supondo que você já tenha o macports php instalado e em execução. Você precisa instalar o php5-mysql (ou algo como php54-mysql dependendo de qual versão do php você está usando):
sudo port install php5-mysql

Isso instala os drivers mysql, mysqli e pdo.

Agora olhe em seu /opt/local/etc/php5 diretório, se você ainda não tiver um php.ini copie o arquivo de configuração php.ini-development ou php.ini-production para php.ini . Agora edite php.ini e procure as linhas apropriadas para adicionar:
pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock

e:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock

e:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock

Se você não quiser configurá-los, você pode defini-los explicitamente em seu script php quando você se conectar.

Se você está tendo problemas para se conectar, você pode querer ver as outras configurações próximas e comparar com php.ini-development e php.ini-production para ver o que foi alterado.

Em seguida, use o script abaixo, ou algo semelhante para testar se você pode conectar com o php.

Configurar o sistema PHP


O php do OS X vem com suporte mysql e mysqli embutido (mas não pdo), então tudo que você precisa fazer é definir o soquete unix macport. A localização padrão é /opt/local/var/run/mysql5/mysqld.sock . Encontre o local correto em /etc/php.ini (se você ainda não o tiver, copie-o de /etc/php.ini.default ) adicionar:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock

e:
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock

Se você não quiser configurá-los, você pode defini-los explicitamente em seu script php quando você se conectar.

Script de teste


Aqui está um script php para verificar se ele pode se conectar. Obviamente, você normalmente não usará a conta root em seus scripts php, então você pode querer primeiro criar outra conta mysql para testar a conexão. A conexão PDO não funcionará para php nativo, pois não possui drivers 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";
}