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

时间:2017-04-14 20:42:13

标签: mysql homebrew

我使用自制程序brew services start mysql安装了MySQL,我注意到可以使用两种不同的方法管理MySQL:

mysql.server start

/usr/local/Cellar/mysql/5.7.17/bin/mysqld

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

它们似乎都使用相同的可执行文件:<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_input_spot_from_to_cl" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimary" android:padding="10dp"> <ImageView android:id="@+id/circle1_iv" android:layout_width="10dp" android:layout_height="10dp" app:layout_constraintBottom_toTopOf="@+id/circle2_iv" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" app:srcCompat="@drawable/circle" /> <ImageView android:id="@+id/circle2_iv" android:layout_width="4dp" android:layout_height="4dp" app:layout_constraintBottom_toTopOf="@+id/circle3_iv" app:layout_constraintLeft_toLeftOf="@+id/circle3_iv" app:layout_constraintRight_toRightOf="@+id/circle3_iv" app:layout_constraintTop_toBottomOf="@+id/circle1_iv" app:srcCompat="@drawable/circle" /> <ImageView android:id="@+id/circle3_iv" android:layout_width="4dp" android:layout_height="4dp" app:layout_constraintBottom_toTopOf="@+id/circle4_iv" app:layout_constraintLeft_toLeftOf="@+id/circle4_iv" app:layout_constraintRight_toRightOf="@+id/circle4_iv" app:layout_constraintTop_toBottomOf="@+id/circle2_iv" app:srcCompat="@drawable/circle" /> <ImageView android:id="@+id/circle4_iv" android:layout_width="10dp" android:layout_height="10dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@+id/circle3_iv" app:srcCompat="@drawable/circle" /> <EditText android:id="@+id/main_input_spot_from_et" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="14dp" android:layout_marginStart="14dp" android:background="#00000000" android:ellipsize="end" android:hint="From Station" android:inputType="textAutoComplete" android:paddingRight="6dp" android:textSize="15sp" app:layout_constraintBottom_toBottomOf="@+id/circle1_iv" app:layout_constraintLeft_toRightOf="@+id/circle1_iv" app:layout_constraintTop_toTopOf="@+id/circle1_iv" /> </android.support.constraint.ConstraintLayout>

感谢您的帮助!

1 个答案:

答案 0 :(得分:11)

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

brew services start mysql

它在登录时安装并启动服务公式(如果使用sudo运行命令,则启动)。这意味着您现在将拥有~/Library/LaunchAgents中的plist文件(如果使用/Library/LaunchDaemons运行命令,则在sudo中)。对于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

  

添加了一些安全功能,例如在发生错误时重新启动服务器并将运行时信息记录到错误日志文件中。