我能否将MySqlconfiguration文件存储在/ etc文件夹中? 怎么样?

我是Linux新手。 只是研究php / mysql的开发。 在Windows上,我把Apache,PHP,Mysql,PgSQL目录保存在SEPARATE DRIVE上的一个文件夹中,如下所示:

D:\server \mysql \apache \php 

所以 – 如果我想重新安装Windows – 我所要做的就是启动mysql和httpd服务 – 就是这样。 快捷方便。 像XAMPP一样,除了我不需要20个额外的应用程序,xammp给你。

我很想在Ubuntu中做同样的事情。 所以我会保持单独的驱动器上的Apache,MySQL,PHP和启动他们(init.d或upstart自动启动它们)。

所以 – 结构将是:

 /media/storage/server /media/storage/server/mysql /media/storage/server/apache /media/storage/server/php 

我得到了一切编译和设置文件的一部分。

问题是:

我希望所有的configuration文件都在一个地方。 我的意思是http.conf中的apache文件夹。 my.cnf – 在mysql文件夹中

所以 – 问题:如何使MySQL负载configuration文件不是从/etc/my.cnf,而是从另一个任意位置。 在任何地方都找不到这个资讯.. 🙁

重要:

1)它不是一个生产服务器! 这仅仅是一个学习web开发和linux的人,当他改变发行版时不想重新安装和重新configuration服务器。 2)我知道这是针对Linux分层标准的。 3)我现在关于Ubuntu的tasksel lamp-server和/或XAMPP easinness 🙂

之后阅读http://dev.mysql.com/doc/refman/5.1/en/option-files.html

在Unix,Linux和Mac OS X上,MySQL程序以指定的顺序(首先使用顶级项目)从以下文件中读取启动选项。

实现你的目标最简单的方法可能是简单的符号链接 。 让包创build它的configuration文件,无论它想创build它们。 一旦完成,只需将configuration文件移动到所需的位置,然后从软件包期望的位置创build一个符号链接到要存储configuration的文件夹。

所以如果你安装了官方的mysql服务器软件包,你可以这样做。

 rsync -av /etc/mysql/ /media/storage/server/mysql/ #copy mysql config rm -r /etc/mysql # remove original folder ln -s /media/storage/server/mysql /etc/mysql/ # create symlink to new folder 

如果你可以提交一个单独的发行版来运行你的web堆栈,那么你可以通过设置一个chroot环境来简化这个过程 。 一个chroot基本上允许你有一个自包含的应用程序和所需的所有支持库的文件夹。 如果你在多个地方有相同的架构,你应该可以在任何系统上运行chroot中的东西。 构buildDebian / Ubuntu chroot 非常容易,我偶尔会使用它来让我的系统上有多个不同版本的发行版用于testing。