MySQL™ 参考手册(在Linux上安装MySQL)

在Linux上安装MySQL

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

类型 安装方法
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),由于这些版本一般不在原生存储库中提供。c++

对于许多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包(并不是全部的包都适用于全部发行版)。sql

在你开始以前

做为一种流行的开源软件,MySQL以其原始或从新打包的形式普遍安装在许多系统上,来自各类来源,包括不一样的软件下载站点、软件存储库等等,如下说明假定你的系统上还没有使用第三方发行的RPM软件包安装MySQL。shell

彻底安装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的系统,该命令采用如下形式:oracle

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

对于基于EL7的系统:ide

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值 预期用途
el六、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。

相关文章
相关标签/搜索