我可以将 MySql 配置文件存储在 /etc 文件夹之外吗?怎样做?

我可以将 MySql 配置文件存储在 /etc 文件夹之外吗?怎样做?

我是 Linux 新手。正在研究 php/mysql 开发。在 Windows 上,我将 Apache、PHP、Mysql、PgSQL 目录保存在单独的驱动器上的一个文件夹中,如下所示:

D:\server
    \mysql
    \apache
    \php

所以 - 如果我要重新安装 Windows - 我所要做的就是启动 mysql 和 httpd 服务 - 就是这样。快速又简单。与 XAMPP 相同,只是我不需要 xammp 提供的 20 个额外应用程序。

我很想在 Ubuntu 上做同样的事情。所以我会将 apache、mysql、php 放在单独的驱动器上,并在需要时启动它们(init.d 或 upstart 会自动启动它们)。

因此,结构如下:

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

除了配置文件之外,我已经编译并设置好了所有内容。

问题是:

我也希望所有配置文件都放在一个地方。我的意思是 http.conf - 在 apache 文件夹中。my.cnf - 在 mysql 文件夹中

那么-问题: 我如何让 MySQL 加载配置文件不是从 /etc/my.cnf,而是从另一个任意位置加载。在任何地方都找不到此信息.. :(

重要的:

1) 它不是生产服务器!它只适合那些学习 Web 开发和 Linux 并且不想在更换发行版时不断重新安装和重新配置服务器的人。2) 我知道这违反了 Linux 层次标准。3) 我现在了解 Ubuntu 的 Taskel Lamp-server 和/或 XAMPP 的易用性:)

答案1

http://dev.mysql.com/doc/refman/5.1/en/option-files.html

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

答案2

实现目标最简单的方法可能就是符号链接。让包在它想要创建配置文件的任何地方创建配置文件。完成后,只需将配置文件移动到您想要的位置,然后从包期望的位置创建一个符号链接,指向您想要存储配置的文件夹。

因此,如果您安装了官方 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 运行东西。构建 Debian/Ubuntu chroot 是好简单我偶尔会使用它来让我的系统上有多个不同版本的发行版可供测试。

相关内容