在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服务器是否已设置为自动启动的当前设置。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。