mysql - `brew services start mysql` 和 `mysql.server start` 之间的区别

标签 mysql homebrew

我使用 Homebrew 软件 brew install mysql 安装了 MySQL,我注意到可以使用两种不同的方法管理 MySQL:

brew服务启动mysql

mysql.server 启动

使用 brew services 启动服务与使用普通的 mysql.server 方法启动服务有什么不同吗?或者它们基本上是同一个东西,只是一个不同的别名?

看起来它们都使用相同的可执行文件:/usr/local/Cellar/mysql/5.7.17/bin/mysqld

谢谢你的帮助!

最佳答案

根据brew services的帮助信息,当你运行

brew services start mysql

它会在登录时安装并启动服务公式(如果您使用 sudo 运行命令,则在启动时)。这意味着您现在将在 ~/Library/LaunchAgents 中拥有一个 plist 文件(如果您使用 sudo 运行命令,则在 /Library/LaunchDaemons 中).对于mysql,plist文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>KeepAlive</key>
  <true/>
  <key>Label</key>
  <string>homebrew.mxcl.mysql</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/opt/mysql/bin/mysqld_safe</string>
    <string>--bind-address=127.0.0.1</string>
    <string>--datadir=/usr/local/var/mysql</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>WorkingDirectory</key>
  <string>/usr/local/var/mysql</string>
</dict>
</plist> 

这意味着默认情况下 mysqld_safe--bind-address=127.0.0.1--datadir=/usr/local/var 调用/mysql 命令行选项。

运行的时候

mysql.server start

你直接执行位于/usr/local/bin/mysql.server的mysql脚本。

主要区别在于,对于 brew services 版本,您运行 mysqld_safe,根据其 man 页面:

adds some safety features such as restarting the server when an error occurs and logging runtime information to an error log file.

关于mysql - `brew services start mysql` 和 `mysql.server start` 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43418955/

相关文章:

python - 由于错误卸载Python而在Mac上破坏了Python,如何让模块再次工作?

mysql.server 重新启动给出错误消息

macos - HomeBrew:错误-/usr/local/Cellar不可写

php - Apache 不加载 libphp7.so 模块

mysql - 在 Django ORM 中按相关模型字段过滤模型

javascript - 连续下拉过滤缺少默认选择值

php - mysqli_query 和 bind_param 之间性能差异 10 倍(PHP 7)

PHP - 将 PDO 与 IN 子句数组一起使用

php - 无需支付的电子购物系统

仅对一个文件的 Git pull 请求