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。
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 Yum存储库安装最新的GA版本的MySQL:数据库
首先,将MySQL Yum存储库添加到系统的存储库列表中,这是一次性操做,能够经过安装MySQL提供的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-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(对于支持dnf的系统,使用dnf替换命令中的yum):
shell> sudo yum install mysql-community-server
这将安装MySQL服务器(mysql-community-server
)的软件包以及运行服务器所需组件的软件包,包括客户端的包(mysql-community-client
),客户端和服务器的常见错误消息和字符集(mysql-community-common
),以及共享客户端库(mysql-community-libs
)。
使用如下命令启动MySQL服务器:
shell> sudo service mysqld start Starting mysqld:[ OK ]
你可使用如下命令检查MySQL服务器的状态:
shell> sudo service mysqld status mysqld (pid 3066) is running.
在服务器初始启动时,若是服务器的数据目录为空,则会发生如下状况:
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的各个组件,其中一些组件托管在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
路径。
除了安装,你还可使用MySQL Yum存储库对MySQL产品和组件执行更新。
MySQL APT存储库提供了用于在如下Linux平台上安装和管理MySQL服务器、客户端和其余组件的deb
软件包:
有关使用MySQL APT存储库的说明,请参阅使用MySQL APT存储库的快速指南。
MySQL SLES存储库提供RPM软件包,用于在SUSE Enterprise Linux Server上安装和管理MySQL服务器、客户端和其余组件。
有关使用MySQL SLES存储库的说明,请参阅使用MySQL SLES存储库的快速指南。
在基于RPM的Linux发行版上安装MySQL的推荐方法是使用Oracle提供的RPM包,对于社区版MySQL,有两个获取它们的来源:
来自MySQL软件存储库:
MySQL的RPM发行版也由其余供应商提供,请注意,它们可能与Oracle在特性、功能和约定(包括通讯设置)中构建的不一样,而且本手册中的安装说明不必定适用于它们,应该咨询供应商的说明。
包名 | 概要 |
---|---|
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-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值 | 预期用途 |
---|---|
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-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服务器不会从新启动。
在服务器初始启动时,若是服务器的数据目录为空,则会发生如下状况:
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。