MySQL 是目前最流行的开源数据库。如果你想选择一个适用于你应用程序,并且学习资料丰富,易于使用的数据库,那么 MySQL 必定会是选择之一。
MySQL 最新版本 MySQL 8 已经发布,官方表示 MySQL 8 要比 MySQL 5.7 快两倍,并带来了大量的改进和更好的性能,同时也解决了很多之前长期存在的问题。
本文将着重介绍 MySQL 8 服务器的安装,以及安装、升级过程中的注意事项。
【注意】本文基于 MySQL 8 的社区开源版本,而非企业版。企业版具有更多高级功能,仅提供给具有商业许可证的企业。
下载 MySQL 8
MySQL 8 下载站点 。
【注意】您需要从“ Select Operating System ”下拉菜单中选择操作系统。否则,该网站将默认浏览器检测到的操作系统提供下载。
安装 MySQL 8
设置 MySQL 的过程因目标操作系统的不同而异。
l Microsoft Windows 和 MacOS 用户可以下载并运行基于 GUI 的安装程序。这将引导用户完成设置过程,并为常见配置选项提供默认值。
l Linux 用户可以下载 Oracle 提供的通用二进制文件,也可以通过 Linux 发行版的软件包管理系统安装 MySQL 。
在 Linux 上安装 MySQL 时的注意事项:
l MySQL 至少最新版,可能无法在给定的 Linux 发行版的默认软件资源库中使用。例如,在 Fedora Linux 上,您可能需要手动向包管理系统添加 MySQL 存储库,然后从该存储库安装。
l 除非您完全卸载以前的版本,否则您无法从使用通用 Linux 二进制文件切换到发行版软件包管理器提供的版本。(反过来也是如此。)最好的办法是尽可能使用相同的分配路径,来保持一致性。
MySQL 也可用作 Docker 映像。通过向容器传递命令行标记,可以更改 MySQL 中许多最常见的选项。如果需要更细粒度的控制,可以创建自定义配置文件并将其传递给容器。 ( 如果您是 Docker 专家,可以通过添加层来进一步定制容器映像。 )
Oracle 为许多平台提供的另一个选项是没有安装程序的通用二进制归档。这需要手工设置,主要通过创建和编辑配置文件。优点是,只需删除二进制文件及其支持文件,以后就可以轻松删除整个文件。
从以前的版本升级到 MySQL 8
如果您想从以前版本的 MySQL 升级到 MySQL 8 ,可以选择处理升级的两种常规策略。
【注意】仅支持从 MySQL 7 的 GA 版本(最好是最新的 GA 版本)升级。 非 GA 版本的 MySQL 7 及早期版本的 MySQL (例如 MySQL 6 )的升级不能保证有效。
l 本地升级。 这涉及用 MySQL 8 二进制文件替换现有的 MySQL 7 二进制文件 。
l 导出和重新导入。 MySQL 的文档将此过程称为“ logical upgrade. ”。这可以使用 mysqldump 或 mysqlpump 实用程序执行。
在任何一种情况下,都应确保要升级的数据库没有遗留的兼容性问题。 同时还要关注 你 正在运行平台的升级方法 ,因为 Windows 或 MacOS 系统的升级过程是跟 Linux 进程不一样的。
配置 MySQL 8
MySQL 有很多的配置选项,但好在安装或升级过程的初始阶段,很多是不需要的。
编辑 MySQL 8 配置文件
MySQL 8 的 Microsoft Windows 和 MacOS 图形安装程序会自动选择合理的默认值,让用户了解最重要的选项。这些选择记录在 MySQL 使用的配置文件中。此外, linux 用户还会有一个基本的配置文件 , 其中有一些自动生成的默认值 , 尽管在 Linux 上默认情况下没有添加多少设置。
要找出 MySQL 配置文件的位置,先从 shell 运行 mysql -help ,然后查找“ Default options are read from the following files in the given order. ”的行。配置文件及其位置将在那里列出。
如果 MySQL 配置文件中所有选项的默认值都没有列在配置文件里,您可以在文件的文档中寻找。
一个好的方法是,使用 MySQL 安装中包含的 MySQL Workbench 应用程序来编辑选项文件。 MySQL Workbench 提供了一个选项卡式 GUI ,列出了文件中的每个可能设置以及每个设置的功能描述。一些意外情况也会使 MySQL Workbench 配置文件变得更加困难,比如,不小心插入一个不属于它的 linebreak 。
最初, MySQL Workbench 没有用特定的 MySQL 连接注册的选项文件。要添加选项文件,请执行以下步骤 :
1. 在 MySQL Workbench 主页中,右键单击为其添加选项文件的实例连接,然后选择“ Edit Connection. ”。
2. 在系统配置文件选项卡下,在“ Configuration File ”行中填写选项文件的完整路径。
3. 单击“ Test Connection ”进行测试,确保一切正常。
4. 当您下次打开该连接时,可以通过“ Instance | Options File. ”的方式从左侧树状菜单编辑选项文件设置。
设置 MySQL 8 的 root 密码
如果说 MySQL 设置中有需要的注意事项,那么从一开始就为服务器设置 root 密码,以减少不必要的安全隐患。
MySQL 8 的 Windows 和 MacOS 安装程序在安装过程中会提示用户输入 root 密码,一些用于 MySQL 8 的 Linux 安装程序,比如 Ubuntu 的基于 apt-get 安装,允许用户提供 root MySQL 密码。
在其他情况下,比如使用 Fedora 的 yum 或 dnf 安装程序时, root 密码会随机设置并在 MySQL 的错误日志中回显。这时可以使用命令 sudo grep ‘temporary password’ /var/log/mysqld.log. 显示它。 但该密码应尽快更改并且一定要尽可能复杂。
使用 MySQL 8 的新身份验证方法
如果你想在 Linux 推荐的环境中使用 MySQL Workbench ,那么你需要注意 MySQL 8 中的另一个配置选项。
安装 MySQL 8 时,您将看到新的 SHA-256 密码身份验证方法的选项。 此方法比传统的“ native password ”方法安全得多,因此建议将其作为新安装的默认方法。
但是,这种新方法的主要缺点是与最新版本的 MySQL 客户端软件(尤其是 MySQL Workbench )不兼容。
【注意】客户端软件的最新版本无法由默认安装路径安装所有 Linux 版本。也就是说,如果您从该操作系统的 MySQL 存储库安装一个全新的 MySQL 8 ,比如 Ubuntu 18.04 ,那么 MySQL Workbench 的附带副本将不支持 SHA-256 身份验证!
解决方法:
l 下载 MySQL Workbench 的开发版本 。 这完全取决于是否为你的操作系统构建了开发版本,但大多数 Linux 似乎都有最新开发的二进制版本,这通常是最简单的路径。
l 如果您只允许从 localhost 连接到 MySQL ,则可以避免使用 SHA-256 身份验证,并且不会在安全性方面损失太多。这并不一定是你的永久解决方案,您可以使用旧连接协议,直到获得系统最新版本的客户端软件,然后更改为 新的身份验证方法 。但这意味着您必须更改 MySQL 配置文件中的身份验证方法,并更改 MySQL 用户帐户以匹配。
l 从头开始构建客户端软件。这是最费力的解决方法,只建议那些实在没有其他选择的人选用。
主要 MySQL 8 配置选项
MySQL 8 绝大多数的选项都不需要预先设置。一些如上面提到的客户端安全协议,应该尽早决定,是使用 GUI 安装向导还是手工编辑配置文件。以下是其他几个:。
其他 MySQL 用户
如果可能的话,尽量不要使用 root 账户来连接使用 MySQL 的应用程序。创建一个只有在该应用程序需要的数据库上具有完全权限的帐户。 MySQL Workbench 应用程序只需要几次单击就可以实现这一点。
MySQL 连接协议
MySQL 8 可以通过多种方式 接受到服务器的传入连接 :
l TCP/ IP 。这是连接到 MySQL 实例最广泛的方式,它允许本地和远程连接。 总的来说,它也是最慢的,因为流量必须通过整个 TCP / IP 堆栈,但这通常只存在在极端性能的情况下。对于需要远程客户端连接的情况来说,无论如何 TCP / IP 都是一个简单的方式。 但是同时也需要密切关注连接的安全性。
l Unix sockets/named pipes 。这些是 Unix / Linux 和 Windows 中两个大致相同的功能。 当客户端或应用程序和服务器位于同一系统上时, Sockets 和 pipes 最佳,因为数据可以更快地在客户端和服务器之间传输,也可以通过网络发布这样的连接,但这样做很麻烦,这种情况下,你最好只使用 TCP / IP 。
l 共享内存。 这是服务器和客户端之间最快的连接选项,但也是最不灵活的。 它仅在服务器和客户端位于同一物理系统上时才有效,并且服务器可能难以检测客户端是否已超时或被终止,从而导致未终止的连接累积并浪费资源。
【注意】在 Unix 系统上,为了提高性能, localhost 的任何连接都默认使用 Unix sockets 。
MySQL 日志选项
除了一般的错误日志之外, MySQL 还可以维护其他三种日志,这些日志在默认情况下全部禁用,但在配置过程中可以根据需要启用调试。
l General 。这提供了 MySQL 从启动到关闭的详细运行摘要。
l Slow query 。可以记录任何执行时间超过 x 秒(数量可配置)的查询以进行调试。
l BINLOG 。“二进制日志”的缩写,可以将此日志配置为包含对数据库文件的所有修改的二进制转储。显而易见,这会对性能产生重大影响,所以除非尝试调试真正棘手的问题,否则不应启用它。
默认情况下,日志不会自动清除,因此必须通过 mysql-log-rotate 脚本 定期删除。 Binlogs 是一个例外,默认情况下它会在 30 天后过期。
MySQL 迁移和安装提示
如果您要将现有的 MySQL 数据库迁移到 MySQL 8.0 ,规则很简单:
l 对数据进行完全备份。
l 仅使用 MySQL 5.7 中的数据库进行本地升级。否则,您有两种选择:
a) 导出并重新导入数据。
b) 将现有 MySQL 实例升级到 5.7 ,然后进行本地升级。
在 MySQL 8.0 中创建新数据库时的注意事项:
l 将 InnoDB 用于所有新表。 InnoDB 现在是 MySQL 中新创建表的默认选择。为什么呢?因为有一段时间,传统的 MyISAM 存储引擎比新的 InnoDB 有一些优势,尤其是全文索引。但现在 MySQL 8.0 , InnoDB 支持全文索引,除了行级锁定,事务交易,崩溃恢复,外键约束以及许多其他功能数据库之外,还有许多其他功能不应该放弃。
l 使用 utf8mb4 字符集,但要研究使用的排序规则。 MySQL 8 现在支持 utf8mb4 字符集 ( UTF-8 的一种实现),每个字符最多可存储 4 个字节,以便尽可能广泛地与 Unicode 兼容。默认情况下 , 为新数据库选择了 utf8mb4, 而选择其他内容则没有什么意义。 与此同时,您使用的排序规则要遵循应用程序的需求。默认情况下, MySQL 8 使用通用的 utf8mb4_0900_ai_ci 排序规则,但排序规则不区分重音和大小写 ; 为此,可以改用 utf8mb4_0900_as_cs 。 如果您的大多数工作都是使用特定语言完成的,您或许会想要 更具特定语言的排序规则 。
简而言之,在大多数情况下,默认值通常都是最佳选择,但您仍需要了解实际用例去处理特定语言的问题。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31542119/viewspace-2157800/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31542119/viewspace-2157800/