ZetCode

MySQL安装

最后修改于 2023 年 1 月 10 日

在本MySQL教程中,我们将介绍MySQL数据库管理系统的安装。在本章中,我们将在Linux上安装MySQL。

有几种方法可以在我们的系统上安装MySQL。我们可以从软件包、二进制文件或源代码安装MySQL。

从软件包安装MySQL

安装MySQL最简单的方法是通过软件包系统。

$ sudo apt-get install mysql-server

在Ubuntu和其他基于Debian的发行版上,我们可以使用apt-get工具轻松地从软件包安装MySQL。此命令安装MySQL服务器和各种其他软件包。在安装软件包时,系统会提示我们输入MySQL root帐户的密码。

$ sudo yum install mysql-server

在CentOS上,我们使用上述命令安装MySQL服务器。

从源代码安装MySQL

从源代码安装MySQL为我们提供了根据我们的偏好构建MySQL的最大选项。我们可以自定义安装位置、各种构建参数或编译器优化。

安装必要的工具

在我们开始构建MySQL之前,我们需要安装几个先决条件。

$ sudo apt-get install g++

如果不存在,我们必须安装C++编译器。

$ sudo apt-get install libncurses5-dev

我们还需要Curses库的开发版本。

$ sudo apt-get install cmake bison
$ which cmake bison perl
/usr/bin/cmake
/usr/bin/bison
/usr/bin/perl

此外,我们需要在我们的系统上安装以下三个工具:cmakebisonperl。在我们的例子中,我们必须安装cmake工具。cmake工具已经取代了configure工具,因为它更具可移植性。

安装Boost

我们需要安装Boost C++库。MySQL 5.7.17需要Boost 1.59.0。

$ wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

我们下载Boost库的源代码。

$  tar xzvf boost_1_59_0.tar.gz 
$ cd boost_1_59_0/

我们解压缩存档并进入boost_1_59_0目录。

$ ./bootstrap.sh 
$ sudo ./b2 install

使用这两个命令,我们安装Boost。

预配置设置

我们创建一个mysql组和用户。

$ sudo addgroup --system mysql
$ sudo adduser --system mysql --no-create-home -ingroup mysql

我们在计算机上创建一个mysql系统组和一个mysql系统用户。Linux中的每个进程都由特定用户拥有。MySQL守护进程将由用户mysql拥有。请注意,mysql不是一个普通的用户帐户;它是一个系统用户。

获取MySQL源代码

https://mysqlserver.cn/downloads/,我们选择MySQL社区版,然后选择MySQL社区服务器,最后选择通用MySQL社区版本。从“选择平台”组合框中,我们选择“源代码”选项。我们选择针对Ubuntu Linux 64位的源代码。

$ wget https://dev.mysqlserver.cn/get/Downloads/MySQL-5.7/mysql-community-source_5.7.17-1ubuntu16.10_amd64.deb

在我们确定了存档的位置后,我们可以使用wget工具下载源代码。

$ ls -sh mysql-community-source_5.7.17-1ubuntu16.10_amd64.deb 
136M mysql-community-source_5.7.17-1ubuntu16.10_amd64.deb

我们已经下载了适用于Ubuntu Linux 64位架构的MySQL 5.7.17源代码,打包成一个deb软件包。

$ md5sum mysql-community-source_5.7.17-1ubuntu16.10_amd64.deb

我们使用md5sum工具验证源代码,并将生成的哈希值与网站上的哈希值进行比较。

$ expr 0b966bc6434d8a8020b9c4f32c93a1e7 == 0b966bc6434d8a8020b9c4f32c93a1e7
1

我们可以使用expr命令快速比较两个哈希值。

$ sudo dpkg -i mysql-community-source_5.7.17-1ubuntu16.10_amd64.deb

我们安装deb软件包。文件被安装到/usr/src/mysql目录。

$ mkdir build_mysql
$ cd build_mysql
$ cp /usr/src/mysql/mysql-community_5.7.17.orig.tar.gz .

我们创建一个构建目录,更改到该目录,并将源代码复制到其中。

$ tar xzvf mysql-community_5.7.17.orig.tar.gz

现在我们解压缩源代码。

$ cd mysql-5.7.17/

我们进入mysql-5.7.17目录,在那里我们有源代码。

$ ls
BUILD            Docs                 libmysqld    README         unittest
client           Doxyfile-perfschema  libservices  regex          VERSION
cmake            extra                man          scripts        vio
CMakeLists.txt   include              mysql-test   sql            win
cmd-line-utils   INSTALL              mysys        sql-common     zlib
config.h.cmake   libbinlogevents      mysys_ssl    storage
configure.cmake  libbinlogstandalone  packaging    strings
COPYING          libevent             plugin       support-files
dbug             libmysql             rapid        testclients

我们展示源代码目录。

$ cmake -L
-- Running cmake version 3.5.1
-- Could NOT find Git (missing:  GIT_EXECUTABLE) 
-- Configuring with MAX_INDEXES = 64U
-- SIZEOF_VOIDP 8
-- MySQL 5.7.17
-- Packaging as: mysql-5.7.17-Linux-x86_64
-- Found /usr/local/include/boost/version.hpp 
-- BOOST_VERSION_NUMBER is #define BOOST_VERSION 105900
-- BOOST_INCLUDE_DIR /usr/local/include
-- Found Curses: /usr/lib/x86_64-linux-gnu/libcurses.so  
-- Looking for tputs in /usr/lib/x86_64-linux-gnu/libcurses.so
-- Looking for tputs in /usr/lib/x86_64-linux-gnu/libcurses.so - found
-- Performing Test HAVE_DECL_TGOTO
-- Performing Test HAVE_DECL_TGOTO - Success
...

-L选项显示一些默认的配置选项。系统将被安装到/usr/loca/mysql目录。对我们来说,重要的是配置InnoDB存储引擎以包含在内。

$ cmake .

我们配置构建。我们保留所有默认设置。如果我们也想拥有MySQL嵌入式系统,我们将提供-DWITH_EMBEDDED_SERVER=1选项。

$ make
$ sudo make install

我们构建系统并安装它。

安装后设置

在我们的系统上安装MySQL后,还需要执行其他步骤。

$ cd /usr/local/mysql
$ sudo chown -R mysql .
$ sudo chgrp -R mysql .

我们位于/usr/local/mysql目录中。我们更改位于上述目录中的所有文件的组和所有者。-R选项表示递归操作。这意味着这两个命令对所有文件和目录及其目录的内容执行操作。

$ ls -l
total 56
drwxr-xr-x  2 mysql mysql  4096 Jan 26 15:54 bin
-rw-r--r--  1 mysql mysql 17987 Nov 28 14:32 COPYING
drwxr-xr-x  2 mysql mysql  4096 Jan 26 15:53 docs
drwxr-xr-x  3 mysql mysql  4096 Jan 26 15:53 include
drwxr-xr-x  4 mysql mysql  4096 Jan 26 15:54 lib
drwxr-xr-x  4 mysql mysql  4096 Jan 26 15:53 man
drwxr-xr-x 10 mysql mysql  4096 Jan 26 15:55 mysql-test
-rw-r--r--  1 mysql mysql  2478 Nov 28 14:32 README
drwxr-xr-x 28 mysql mysql  4096 Jan 26 15:55 share
drwxr-xr-x  2 mysql mysql  4096 Jan 26 15:55 support-files

我们更改了MySQL文件的所有者和组。

$ sudo bin/mysqld --initialize --user=mysql

我们使用mysqld初始化MySQL数据目录。该命令还创建一个临时的root密码。在MySQL 5.7.6之前,此任务是通过mysql_install_db命令完成的。

$ sudo bin/mysql_ssl_rsa_setup

如果缺少这些文件,则mysql_ssl_rsa_setup工具将创建支持使用SSL的安全连接和使用RSA通过未加密连接进行安全密码交换所需的SSL证书和密钥文件以及RSA密钥对文件。

$ sudo chown -R root .
$ sudo chown -R mysql data

我们将所有文件的所有者更改回root用户,但数据目录除外。MySQL服务器(由mysql用户拥有)必须有权访问数据目录。数据库文件存储在此目录中。

启动和停止MySQL服务器

以下命令可用于启动和停止MySQL服务器。

$ sudo /usr/local/mysql/support-files/mysql.server start

此命令启动MySQL服务器。

$ sudo /usr/local/mysql/support-files/mysql.server stop

此命令停止MySQL服务器。

其他设置

在我们在系统上安装了MySQL并更改了root帐户的密码之后,仍然有一些修改需要做。

MySQL有一个名为my.cnf的配置文件,该文件位于/etc目录中。通过编辑此文件中的选项,我们可以根据需要配置服务器。

$ sudo cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
$ cp /usr/local/mysql/support-files/my-default.cnf ~/.my.cnf

support-files目录中有配置模板。在第一个命令中,我们创建MySQL全局配置文件。在第二个示例中,我们在用户的home目录下创建一个个人文件。

$ export PATH=$PATH:/usr/local/mysql/bin/
$ export MANPATH=$MANPATH:/usr/local/mysql/man/

另一件有用的事情是将bin目录添加到您的PATH变量中。这样,我们就可以启动MySQL命令和脚本,而无需指定完整路径。此外,我们将MySQL工具和命令的手册页的路径添加到MANPATH变量中。现在我们可以使用man命令查看MySQL手册页。将这两个命令放入您的shell配置文件中。这可能是.bashrc.profile

更改root密码

之前,我们已经获得了过期的root密码。是时候为root设置一个新密码了。

$ /usr/local/mysql/bin/mysql -u root -p

我们启动mysql命令行工具。(服务器必须正在运行。)我们以root身份连接。

mysql> SET PASSWORD = PASSWORD('newpassowrd');

我们设置一个新密码。

加强MySQL安全

我们可以使用mysql_secure_installation来提高我们的MySQL服务器的安全性。

$ /usr/local/mysql/bin/mysql_secure_installation

我们有选择地改进MySQL root密码,删除匿名用户帐户,禁用localhost之外的root登录,并删除测试数据库。

在本MySQL教程中,我们介绍了MySQL数据库系统的安装。