· MySQL的介绍
· 在Windows上安装MySQL
· 在Linux上安装MySQL
· 在Docker上安装MySQL
本章将讲解MySQL在Web业务场景下的意义和优势,介绍MySQL 8的特性和作用,并讲述在多种环境下安装MySQL的步骤,以便初学者可以快速开始MySQL的学习。
MySQL是当下流行的关系数据库管理系统(Relational Database Management System,RDBMS),使用C和C++语言编写而成,因而具有源码级的可移植性。MySQL可以在Linux、macOS、Novell NetWare、OpenBSD、Solaris、Windows等多种操作系统中运行。在Web应用方面,MySQL是非常好的关系数据库管理系统应用软件之一。作为一种关系数据库管理系统,它将数据保存在不同的数据表中。MySQL所使用的SQL语言是用于访问数据库的常用标准化语言。由于MySQL体积小、速度快、总拥有成本低,尤其是具有开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版性能卓越,因此搭配各种后端语言可以组成良好的开发环境。此外,MySQL既可以嵌入应用程序中,也可以独立支持数据仓库、全文索引和高可用的冗余系统、在线事务处理系统。另外,MySQL还具有如下特点:
· 为多种编程语言提供了API,这些编程语言包括C、C++、Python、Java、Perl、PHP、Ruby、.NET等。
· 支持多线程,可以充分利用CPU资源。
· 具有优化的SQL查询算法,有效地提高了查询速度。
· 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
· 支持可以处理上千万条记录的大型数据库。
· 支持多种存储引擎,比如InnoDB、MyISAM等。
· MySQL是可以定制的,它采用了GPL协议,因而用户可以通过修改源码来开发自己的MySQL系统。
· 提供多语言支持,常见的编码如中文的GB2312、UTF-8等都可以用作数据表名和数据列名。
· 提供用于管理、检查、优化数据库操作的管理工具。
· 具有在线DDL更改功能,数据架构支持动态应用程序,提高了开发人员操作数据表的灵活性。
· 复制无崩溃从机,可以提高可用性。
· 复制多线程从机,可以提高性能。
在安装MySQL时,应选择自己所需的版本和相应的文件格式。MySQL有开发版本和通用版本。开发版本具有最新功能,但不建议用于生产用途。通用版本可用于生产用途,因此建议安装最新的版本。
MySQL 8.0的版本号由三个数字和一个可选后缀组成,例如MySQL-8.0.3.[x],x可选,如果有,则会随着版本的发布而自增。版本号中的数字解释如下:
· 第一个数字(8)是主版本号。
· 第二个数字(0)是次版本号。主、次版本号一起构成发布的序列号,序列号表示包含稳定的功能集。
· 第三个数字(3)是发布系列中的版本号。每个新的错误修订版的版本号中都会增加此值。一般情况下建议安装最新的版本。
MySQL只能安装在Microsoft Windows 64位操作系统中,如果想要安装MySQL 8.0 Server(服务器版),那么还需要在系统中安装Microsoft Visual C++ 2015 Redistributable Package和Microsoft .NET Framework 4.5.2或更高版本。在安装服务器版本之前,应确保在本地系统中已下载好软件安装包。下面将演示在Windows系统中安装MySQL数据库的两种方式。
进入MySQL官网下载相关安装包,如图1-1所示。第一个安装包用于在线安装,在网络畅通的情况下,可以选用这种安装方式。第二个是可以离线安装的软件包,一般建议采用这种安装方式。
图1-1 下载安装包
首次下载MySQL安装程序时,安装向导会引导我们完成MySQL产品的初始安装。首次安装需要进行初始设置,MySQL安装程序在初始设置期间会检测主机上安装的现有MySQL产品,并将它们添加到要管理的产品列表中。如图1-2所示,当我们打开MSI文件之后,会提示我们选择安装的类型。
图1-2 选择安装的类型
如图1-2所示,总共有5种安装类型。
①Developer Default(默认安装):用于MySQL应用程序的开发。如果我们想要利用MySQL来进行应用程序的开发,可以选择此安装类型。
②Server only(仅安装服务器):仅安装MySQL服务器。此安装类型在下载MySQL服务器安装包时会让用户选择安装GA版(一般可用性,即稳定版)或开发版。该安装类型使用默认的安装路径和数据存储路径。
③Client only(仅安装客户端):仅安装最新的MySQL应用程序和MySQL连接器。此安装类型类似于默认安装类型,不同之处在于它不包括MySQL服务器或通常与服务器捆绑的客户端程序,例如mysql或mysqladmin。
④Full(完整):安装所有可用的MySQL产品。如果是初学者,那么可以选择此安装类型。
⑤Custom(自定义):此安装类型可以从MySQL安装程序目录中筛选想安装的各个MySQL产品。
选择好想要的安装类型,单击Next按钮,就会进入安装需求检查对话框,如图1-3所示。
图1-3 安装需求检查对话框
在安装需求检查对话框中包括如下内容:
①显示初始设置中的当前步骤。读者在此列表中看到的步骤可能会略有不同,具体步骤取决于主机上已安装的产品、必备软件的可用性以及读者想要安装在主机上的产品。
②按产品列出所有待确认的安装需求。
③安装需求的详细说明可以帮助我们解决安装前需要解决的问题。如果需要安装必备的软件,则该界面会提供下载用的网址(URL)。在下载并安装所需的软件后,单击Check按钮来验证是否已经满足安装需求。
④提供以下辅助安装的操作:
· Back:返回上一步。此操作可以让我们回到上一步重新选择安装类型。
· Execute:让MySQL安装程序尝试为所有选择的安装项目下载和安装必备的软件。
· Next:不进行安装需求检查而继续安装产品,其中不包括未通过安装需求检查的产品。
· Cancel:取消安装MySQL产品。
MySQL网络和身份认证配置,如图1-4所示。
图1-4 MySQL网络配置
在该对话框中有以下选项:
①选择需要配置的服务类型。
②默认的服务端口号,①和②这两个配置可以不做修改。
③建议勾选Show Advanced and Logging Options复选框,以便在后续步骤中设置自定义日志记录和高级选项。
继续往下执行,会出现设置密码的对话框,如图1-5所示。
图1-5 账户密码设置
该对话框包含以下内容:
①给服务设置密码。
②重复输入一次以确认密码,应当确保这两次输入的密码一致。
MySQL服务名称设置,如图1-6所示。
图1-6 MySQL服务名称设置
在该对话框中输入MySQL服务的名称,建议使用默认值。
设置MySQL服务相关的输出日志存储的路径,如图1-7所示。
图1-7 设置MySQL服务输出日志存储的路径
在该对话框中包含以下内容:
①设置MySQL服务的错误日志输出路径。
②设置一般的日志输出路径。
③设置查询日志的输出路径。
④设置二进制日志的输出路径。
验证是否安装成功。如图1-8所示,按住键盘上的Windows键,选择“运行”,然后在弹出的对话框中输入services.msc,并按回车键。
图1-8 进入“运行”对话框
接下来会出现如图1-9所示的服务窗口。如果可以看到MySQL 8.0这个服务,就表示MySQL数据库安装成功。
图1-9 系统服务窗口
在服务成功启动之后,可以使用界面化工具Navicat连接数据库,当出现如图1-10所示的对话框时,输入主机名、端口号以及安装时设置的密码。在单击“测试连接”按钮之后,若出现连接成功的字样,则说明安装与配置都正确。
图1-10 通过界面化工具测试连接
表1-1所示是以默认安装类型安装MySQL服务后生成的相关目录,当我们需要查看相关信息或者数据日志时可能会用到。
表1-1 默认安装MySQL服务之后生成的相关目录
使用MySQL Yum存储库安装最新的MySQL GA版本的步骤如下。
要将MySQL Yum存储库添加到系统的存储库列表中,可以使用RPM命令来完成,具体步骤如下:
首先选择并下载适用于目标平台的安装包(发布包)。
我们可以查看目标系统的平台版本(操作系统版本序列号)。如图1-11所示,该平台的版本序列号为7。
图1-11 查看目标系统的操作系统版本序列号
然后下载工具wget,下载完成之后用下面的命令进行安装:
yum install wget -y
接着下载对应版本的RPM文件,因为目前的平台是7系列,所以选择安装7.3版本的RPM文件。执行如下命令进行下载:
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
当出现如图1-12所示的界面时,说明下载成功。
图1-12 下载RPM包
安装命令如下:
yum install platform-and-version-specific-package-name.rpm
需要注意的是,platform-and-version-specific-package-name为下载的RPM包的名称。而后执行如下命令:
yum install mysql80-community-release-el7-3.noarch.rpm -y
如果出现如图1-13所示的Complete说明,就表示发布包安装完成。
图1-13 发布包安装成功
如果使用的是其他系列的版本,那么可以根据实际情况选择安装相应的发布包。
对于基于EL6的系统,命令的形式为:
yum install mysql80-community-release-el6-{version-number}.noarch.rpm
对于基于EL7的系统,命令的形式为:
yum install mysql80-community-release-el7-{version-number}.noarch.rpm
对于基于EL8的系统,命令的形式为:
yum install mysql80-community-release-el8-{version-number}.noarch.rpm
对于Fedora 34,命令的形式为:
dnf install mysql80-community-release-fc34-{version-number}.noarch.rpm
对于Fedora 33,命令的形式为:
dnf install mysql80-community-release-fc33-{version-number}.noarch.rpm
通过以下命令安装MySQL:
yum install mysql-community-server -y
这条命令将安装MySQL服务器包(mysql-community-server)以及运行该服务器所需组件的包,包括客户端包(mysql-community-client)、客户端和服务器的常见错误消息和字符集(mysql-community-common)以及共享客户端库(mysql-community-libs)。如果出现如图1-14所示的信息,就表示安装成功。
图1-14 安装MySQL
使用以下命令启动MySQL服务器:
systemctl start mysqld
使用以下命令检查MySQL服务器的状态:
systemctl status mysqld
查询服务的状态,显示running时表示服务已经启动,如图1-15所示。
图1-15 MySQL服务状态
需要注意的是,如果操作系统已启用systemd,则应使用标准systemctl(或service)命令(例如stop、start、status和restart)来管理MySQL服务器的服务。mysqld服务默认是启用的(在系统重新启动时启用了)。
在安装MySQL服务时系统创建了一个超级用户账户(root)。超级用户的密码已设置并存储在错误日志文件中,如果我们想要知道密码,可以使用如下命令进行查询:
grep 'temporary password' /var/log/mysqld.log
如图1-16所示,最后输出的字符串就是想要查看的密码。
图1-16 想要查看的密码
我们使用生成的临时密码登录并为超级用户账户设置自定义密码,以便尽快更改root密码。首先执行下面的命令进行登录:
mysql -uroot -p
如图1-17所示,在登录过程中需要输入密码,可以输入之前查询到的密码进行登录。
图1-17 MySQL登录
然后执行如下命令修改密码:
alter user 'root'@'localhost' identified by 'NewPass';
在修改密码时注意密码要尽量复杂,需要包含数字、大小写字母和标记符号,否则系统会出现如图1-18所示的提示,提示密码修改出错。
图1-18 修改MySQL账户的密码
Docker是一个用于开发、交付和运行应用程序的开放平台。Docker能够将应用程序与基础架构分开,从而快速交付软件。借助Docker,可以采用与管理应用程序相同的方式来管理基础架构。
Docker是当下热门的容器,为了省去Linux下安装配置程序烦琐且易于出错的步骤,笔者增加了本节内容,安装Docker环境后,就能在其下快速地安装Redis服务。
安装Docker的系统需求是必须具备一个CentOS 7或者CentOS 8的维护版本,不支持之前的旧版本。
较旧的Docker版本称为docker或docker-engine。如果安装过这些程序,请卸载它们及其相关的依赖项。
需要安装yum-utils软件包:
$ sudo yum install -y yum-utils
可以根据自己的网络情况选择存储库地址,推荐使用阿里云和清华大学源,如果设置官方源,那么需要单独设置好网络才可以进行正常操作。
使用官方源地址:
$ sudo yum-config-manager \ --add-repo \ https:// download.docker.com/linux/centos/docker-ce.repo
使用阿里云:
$ sudo yum-config-manager \ --add-repo \ http:// mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
使用清华大学源:
$ sudo yum-config-manager \ --add-repo \ https:// mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
安装社区版Docker包:
$ sudo yum install docker-ce docker-ce-cli containerd.io
启动Docker很简单:
$ sudo systemctl start docker
可以使用如下命令来验证Docker是否正确安装:
$ sudo docker run hello-world
Docker Desktop是Docker在Windows 10和macOS操作系统上的官方安装方式,这种方式依然是先在虚拟机中安装Linux,再安装Docker。用户可以从网上搜索Docker Desktop的安装软件docker-ce-desktop-windows(此方法仅适用于Windows 10操作系统专业版、企业版、教育版和部分家庭版)。
Hyper-V是微软开发的虚拟机,类似于VMWare或VirtualBox,只是Hyper-V仅适用于Windows 10。这是Docker Desktop for Windows所使用的虚拟机(这个虚拟机一旦启用,VirtualBox、VMWare、Workstation 15及以下版本将无法使用。如果必须在计算机上使用其他虚拟机,则不要在Windows中启动Hyper-V)。
启动Hyper-V的操作步骤如下:
在Windows中右击“开始”按钮,在弹出的快捷菜单中选择“应用和功能”命令,如图1-19所示。
打开“程序和功能”窗口,单击“启用或关闭Windows功能”链接,如图1-20所示。
图1-19 选择“应用和功能”命令
图1-20 “程序和功能”窗口
在打开的“Windows功能”对话框中勾选“Hyper-V”复选框,然后单击“确定”按钮,如图1-21所示。
图1-21 勾选“Hyper-V”复选框
接下来双击下载的安装Docker的EXE文件,在打开的对话框中单击Next按钮,最后单击Finish按钮完成安装。
安装完成后,Docker会自动启动,通知栏上会出现 图标,表示Docker正在运行,然后按Win+R快捷键,在弹出的“运行”窗口中输入PowerShell。
用户还可以执行命令docker run hello-world来检查是否安装成功。
执行docker pull mysql/mysql-server:8.0下载MySQL镜像,如图1-22所示。
图1-22 下载镜像
执行如下命令启动MySQL服务:
docker run --name=mysql1 --restart on-failure -d mysql/mysql-server:8.0
删除容器的命令如下:
docker rm -f mysql1
停止容器的命令如下:
docker stop mysql1
查看启动日志的命令如下:
docker logs mysql1
查看MySQL服务的密码的命令如下:
docker logs mysql1 2>&1 | grep GENERATED
查询到的密码如图1-23所示。
图1-23 查询到的密码
登录MySQL服务的命令如下:
docker exec -it mysql1 mysql -uroot -p
当系统询问时,输入生成的root密码。由于该MYSQL_ONETIME_PASSWORD选项默认为true,因此在将MySQL客户端连接到服务器后,必须通过以下语句来重置服务器root账户的密码:
alter user 'root'@'localhost' identified by 'password';
或者执行下面的命令进行安装:
docker run -p 3306:3306 --name mysql \ -v /root/mysql/log:/var/log/mysql \ -v /root/mysql/data:/var/lib/mysql \ -v /root/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql/mysql-server:8.0
以上命令挂载了服务的日志文件和lib文件,已经设置好了密码。需要注意的是,在执行这条命令之前,要在宿主机的/root/mysql/conf目录下创建my.cnf文件,这个文件是服务启动的配置文件,该配置文件至少应该有如下几行内容:
[mysqld] init_connect='set collation_connection = utf8_general_ci' init_connect='set names utf8' secure_file_priv=
在学习MySQL数据库之前,很多读者会问,如何才能更好地学习MySQL的相关技能呢?下面就讲述学习MySQL的方法。
兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率,学习MySQL也不例外。
随着技术应用的不断深入,只有有着扎实的基础功底,才能在技术道路上走得更远。对于MySQL的学习而言,SQL语句是其中最基础的部分,很多功能都通过SQL语句来实现,所以读者在学习的过程中要多编写SQL语句,最好能对同一功能使用不同的SQL语句来实现。
1.下载并安装MySQL数据库。
2.使用配置向导配置MySQL为系统服务,并设置为手动启动或者关闭MySQL服务。