在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-manager或dnf 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_password
,validate_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软件存储库:
- MySQL Yum存储库
- MySQL SLES存储库
- 从MySQL Developer Zone中的下载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
distribution和arch值表示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-server
、mysql-community-client
、mysql-community-libs
、mysql-community-common
和mysql-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)命令(如stop
、start
、status
和restart
)来管理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_password
,validate_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。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。