在mysql中更改默认的my.cnf路径

我在同一台机器上有两个mysql实例。安装在/ usr / loca / mysql1和/ usr / local / mysql2上。 我在/ etc / mysql1和/ etc / mysql2中有单独的my.cnf文件。我使用source distribution和--prefix = / usr / local / mysql1选项安装了我的第一个sql实例。第二个我从复制和pastinf同一目录到/ usr / local / mysql2。 当我在/usr.local/mysql/libexec上启动mysql守护进程时,它会读取/ etc / mysql1中的my.cnf文件。如果我在/ usr / local / mysql2中启动mysql守护进程,它会读取相同的my.cnf文件。我在这两个位置的.cnf文件中定义了单独的端口号和.sock文件。 我可以在mysqld startup上使用--defaults-file = / etc / mysql2 / my.cnf选项在第二个位置读取my.cnf文件。每次启动守护进程时我都不需要输入它。 如果我要有更多的实例,我怎么能指出正确的my.cnf文件来读取每个mysql守护进程。 mysqld与my.cnf文件的链接背后的含义是什么? 我如何为每个实例预定义my.cnf文件的位置。     
已邀请:
正如您已经发现的那样,MySQL为其配置文件提供了一个已编译的搜索位置。虽然你可以自己重新编译,但是你也发现了mysqld的--defaults-file选项,它指示它使用完全不同的配置路径。与--data-dir结合使用,这意味着你可以启动绑定到不同端口(和地址,如果喜欢)的多个MySQL实例,并使用完全独立的数据集,同时处理相同的二进制文件和库。 传统上,大多数操作系统发行版将捆绑单个init脚本以启动MySQL的“默认”实例;也就是说,安装在“通常”位置的那个,以及标准配置路径。虽然这是为了迎合最常见的情况,但您所追求的有点不同,因此您需要创建单独的脚本来启动单独的实例。 如果你计划在同一台机器上部署很多MySQL实例(我不得不问为什么),那么你可能想编写一个自定义的init脚本,它有一些方法可以“发现”这些内容(也许)通过检查包含“公共”布局的某个目录,然后遍历它们,从每个目录开始。当然,相同的init脚本需要能够定位并正确关闭每个脚本。     

bab

我认为唯一可靠的方法是使用前缀选项从源代码编译。要么是这样,要么创建一个使用--defaults-file选项启动mysql2的bash脚本,然后使用它来启动它。 但是,按照您的方式“创建”另一个安装并不好。编译包时,PREFIX被硬编码到可执行文件中。因此,每当它查找资源时,它都从该前缀开始,除非告诉不要使用命令行选项。 所以,如果我是你,我只需要使用新的前缀从源代码重新编译。     

要回复问题请先登录注册