在 macOS 上安装 MySQL
有关 MySQL 服务器支持的 macOS 版本列表,请参阅 https://www.mysql.com/support…。
用于 macOS 的 MySQL 有多种不同的形式:
- 原生程序包安装程序,它使用原生 macOS 安装程序(DMG)引导你完成 MySQL 的安装,你可以将程序包安装程序与 macOS 一起使用,用于执行安装的用户必须具有管理员权限。
- 压缩的 TAR 存档,它使用使用 Unix tar和 gzip 命令打包的文件,要使用此方法,你需要打开终端窗口,使用此方法不需要管理员权限,因为你可以使用此方法在任何地方安装 MySQL 服务器。
在 macOS 上安装 MySQL 的一般注意事项
你应该记住以下问题和注意事项:
-
其他 MySQL 安装:安装过程不承认包管理器(如 Homebrew)的 MySQL 安装,安装和升级过程适用于 oracle 提供的 MySQL 包,如果存在其他安装,请考虑在执行此安装程序之前停止它们以避免端口冲突。
Homebrew:例如,如果你使用 Homebrew 将 MySQL Server 安装到其默认位置,则 MySQL 安装程序将安装到其他位置,并且不会从 Homebrew 升级版本。在这种情况下,你最终会遇到多个 MySQL 安装,默认情况下会尝试使用相同的端口。在运行此安装程序之前停止其他 MySQL Server 实例,例如执行 brew services stop mysql 以停止 Homebrew 的 MySQL 服务。
- Launchd:安装了一个更改 MySQL 配置选项的 launchd 守护程序,如果需要,请考虑编辑它,有关其他信息,请参阅下面的文档。此外,macOS 10.10 删除了启动项支持,支持 launchd 守护进程,macOS System Preferences下的可选 MySQL 首选项窗格使用 launchd 守护程序。
-
用户 :你可能需要(或想要)创建特定的 mysql 用户来拥有 MySQL 目录和数据,你可以通过Directory Utility 执行此操作,并且
mysql
用户应该已经存在。要在单用户模式下使用,_mysql
的条目(注意下划线前缀)应该已存在于系统/etc/passwd
文件中。 -
数据 :因为 MySQL 包安装程序将 MySQL 内容安装到版本和平台特定目录中,所以你可以使用它来在版本之间升级和迁移数据库,你需要将数据目录从旧版本复制到新版本,或者指定备用
datadir
值以设置数据目录的位置,默认情况下,MySQL 目录安装在/usr/local/
下。 -
别名 :你可能希望在 shell 的资源文件中添加别名,以便更轻松地从命令行访问常用程序,如
mysql
和mysqladmin
,bash的语法是:alias mysql=/usr/local/mysql/bin/mysql alias mysqladmin=/usr/local/mysql/bin/mysqladmin
对于tcsh,请使用:
alias mysql /usr/local/mysql/bin/mysql alias mysqladmin /usr/local/mysql/bin/mysqladmin
更好的是,将
/usr/local/mysql/bin
添加到PATH
环境变量中,你可以通过修改 shell 的相应启动文件来完成此操作。 -
删除 :复制先前安装的 MySQL 数据库文件并成功启动新服务器后,应考虑删除旧的安装文件以节省磁盘空间,此外,你还应删除位于
/Library/Receipts/mysql-VERSION.pkg
中的旧版本的 Package Receipt 目录。 - 遗留:在 OS X 10.7 之前,MySQL 服务器与 OS X Server 捆绑在一起。
使用原生软件包在 macOS 上安装 MySQL
该软件包位于磁盘映像(.dmg
)文件中,你首先需要通过在 Finder 中双击其图标来装载该文件,然后它应该挂载映像并显示其内容。
在继续安装之前,请确保通过使用 MySQL Manager 应用程序(在 macOS Server 上)、首选项窗格或在命令行上使用
mysqladmin shutdown
来停止所有正在运行的 MySQL 服务器实例。
要使用软件包安装程序安装 MySQL:
- 下载包含 MySQL 软件包安装程序的磁盘映像(
.dmg
)文件(此处提供社区版本),双击该文件以装入磁盘映像并查看其内容。双击磁盘中的 MySQL 安装程序包,它根据你下载的 MySQL 版本命名,例如,对于 MySQL 服务器 8.0.19,它可能被命名为
mysql-8.0.19-osx-10.13-x86_64.pkg
。 - 初始向导介绍屏幕引用要安装的 MySQL 服务器版本,单击 Continue 开始安装。
MySQL 社区版显示了相关 GNU 通用公共许可证的副本,单击 Continue,然后单击Agree 继续。
- 在 Installation Type 页面中,你可以单击 Install 以使用所有默认值执行安装向导,单击 Customize 以更改要安装的组件(MySQL 服务器、MySQL 测试、首选项窗格、启动支持 — 默认情况下启用除 MySQL 测试之外的所有组件)。
虽然可以看到 Change Install Location 选项,但无法更改安装位置。
MySQL 软件包安装程序向导:安装类型
MySQL 包安装程序向导:自定义 - 单击 Install 以安装 MySQL Server,如果升级当前的 MySQL Server 安装,安装过程将在此处结束,否则请按照向导的新 MySQL 服务器安装的其他配置步骤进行操作。
- 成功安装新的 MySQL 服务器后,通过选择密码的默认加密类型、定义 root 密码以及启动时启动(或禁用)MySQL 服务器来完成配置步骤。
- 默认的 MySQL 8.0 密码机制是
caching_sha2_password
(强),此步骤允许你将其更改为mysql_native_password
(遗留)。选择旧密码机制会更改生成的 launchd 文件以在
ProgramArguments
下设置--default_authentication_plugin=mysql_native_password
。选择强密码加密不会设置--default_authentication_plugin
,因为使用了默认的 MySQL Server 值,即caching_sha2_password
。 - 为 root 用户定义密码,并在配置步骤完成后切换 MySQL Server 是否应该启动。
-
Summary是最后一步,并引用了成功且完整的 MySQL Server 安装,Close向导。
MySQL 服务器现已安装,如果你选择不启动 MySQL,则使用命令行中的 launchctl 或使用 MySQL 首选项窗格单击 Start 启动 MySQL,使用 MySQL Preference Pane 或 launchd 将 MySQL 配置为在启动时自动启动。
使用软件包安装程序进行安装时,文件将安装到 /usr/local
中与安装版本和平台名称相匹配的目录中。例如,安装程序文件 mysql-8.0.19-osx10.13-x86_64.dmg
将 MySQL 安装到/usr/local/mysql-8.0.19-osx10.13-x86_64/
,并带有符号链接到/usr/local/mysql
,下表显示了此 MySQL 安装目录的布局。
目录 | 目录的内容 |
---|---|
bin |
mysqld 服务器、客户端和实用程序 |
data |
日志文件、数据库,其中 /usr/local/mysql/data/mysqld.local.err 是默认错误日志 |
docs |
帮助文档,如发行说明和构建信息 |
include |
包含(头)文件 |
lib |
库 |
man |
Unix 手册页 |
mysql-test |
MySQL 测试套件(使用安装程序包(DMG)时,在安装过程中默认禁用 ’MySQL Test’) |
share |
其他支持文件,包括错误消息、示例配置文件、用于数据库安装的 SQL |
support-files |
脚本和示例配置文件 |
/tmp/mysql.sock |
MySQL Unix socket 的位置 |
安装和使用 MySQL 启动守护程序
macOS 使用启动守护程序自动启动、停止和管理 MySQL 等进程和应用程序。
默认情况下,macOS 上的安装包(DMG)会安装名为 /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
的 launchd 文件,其中包含类似于以下内容的 plist 定义:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key> <string>com.oracle.oss.mysql.mysqld</string>
<key>ProcessType</key> <string>Interactive</string>
<key>Disabled</key> <false/>
<key>RunAtLoad</key> <true/>
<key>KeepAlive</key> <true/>
<key>SessionCreate</key> <true/>
<key>LaunchOnlyOnce</key> <false/>
<key>UserName</key> <string>_mysql</string>
<key>GroupName</key> <string>_mysql</string>
<key>ExitTimeOut</key> <integer>600</integer>
<key>Program</key> <string>/usr/local/mysql/bin/mysqld</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
<string>--basedir=/usr/local/mysql</string>
<string>--datadir=/usr/local/mysql/data</string>
<string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
<string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
<string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
<string>--keyring-file-data=/usr/local/mysql/keyring/keyring</string>
<string>--early-plugin-load=keyring_file=keyring_file.so</string>
</array>
<key>WorkingDirectory</key> <string>/usr/local/mysql</string>
</dict>
</plist>
一些用户报告说,添加 plist DOCTYPE 声明会导致 launchd 操作失败,尽管它通过了 lint 检查,怀疑这是一个 copy-n-paste 错误,包含上述代码段的文件的 md5 校验和是d925f05f6d1b6ee5ce5451b596d6baed。
要启用 launchd 服务,你可以:
- 打开 macOS 系统首选项并选择 MySQL 首选项面板,然后执行 Start MySQL Server。
Instances 页面包含一个启动或停止 MySQL 的选项,Initialize Database重新创建data/
目录,Uninstall卸载 MySQL Server 以及可选的 MySQL 首选项面板和 launchd 信息。
-
或者,手动加载 launchd 文件。
shell> cd /Library/LaunchDaemons shell> sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist
-
要将 MySQL 配置为在启动时自动启动,你可以:
shell> sudo launchctl load -w com.oracle.oss.mysql.mysqld.plist
升级 MySQL 服务器时,launchd 安装过程将删除使用 MySQL 服务器 5.7.7 及更低版本安装的旧启动项,此外,升级将替换名为
com.oracle.oss.mysql.mysqld.plist
的现有 launchd 文件。
额外启动相关信息:
- plist 条目覆盖
my.cnf
条目,因为它们作为命令行参数传入。 -
ProgramArguments部分定义了传递给程序的命令行选项,在这种情况下是
mysqld
二进制文件。 - 默认的 plist 定义是在考虑不太复杂的用例的情况下编写的,对于更复杂的设置,你可能希望删除一些参数,而是依赖于 MySQL 配置文件,例如
my.cnf
。 - 如果编辑 plist 文件,则在重新安装或升级 MySQL 时取消选中安装程序选项,否则,你编辑的 plist 文件将被覆盖,并且所有编辑都将丢失。
因为默认的 plist 定义定义了几个ProgramArguments,所以你可以删除大多数这些参数,而是依赖你的my.cnf
MySQL 配置文件来定义它们。例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key> <string>com.oracle.oss.mysql.mysqld</string>
<key>ProcessType</key> <string>Interactive</string>
<key>Disabled</key> <false/>
<key>RunAtLoad</key> <true/>
<key>KeepAlive</key> <true/>
<key>SessionCreate</key> <true/>
<key>LaunchOnlyOnce</key> <false/>
<key>UserName</key> <string>_mysql</string>
<key>GroupName</key> <string>_mysql</string>
<key>ExitTimeOut</key> <integer>600</integer>
<key>Program</key> <string>/usr/local/mysql/bin/mysqld</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
<string>--basedir=/usr/local/mysql</string>
<string>--datadir=/usr/local/mysql/data</string>
<string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
<string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
<string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
<string>--keyring-file-data=/usr/local/mysql/keyring/keyring</string>
<string>--early-plugin-load=keyring_file=keyring_file.so</string>
</array>
<key>WorkingDirectory</key> <string>/usr/local/mysql</string>
</dict>
</plist>
在这种情况下,basedir
、datadir
、plugin_dir
、log_error
、pid_file
,keyring_file_data
和 --early-plugin-load
选项已从默认的 plist ProgramArguments定义中删除,你可能已经在 my.cnf
中定义了该定义。
安装和使用 MySQL 首选项窗格
MySQL 安装包包含一个 MySQL 首选项窗格,使你可以在启动 MySQL 安装期间启动、停止和控制自动启动。
此首选项窗格默认安装,并列在系统的“系统偏好设置”窗口下。
MySQL 首选项窗格安装有安装 MySQL Server 的相同 DMG 文件,通常它与 MySQL Server 一起安装,但它也可以自己安装。
要安装 MySQL 首选项窗格:
- 完成安装 MySQL 服务器的过程。
- 单击 Installation Type 步骤中的 Customize,Preference Pane 选项列在那里并默认启用,确保没有取消选择,可以选择或选择其他选项,例如 MySQL Server。
-
完成安装过程。
MySQL 首选项窗格仅启动和停止从已安装在默认位置的 MySQL 软件包安装中安装的 MySQL 安装。
安装 MySQL 首选项窗格后,你可以使用此首选项窗格控制 MySQL 服务器实例。
Instances页面包含启动和停止 MySQL 的选项,Initialize Database重新创建 data/ 目录,Uninstall卸载 MySQL Server 以及可选的 MySQL 首选项面板和 launchd 信息。
Configuration页面显示 MySQL Server 选项,包括 MySQL 配置文件的路径。
MySQL 首选项窗格显示 MySQL 服务器的当前状态,如果服务器未运行,则显示stopped(红色),如果服务器running,则运行(绿色),首选项窗格还显示 MySQL 服务器是否已设置为自动启动的当前设置。