【问题标题】:Where does the my.cnf resides on macOS High Sierra?my.cnf 位于 macOS High Sierra 上的哪个位置?
【发布时间】:2019-09-24 12:18:40
【问题描述】:

我想在 MySql 服务器严格模式下禁用一些选项,但由于某种原因我什至找不到它的配置文件(my.cnf)

当前安装的MySql: Ver 14.14 Distrib 5.7.20,适用于 macos10.12 (x86_64)

生成的输出
mysql --help

默认选项按给定顺序从以下文件中读取:

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • /usr/local/mysql/etc/my.cnf
  • ~/.my.cnf

但是没有像my.conf这样的文件

我对 SO 做了一些研究工作,但没有一个建议对我有用。

我该怎么办?

【问题讨论】:

    标签: mysql macos


    【解决方案1】:

    MySQL 中内置了默认值。配置文件,如果有,会覆盖默认值。

    请注意,除了启动期间,不会查看配置文件。因此,在您重新启动 mysqld 之前,编辑或创建此类文件无效。

    如果您弄乱了语法,mysqld 将无法启动。然后您需要在启动期间或在日志文件中找到错误。 (或者你可以在这里问“我的语法错误是什么”。)

    至于将使用的配置文件的位置和名称:

    $ mysql --help
    

    为您提供mysql 的列表,但也许您的服务器需要它,所以试试

    $ mysqld --help --verbose
    

    给你长输出;可能距离顶部 50 行,您应该会看到如下内容:

    Usage: mysqld [OPTIONS]
    
    Default options are read from the following files in the given order:
    /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 
    

    您询问了my.conf;是不是打错字了?

    不管怎样,如果这些文件丢失了,你可以创建它们,让它们被 mysql 读取,然后把东西放在前面[mysqld] 这样服务器就会看到它们。

    个人覆盖

    无论默认值和/或配置文件中包含什么内容,您都可以添加到最后给出的文件中。在上面的示例中,它是 your 主目录中的“隐藏”.my.cnf。您需要做的就是创建几行代码:

    [mysql]
    some_setting = somevalue
    [client]
    some_setting = somevalue
    

    这有助于“mysql”命令行工具和/或其他客户端(也许)。

    但如果您需要对服务器 mysqld 进行更改,则它需要位于其他文件之一中。同样,最小值类似于

    [mysqld]
    some_setting = somevalue
    

    注意mysqld 指的是服务器。并且记得重启服务。

    另一个注意事项:如果您看到(在现有配置文件中)!includedir ...,请转到该目录以查找任意数量的其他文件。你可以添加你自己的文件,比如z.cnf(所以它会被最后选择),上面有两行(或更多行)。

    【讨论】:

    • 这就是重点。 @'L'l 也推荐了这种方法。但是问题仍然存在,如果没有这些配置文件,它如何工作?这个文件在 OS 系统上的什么位置?是的,我已经尝试过手动创建文件,处理一些在互联网上找到的默认 my.cnf 内容。经过一段时间的精心设计,我完全放弃了它,因为 mysql 服务器无法再启动。对我来说,我的努力似乎不足以解决我当前的问题
    • @ChristianFelix - 我在答案的开头添加了 4 段;我希望他们能解决您的疑虑。
    • @ChristianFelix - 在我的回答末尾还有更多内容。
    • 这是迄今为止最好的答案。赏金是你的。
    【解决方案2】:

    如果你已经使用 mysql 网站的包安装程序安装了Mysql 8 或以上版本,那么按照我所做的操作

    1. 在您的主目录vim ~/.my.cnf 中创建配置文件
    2. 在mac中打开System preferences

    1. 然后选择您在选项上创建的配置文件。

    【讨论】:

      【解决方案3】:

      this网站上的内容说。

      我迫切需要在我的开发机器上配置 MySQL 5.7 中的一些特定内容,这是一台运行 Mac OS Sierra 的 MacBook Pro。不幸的是,我没有找到可以在任何地方自定义的 my.cnf 文件?

      互联网研究表明,Mac OS 上的 MySQL 数据库服务器默认运行时没有 my.cnf 配置文件,只是使用默认值启动。

      幸运的是,通过创建和编辑自定义 my.cnf 文件来自定义 MySQL 服务器安装非常简单:

      sudo cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf Then edit / customize the /etc/my.cnf 文件并重新启动您的 MySQL 服务器。

      或者你可以参考这个answer

      【讨论】:

      • 仅链接的答案通常没有帮助。即使用户无法访问链接(例如,因为内容已被删除),每个答案至少应该提供大量价值。链接可能是有用的additions,但我建议不要发布nothing只是链接的答案。
      • 在发布此问题之前我也做了一些研究工作......但如前所述,我的系统上没有 my-default .cnf 这样的文件。
      • 不幸的是,不同的系统(Windows、Ubuntu、Linux、Max、WAMP、LAMP、Percona 等)选择将配置文件和/或默认示例放在不同名称的不同位置。
      【解决方案4】:

      你可以试试:

      $ locate mysql | grep my.cnf
      

      如果存在,它应该显示位置。

      【讨论】:

      • 没有结果。我也使用过: sudo find / -name *.cnf -type f ... 并找到了一些文件,但没有与 mysql 相关的文件
      • @ChristianFelix:which mysql 的输出是什么?
      • 也没有结果...mysql服务器仍在运行
      • @ChristianFelix:这完全没有意义;试试ps -ax | grep mysql
      • _mysql 96 0,0 0,1 4677960 4348 ?? SS 27Apr19 0:29.64 /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr /local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid -- keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so philip
      猜你喜欢
      • 2012-06-01
      • 2018-10-23
      • 1970-01-01
      • 2018-03-07
      • 2018-03-29
      • 2018-12-05
      • 1970-01-01
      • 2018-08-06
      相关资源
      最近更新 更多