Назад | Перейти на главную страницу

mariadb mysql параллельная установка apache и php

Я пытаюсь установить mysql и mariadb на одном сервере в качестве параллельной установки, каждая служба на другом порту.

Я установил сервер mysql, используя apt-get в дистрибутиве на основе debian, а затем mariadb, следуя этот учебник используя предварительно скомпилированные двоичные файлы mariadb.

На первый взгляд все работает нормально, потому что:

A) Я вижу, что обе службы прослушивают порты 3306 и 3307 после выполнения "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 

Б) С удаленного хоста я могу подключиться к обеим службам через phpMyAdmin и через командную строку и выполнять запросы:

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) На сервере я могу успешно подключаться к обеим консолям и выполнять запросы, используя:

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

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

Что не работает

Невозможно подключиться так:

/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")

Вместо этого подключается к порту 3306:

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

Я считаю, что из-за предыдущих ошибок моя установка Joomla работает только тогда, когда mysql запущен на порту 3306 или 3307.

Когда на любом из портов запущена только MariaDB, Joomla отображает:

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

и командная строка:

# /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")

Когда MariaDB работает, я все еще могу подключиться через phpMyAdmin и командную строку с удаленного хоста или через командную строку на сервере с помощью параметра --socket.

Однако я должен заметить, что во время предыдущих тестов, начиная с установки mysql, я установил mariadb-server через apt-get, и он заменил установку mysql, и все работало нормально либо через командную строку, либо через любую структуру php cms, если на то пошло.

Я думаю, что где-то еще есть ссылки на mysql, в частности, на его файл сокета, потому что использование опции --socket через командную строку заставляет его работать каждый раз

На данный момент я считаю, что apache и php вступают в игру, но пока не знаю, куда копать.

Нижняя граница:

Пока я исследую этот вопрос, есть ли какие-нибудь предложения?

Большое спасибо.

Нашел частичное решение этой проблемы

Apache, PHP и, следовательно, другие CMS теперь могут нормально подключаться.

Отредактируйте файл /etc/php5/apache5/php.ini и, в зависимости от того, какой драйвер вы использовали (mysql или mysqli), установите соответствующие переменные для использования файла сокета, используемого MariaDB:

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

или

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

Итак, для удобства у вас должно быть три файла php.ini:

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

и перезапишите php.ini одним из двух других файлов, если вы планируете использовать соответствующую службу базы данных и перезапустить apache. Теперь вы можете оставить конфигурацию CMS нетронутой, за исключением, конечно, портов.

Таким образом, вы можете установить mariadb на существующий производственный сервер с уже существующей установкой mysql. Без отключения службы вы можете экспортировать базы данных из mysql и импортировать их в mariadb; на этом этапе вы либо меняете конфигурацию CMS (Joomla в моем случае), чтобы указывать на другой порт, либо перезаписываете php.ini, как показано выше, и перезапускаете / перезагружаете apache.

Надеюсь, это поможет банде! Это спасло мне день :-)