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