mariadb mysql并行安装apache和php

我试图安装mysqlmariadb作为并行安装在同一台服务器上,每个服务在不同的端口上。

我在基于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 xxxx --port 3306

MariaDB: mysql -u root -pmypassword -h xxxx --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选项连接。

我不得不注意,在之前的testing中,从一个mysql安装开始,我通过apt-get安装了mariadb-server,它取代了mysql安装,并且通过命令行或者通过任何php cms框架都可以正常工作。

我认为还有一些引用到某处的mysql,特别是它的套接字文件,因为使用–socket选项通过命令行使它每次工作

在这一点上,我相信Apache和PHP进入图片,但不知道在哪里挖。

底线:

  • 从远程主机phpMyAdmin和命令行工作在每个端口上的每个服务。
  • 在服务器上Apache和php不要连接到任何一个端口上的MariaDB
  • 通过服务器上的命令行连接到MariaDB只在给出–socket选项的情况下才起作用。

在研究这个问题的时候,有没有什么build议?

非常感谢你。

发现这个问题的部分解决scheme

Apache,PHP和其他的CMS现在可以连接好了。

编辑文件/etc/php5/apache5/php.ini并根据你使用的驱动程序(mysql或mysqli)设置相应的variables来使用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 

并在计划使用相应的数据库服务并重新启动apache时,用另外两个文件中的任何一个覆盖php.ini。 您现在可以保持CMSconfiguration不变,除了端口,当然。

通过这种方式,您可以在现有的生产服务器上安装mariadb,并使用已有的mysql安装。 没有分段服务,你可以从mysql中导出数据库并导入到mariadb; 在这一点上,无论您更改CMS(Joomla在我的情况下)configuration指向一个不同的端口,或者你覆盖php.ini如上所示,并重新启动/重新加载Apache。

希望它帮助帮派! 它拯救了我的一天:-)