我试图安装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 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进入图片,但不知道在哪里挖。
底线:
在研究这个问题的时候,有没有什么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。
希望它帮助帮派! 它拯救了我的一天:-)