mariadb mysql 并行安装 apache 和 php

mariadb mysql 并行安装 apache 和 php

我正在尝试在同一台服务器上并行安装 mysql 和 mariadb,每个服务都在不同的端口上。

我在基于 Debian 的发行版上使用 apt-get 安装了 mysql 服务器,然后安装了 mariadb本教程使用 mariadb 预编译二进制文件。

乍一看一切似乎都运行良好,因为:

A)执行“netstat -latun”后,我看到两个服务都在监听端口 3306 和 3307:

    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)从远程主机,我可以通过 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 安装开始,我通过 apt-get 安装了 mariadb-server,它替换了 mysql 安装,并且无论是通过命令行还是通过任何 php cms 框架,一切都运行良好。

我认为某些地方仍然有对 mysql 的引用,特别是对其套接字文件的引用,因为通过命令行使用 --socket 选项可以使其每次都有效

此时我相信 apache 和 php 已经出现,但还不知道从哪里开始挖掘。

底线:

  • 从远程主机 phpMyAdmin 和命令行与任一端口上的每个服务协同工作。
  • 在服务器上,Apache 和 php 均未通过任何端口连接到 MariaDB
  • 仅当给出了 --socket 选项时,才可以通过服务器上的命令行连接到 MariaDB。

当我研究此事时,有什么建议吗?

非常感谢。

答案1

找到了这个问题的部分解决方案

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 配置不变,当然端口除外。

这样,您可以在已有 mysql 安装的现有生产服务器上安装 mariadb。无需中断服务,您就可以从 mysql 导出数据库并将其导入 mariadb;此时,您可以更改 CMS(我的情况是 Joomla)配置以指向不同的端口,或者您可以如上所示覆盖 php.ini 并重新启动/重新加载 apache。

希望它能帮到大家!它拯救了我一天 :-)

相关内容