mariadb mysql instalação paralela apache e php

1

Estou tentando instalar o mysql e o mariadb no mesmo servidor de uma instalação paralela, cada serviço em uma porta diferente.

Eu instalei o servidor mysql usando o apt-get em uma distro baseada no debian e depois o mariadb seguindo este tutorial usando binários pré-compilados do mariadb.

À primeira vista, tudo parece funcionar bem porque:

A) Eu vejo os dois serviços ouvindo nas portas 3306 e 3307 depois de fazer "netstat -latun":

    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN     
    tcp        0      0 0.0.0.0:3307            0.0.0.0:*               LISTEN     
    tcp6       0      0 :::80                   :::*                    LISTEN     
    tcp6       0      0 :::22                   :::*                    LISTEN 

B) De um host remoto eu posso conectar-me aos dois serviços via phpMyAdmin e via linha de comando e executar consultas:

MySQL:          mysql -u root -pmypassword -h x.x.x.x --port 3306

MariaDB:        mysql -u root -pmypassword -h x.x.x.x --port 3307

C) No servidor eu posso conectar com sucesso a ambos os consoles e executar consultas usando:

MySQL: mysql -u root -pmypassword --port 3306

MariaDB: mysql -u root -pmypassword --socket=/opt/mariadb-data/mariadb.sock

O que não está funcionando

Não é possível conectar assim:

/opt/mariadb/bin/mysql -u root -pmypassword --port 3307
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2 "No such file or directory")

Conecta-se à porta 3306 em vez disso:

/usr/bin/mysql -u root -pmypassword --port 3307

Eu acredito que, como conseqüência dos erros anteriores, a instalação do Joomla só funciona quando o mysql está em execução na porta 3306 ou 3307.

Quando apenas o MariaDB está funcionando em qualquer porta, o Joomla exibe:

Database connection error (2): Could not connect to MySQL.Database connection error (2): Could not connect to MySQL. 

e linha de comando:

# /usr/bin/mysql -u root -pmypassword
ERROR 2002 (HY000): Can't connect to local MySQL server through    socket '/var/run/mysqld/mysqld.sock' (2)

# /opt/mariadb/bin/mysql -u root -pmypassword
ERROR 2002 (HY000): Can't connect to local MySQL server through  socket '/tmp/mysql.sock' (2 "No such file or directory")

Quando o MariaDB está rodando, eu ainda posso conectar via phpMyAdmin e linha de comando de um host remoto ou via linha de comando no servidor usando a opção --socket.

Eu tenho que notar que durante testes anteriores, a partir de uma instalação do mysql eu instalei o servidor mariadb via apt-get e ele substituiu a instalação do mysql e tudo funcionou bem via linha de comando ou via qualquer framework php cms .

Eu acho que ainda existem referências ao mysql em algum lugar, em particular ao seu arquivo de soquete porque usar a opção --socket através da linha de comando faz com que ele funcione sempre

Neste ponto, acredito que o apache e o php entram em cena, mas ainda não sabem onde cavar.

Linha de fundo:

  • A partir de um host remoto, o phpMyAdmin e a linha de comando funcionam com todos os serviços em qualquer porta.
  • No servidor Apache e php não conectam ao MariaDB em qualquer porta
  • Conectar-se ao MariaDB via linha de comando no servidor só funciona se a opção --socket for fornecida.

Enquanto pesquiso sobre este assunto, há alguma sugestão?

Muito obrigado.

    
por Thomas Ukenagashi 11.12.2015 / 13:30

1 resposta

0

Encontrou uma solução parcial para este problema

Apache, PHP e, portanto, outros CMS podem se conectar bem agora.

Edite o arquivo /etc/php5/apache5/php.ini e dependendo de qual driver você usado (mysql ou mysqli) define as variáveis correspondentes para usar o arquivo socket usado pelo MariaDB:

    mysql.default_socket =/opt/mariadb-data/mariadb.sock

ou

    mysqli.default_socket =/opt/mariadb-data/mariadb.sock

Então, por conveniência, você deve ter agora três arquivos php.ini:

    php.ini, php.ini.mysql,php.ini.mariadb

e sobrescreva php.ini com um dos dois outros arquivos quando você planeja usar o serviço de banco de dados correspondente e reiniciar o apache. Agora você pode deixar a configuração do CMS intocada, exceto pelas portas, é claro.

Desta forma, você pode instalar o mariadb em um servidor de produção existente com uma instalação já existente do mysql. Sem serviço de interrupção, você pode exportar bancos de dados do mysql e importá-los para o mariadb; Neste ponto, você muda a configuração do CMS (Joomla no meu caso) para apontar para uma porta diferente ou sobrescreve o php.ini como mostrado acima e reinicia / recarrega o apache.

Espero que ajude gangue! Isso salvou meu dia: -)

    
por 11.12.2015 / 14:11