在Linux上安装MySQL

Linux支持许多不同的安装MySQL的解决方案,建议使用Oracle提供的发行版中之一,其中有几种安装方法可供使用:

类型 安装方法
Apt 启用MySQL Apt存储库
Yum 启用MySQL Yum存储库
Zypper 启用MySQL SLES存储库
RPM 下载特定包
DEB 下载特定包
Generic 下载通用包
Source 源代码编译
Docker 使用Docker Hub for MySQL Community Edition
My Oracle Support下载MySQL Enterprise Edition的Docker镜像
Oracle Unbreakable Linux Network 使用ULN渠道

作为备选项,你可以使用系统上的软件包管理器自动从Linux发行版的原生软件存储库下载和安装MySQL软件包,这些原生包通常是当前可用版本的几个版本。你通常也无法安装开发里程碑版本(DMR),因为这些版本通常不在原生存储库中提供。

对于许多Linux安装,你需要设置MySQL以在计算机启动时自动启动,许多原生程序包安装都会为你执行此操作,但对于源代码、二进制和RPM解决方案,你可能需要单独进行此设置。所需的脚本mysql.server可以在MySQL安装目录下的support-files目录中找到,也可以在MySQL源代码树中找到,你可以将其安装为/etc/init.d/mysql以自动启动和关闭MySQL。

使用MySQL Yum存储库在Linux上安装MySQL

Oracle Linux、Red Hat Enterprise Linux、CentOS和Fedora的MySQL Yum存储库提供了用于安装MySQL服务器、客户端、MySQL Workbench、MySQL实用程序、MySQL路由器、MySQL Shell、Connector/ODBC、Connector/Python等的RPM包(并非所有的包都适用于所有发行版)。

在你开始之前

作为一种流行的开源软件,MySQL以其原始或重新打包的形式广泛安装在许多系统上,来自各种来源,包括不同的软件下载站点、软件存储库等等,以下说明假定你的系统上尚未使用第三方发行的RPM软件包安装MySQL。

完全安装MySQL的步骤

按照以下步骤使用MySQL Yum存储库安装最新的GA版本的MySQL:

添加MySQL Yum存储库

首先,将MySQL Yum存储库添加到系统的存储库列表中,这是一次性操作,可以通过安装MySQL提供的RPM来执行,跟着这些步骤:

  • 转到MySQL Developer Zone中的下载MySQL Yum存储库页面(https://dev.mysql.com/downloa...)。
  • 选择并下载适用于你的平台的发行包。
  • 使用以下命令安装下载的发行包,将platform-and-version-specific-package-name替换为下载的RPM包的名称:
shell> sudo yum localinstall platform-and-version-specific-package-name.rpm

对于基于EL6的系统,该命令采用以下形式:

shell> sudo yum localinstall mysql80-community-release-el6-{version-number}.noarch.rpm

对于基于EL7的系统:

shell> sudo yum localinstall mysql80-community-release-el7-{version-number}.noarch.rpm

对于Fedora 30:

shell> sudo dnf localinstall mysql80-community-release-fc30-{version-number}.noarch.rpm

对于Fedora 29:

shell> sudo dnf localinstall mysql80-community-release-fc29-{version-number}.noarch.rpm

安装命令将MySQL Yum存储库添加到系统的存储库列表中,并下载GnuPG密钥以检查软件包的完整性。

你可以通过以下命令检查MySQL Yum存储库是否已成功添加(对于启用了dnf的系统,使用dnf替换命令中的yum):

shell> yum repolist enabled | grep "mysql.*-community.*"
一旦在你的系统上启用了MySQL Yum存储库,Yum update命令(或支持dnf的系统的dnf upgrade)执行的任何系统范围内的更新都将在你的系统上升级MySQL包,并且如果Yum在MySQL Yum存储库中找到替代包,还将替换任何原生第三方包。
选择发行系列

使用MySQL Yum存储库时,默认选择安装最新的GA系列(当前为MySQL 8.0),如果这是你想要的,你可以跳到下一步,安装MySQL。

在MySQL Yum存储库中,MySQL社区服务器的不同发行版系列托管在不同的子存储库中,默认情况下启用最新GA系列(当前为MySQL 8.0)的子存储库,默认情况下禁用所有其他系列的子存储库(例如,MySQL 8.0系列)。使用此命令查看MySQL Yum存储库中的所有子存储库,并查看哪些子存储库已启用或禁用(对于支持dnf的系统,请使用dnf替换命令中的yum):

shell> yum repolist all | grep mysql

要从最新的GA系列安装最新版本,无需进行任何配置,要从最新GA系列以外的特定系列安装最新版本,请在运行安装命令之前禁用最新GA系列的子存储库并启用特定系列的子存储库。如果你的平台支持yum-config-manager,你可以通过发出这些命令来执行此操作,这些命令禁用5.7系列的子存储库并启用8.0系列的子存储库:

shell> sudo yum-config-manager --disable mysql57-community
shell> sudo yum-config-manager --enable mysql80-community

对于支持dnf的平台:

shell> sudo dnf config-manager --disable mysql57-community
shell> sudo dnf config-manager --enable mysql80-community

除了使用yum-config-managerdnf config-manager命令外,你还可以通过手动编辑/etc/yum.repos.d/mysql-community.repo文件来选择发行系列,这是文件中发行系列的子存储库的典型条目:

[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

找到要配置的子存储库的条目,然后编辑enabled选项,指定enabled=0以禁用子存储库,或者enabled=1以启用子存储库。例如,要安装MySQL 8.0,请确保为MySQL 5.7的上述子存储库条目enabled=0,并且对于8.0系列的条目enabled=1

# Enable to use MySQL 8.0
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

你应该只在任何时候为一个发行系列启用子存储库,当启用多个版本系列的子存储库时,Yum将使用最新的系列。

通过运行以下命令并检查其输出来验证是否已启用和禁用了正确的子存储库(对于启用dnf的系统,请使用dnf替换命令中的yum):

shell> yum repolist enabled | grep mysql
安装MySQL

通过以下命令安装MySQL(对于支持dnf的系统,使用dnf替换命令中的yum):

shell> sudo yum install mysql-community-server

这将安装MySQL服务器(mysql-community-server)的软件包以及运行服务器所需组件的软件包,包括客户端的包(mysql-community-client),客户端和服务器的常见错误消息和字符集(mysql-community-common),以及共享客户端库(mysql-community-libs)。

启动MySQL Server

使用以下命令启动MySQL服务器:

shell> sudo service mysqld start
Starting mysqld:[ OK ]

你可以使用以下命令检查MySQL服务器的状态:

shell> sudo service mysqld status
mysqld (pid 3066) is running.

在服务器初始启动时,如果服务器的数据目录为空,则会发生以下情况:

  • 服务器已初始化。
  • SSL证书和密钥文件在数据目录中生成。
  • validate_password已安装并启用。
  • 创建超级用户帐户'root'@'localhost',设置超级用户的密码并将其存储在error log文件中,要显示它,请使用以下命令:
shell> sudo grep 'temporary password' /var/log/mysqld.log

通过使用生成的临时密码登录并为超级用户帐户设置自定义密码,尽快更改root密码:

shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
默认情况下安装validate_passwordvalidate_password实现的默认密码策略要求密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符,并且密码长度至少为8个字符。

基于EL7的平台的兼容性信息:以下来自平台的原生软件存储库的RPM软件包与安装MySQL服务器的MySQL Yum存储库中的软件包不兼容。使用MySQL Yum存储库安装MySQL后,你将无法安装这些软件包(反之亦然)。

  • akonadi-mysql

使用Yum安装额外MySQL产品和组件

你可以使用Yum来安装和管理MySQL的各个组件,其中一些组件托管在MySQL Yum存储库的子存储库中:例如,MySQL Connectors可以在MySQL Connectors社区子存储库中找到,而MySQL Workbench可以在MySQL Tools社区中找到。你可以使用以下命令从MySQL Yum存储库列出适用于你的平台的所有MySQL组件的软件包(对于支持dnf的系统,使用dnf替换命令中的yum):

shell> sudo yum --disablerepo=\* --enablerepo='mysql*-community*' list available

使用以下命令安装你选择的任何软件包,将package-name替换为软件包的名称(对于支持dnf的系统,请使用dnf替换命令中的yum):

shell> sudo yum install package-name

例如,要在Fedora上安装MySQL Workbench:

shell> sudo dnf install mysql-workbench-community

要安装共享客户端库(对于支持dnf的系统,请使用dnf替换命令中的yum):

shell> sudo yum install mysql-community-libs

特定于平台的说明

ARM支持

Oracle Linux 7支持ARM 64位(aarch64),需要Oracle Linux 7软件集合存储库(ol7_software_collections),例如,要安装服务器:

shell> yum-config-manager --enable ol7_software_collections
shell> yum install mysql-community-server
从MySQL 8.0.12开始,Oracle Linux 7支持ARM 64位(aarch64)。
已知限制

8.0.12版本要求你在执行yum install步骤后执行ln /opt/oracle/oracle-armtoolset-1/root/usr/lib64 /usr/lib64/gcc7来调整libstdc++ 7路径。

用Yum更新MySQL

除了安装,你还可以使用MySQL Yum存储库对MySQL产品和组件执行更新。

使用MySQL APT存储库在Linux上安装MySQL

MySQL APT存储库提供了用于在以下Linux平台上安装和管理MySQL服务器、客户端和其他组件的deb软件包:

  • Debian 9
  • Ubuntu 16.04,17.10和18.04

有关使用MySQL APT存储库的说明,请参阅使用MySQL APT存储库的快速指南

使用MySQL SLES存储库在Linux上安装MySQL

MySQL SLES存储库提供RPM软件包,用于在SUSE Enterprise Linux Server上安装和管理MySQL服务器、客户端和其他组件。

有关使用MySQL SLES存储库的说明,请参阅使用MySQL SLES存储库的快速指南

使用Oracle的RPM软件包在Linux上安装MySQL

在基于RPM的Linux发行版上安装MySQL的推荐方法是使用Oracle提供的RPM包,对于社区版MySQL,有两个获取它们的来源:

MySQL的RPM发行版也由其他供应商提供,请注意,它们可能与Oracle在特性、功能和约定(包括通信设置)中构建的不同,并且本手册中的安装说明不一定适用于它们,应该咨询供应商的说明。

MySQL RPM包

MySQL社区版的RPM包
包名 概要
mysql-community-client MySQL客户端应用程序和工具
mysql-community-common 服务器和客户端库的公共文件
mysql-community-devel 用于MySQL数据库客户端应用程序的开发头文件和库
mysql-community-embedded-compat MySQL服务器作为嵌入式库,兼容使用库版本18的应用程序
mysql-community-libs MySQL数据库客户端应用程序的共享库
mysql-community-libs-compat 以前的MySQL安装的共享兼容库
mysql-community-server 数据库服务器和相关工具
mysql-community-server-debug Debug服务器和插件二进制文件
mysql-community-test MySQL服务器的测试套件
mysql-community 源代码RPM看起来类似于mysql-community-8.0.19-1.el7.src.rpm,具体取决于所选的操作系统
MySQL企业版的RPM包
包名 概要
mysql-commercial-backup MySQL企业备份(在8.0.11中添加)
mysql-commercial-client MySQL客户端应用程序和工具
mysql-commercial-common 服务器和客户端库的公共文件
mysql-commercial-devel 用于MySQL数据库客户端应用程序的开发头文件和库
mysql-commercial-embedded-compat MySQL服务器作为嵌入式库,兼容使用库版本18的应用程序
mysql-commercial-libs MySQL数据库客户端应用程序的共享库
mysql-commercial-libs-compat 以前的MySQL安装的共享兼容库
库的版本与你正在使用的发行默认安装的库的版本匹配
mysql-commercial-server 数据库服务器和相关工具
mysql-commercial-test MySQL服务器的测试套件

RPM的全名具有以下语法:

packagename-version-distribution-arch.rpm

distributionarch值表示Linux发行版和构建包的处理器类型,有关发行版标识符的列表,请参阅下表:

distribution值 预期用途
el6、el7 Red Hat Enterprise Linux/Oracle Linux/CentOS 6 或 7
fc29 fc30 Fedora 29和30
sles12 SUSE Linux Enterprise Server 12

要查看RPM包中的所有文件(例如,mysql-community-server),请使用以下命令:

shell> rpm -qpl mysql-community-server-version-distribution-arch.rpm

本节其余部分的讨论仅适用于使用直接从Oracle下载的RPM软件包而不是通过MySQL存储库的安装过程。

某些包之间存在依赖关系,如果你计划安装许多软件包,你可能希望下载RPM软件包tar文件,其中包含上面列出的所有RPM软件包,因此你无需单独下载它们。

在大多数情况下,你需要安装mysql-community-servermysql-community-clientmysql-community-libsmysql-community-commonmysql-community-libs-compat软件包才能获得功能齐全的标准MySQL安装。要执行此类标准的基本安装,请转到包含所有这些软件包的文件夹(最好不要包含其他具有相似名称的RPM软件包),然后发出以下命令:

shell> sudo yum install mysql-community-{server,client,common,libs}-*

zypper替换yum用于SLES,用dnf替换yum用于Fedora。

虽然使用像yum这样的高级包管理工具来安装软件包更为可取,但是喜欢直接rpm命令的用户可以使用rpm -Uvh命令替换yum install命令,但是,使用rpm -Uvh会使安装过程更容易出错,因为安装过程可能会遇到潜在的依赖性问题。

要仅安装客户端程序,可以跳过要安装的软件包列表中的mysql-community-server,发出以下命令:

shell> sudo yum install mysql-community-{client,common,libs}-*

zypper替换yum用于SLES,用dnf替换yum用于Fedora。

使用RPM软件包的MySQL标准安装会导致在系统目录下创建文件和资源,如下表所示。

来自MySQL Developer Zone的Linux RPM软件包的MySQL安装布局

文件或资源 位置
客户端程序和脚本 /usr/bin
mysqld服务器 /usr/sbin
配置文件 /etc/my.cnf
数据目录 /var/lib/mysql
错误日志文件 对于RHEL、Oracle Linux、CentOS或Fedora平台:/var/log/mysqld.log
对于SLES:/var/log/mysql/mysqld.log
secure_file_priv的值 /var/lib/mysql-files
System V init脚本 对于RHEL、Oracle Linux、CentOS或Fedora平台:/etc/init.d/mysqld
对于SLES:/etc/init.d/mysql
Systemd service 对于RHEL、Oracle Linux、CentOS或Fedora平台:mysqld
对于SLES:mysql
Pid文件 /var/run/mysql/mysqld.pid
Socket /var/lib/mysql/mysql.sock
密钥串目录 /var/lib/mysql-keyring
Unix手册页 /usr/share/man
包含(头)文件 /usr/include/mysql
/usr/lib/mysql
其他支持文件(例如,错误消息和字符集文件) /usr/share/mysql

安装还会在系统上创建名为mysql的用户和名为mysql的组。

使用旧软件包安装以前版本的MySQL可能会创建一个名为/usr/my.cnf的配置文件,强烈建议你检查文件的内容并将所需的设置迁移到文件/etc/my.cnf文件中,然后删除/usr/my.cnf

MySQL不会在安装过程结束时自动启动,对于Red Hat Enterprise Linux、Oracle Linux、CentOS和Fedora系统,请使用以下命令启动MySQL:

shell> systemctl start mysqld

对于SLES系统,命令相同,但服务名称不同:

shell> systemctl start mysql

如果操作系统已启用systemd,则应使用标准systemctl(或者带有反转参数的service)命令(如stopstartstatusrestart)来管理MySQL服务器服务。mysqld服务默认启用,它在系统重启时启动,请注意,某些事情在systemd平台上可能会有所不同:例如,更改数据目录的位置可能会导致问题。

在使用RPM软件包进行升级安装期间,如果升级发生时MySQL服务器正在运行,则MySQL服务器将停止,升级发生,MySQL服务器重新启动。一个例外:如果版本在升级过程中也发生了变化(例如社区变为商业版,反之亦然),则MySQL服务器不会重新启动。

在服务器初始启动时,如果服务器的数据目录为空,则会发生以下情况:

  • 服务器已初始化
  • 在数据目录中生成SSL证书和密钥文件。
  • validate_password已安装并启用。
  • 创建超级用户帐户'root'@'localhost',设置超级用户的密码并将其存储在错误日志文件中,要显示它,请对RHEL、Oracle Linux、CentOS和Fedora系统使用以下命令:
shell> sudo grep 'temporary password' /var/log/mysqld.log

对SLES系统使用以下命令:

shell> sudo grep 'temporary password' /var/log/mysql/mysqld.log

下一步是使用生成的临时密码登录并为超级用户帐户设置自定义密码:

shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
默认情况下安装validate_passwordvalidate_password实现的默认密码策略要求密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符,并且密码长度至少为8个字符。

如果在安装过程中出现问题,你可能会在错误日志文件/var/log/mysqld.log中找到调试信息。

从多个MySQL版本安装客户端库。可以安装多个客户端库版本,例如,你希望保持与以前库链接的旧应用程序的兼容性,要安装较旧的客户端库,请使用rpm--oldpackage选项。例如,要在具有来自MySQL 8.0的libmysqlclient.21的EL6系统上安装mysql-community-libs-5.5,请使用如下命令:

shell> rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm

调试包。使用调试包编译的MySQL Server的特殊变体已包含在服务器RPM包中,它执行调试和内存分配检查,并在服务器运行时生成跟踪文件,要使用该调试版本,请使用/usr/sbin/mysqld-debug启动MySQL,而不是将其作为服务启动或使用/usr/sbin/mysqld启动。

在MySQL 8.0.4中调试版本的默认插件目录从/usr/lib64/mysql/plugin更改为/usr/lib64/ mysql/plugin/debug,在此之前,有必要将plugin_dir更改为/usr/lib64/mysql/plugin/debug以进行调试构建。

从源SRPM重建RPM。源代码MySQL的SRPM包可供下载,它们可以按原样用于使用标准rpmbuild工具链重建MySQL RPM。



博弈
2.5k 声望1.5k 粉丝

态度决定一切