ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# MySQL 安装 > 原文: [http://zetcode.com/databases/mysqltutorial/installation/](http://zetcode.com/databases/mysqltutorial/installation/) 在 MySQL 教程的这一部分中,我们将介绍 MySQL 数据库管理系统的安装。 在本章中,我们将在 Linux 上安装 MySQL。 我们有几种方法可以在系统上安装 MySQL。 我们可以从包,二进制文件或源代码中安装 MySQL。 ## 从包安装 MySQL 安装 MySQL 的最简单方法是通过包系统。 ```sql $ sudo apt-get install mysql-server ``` 在 Ubuntu 和其他基于 Debian 的发行版上,我们可以使用`apt-get`工具轻松地从包中安装 MySQL。 此命令将安装 MySQL 服务器和其他各种包。 在安装包时,提示我们输入 MySQL 根帐户的密码。 ```sql $ sudo yum install mysql-server ``` 在 CentOS 上,我们使用上述命令安装 MySQL 服务器。 ## 从源代码安装 MySQL 从源代码安装 MySQL 为我们提供了根据我们的偏好构建 MySQL 的最多选择。 我们可以自定义安装位置,各种构建参数或编译器优化。 ### 安装必要的工具 在开始构建 MySQL 之前,我们需要安装一些先决条件。 ```sql $ sudo apt-get install g++ ``` 如果不存在,我们必须安装 C++ 编译器。 ```sql $ sudo apt-get install libncurses5-dev ``` 我们还需要 Curses 库的开发版本。 ```sql $ sudo apt-get install cmake bison $ which cmake bison perl /usr/bin/cmake /usr/bin/bison /usr/bin/perl ``` 另外,我们需要在系统上安装以下三个工具:`cmake`,`bison`和`perl`。 在我们的情况下,我们必须安装`cmake`工具。 `cmake`工具已取代`configure`工具,因为它更便于携带。 ### 安装 Boost 我们需要安装 Boost C++ 库。 MySQL 5.7.17 需要 Boost 1.59.0。 ```sql $ wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz ``` 我们下载 Boost 库的源代码。 ```sql $ tar xzvf boost_1_59_0.tar.gz $ cd boost_1_59_0/ ``` 我们解压缩档案并进入`boost_1_59_0`目录。 ```sql $ ./bootstrap.sh $ sudo ./b2 install ``` 使用这两个命令,我们安装 Boost。 ### 预配置设置 我们创建一个 mysql 组和用户。 ```sql $ sudo addgroup --system mysql $ sudo adduser --system mysql --no-create-home -ingroup mysql ``` 我们在计算机上创建一个 mysql 系统组和一个 mysql 系统用户。 Linux 中的每个进程均由特定用户拥有。 MySQL 守护程序将由用户 mysql 拥有。 注意,mysql 不是普通的用户帐户。 它是系统用户。 ### 获取 MySQL 源 从 [https://www.mysql.com/downloads/](https://www.mysql.com/downloads/) 中,我们选择 MySQL Community Edition,然后选择 MySQL Community Server,以及一般可用的 MySQL Community Release。 从“选择平台”组合框中,选择“源代码”选项。 我们选择针对 64 位 Ubuntu Linux 的源。 ```sql $ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-source_5.7.17-1ubuntu16.10_amd64.deb ``` 确定存档的位置后,可以使用`wget`工具下载源。 ```sql $ ls -sh mysql-community-source_5.7.17-1ubuntu16.10_amd64.deb 136M mysql-community-source_5.7.17-1ubuntu16.10_amd64.deb ``` 我们已通过`deb`包下载了适用于 64 位架构的 Ubuntu Linux 的 MySQL 5.7.17 源。 ```sql $ md5sum mysql-community-source_5.7.17-1ubuntu16.10_amd64.deb ``` 我们使用`md5sum`工具验证来源,并将生成的哈希值与网站上的哈希值进行比较。 ```sql $ expr 0b966bc6434d8a8020b9c4f32c93a1e7 == 0b966bc6434d8a8020b9c4f32c93a1e7 1 ``` 我们可以使用`expr`命令快速比较两个哈希。 ```sql $ sudo dpkg -i mysql-community-source_5.7.17-1ubuntu16.10_amd64.deb ``` 我们安装`deb`包。 这些文件将安装到`/usr/src/mysql`目录。 ```sql $ mkdir build_mysql $ cd build_mysql $ cp /usr/src/mysql/mysql-community_5.7.17.orig.tar.gz . ``` 我们创建一个构建目录,更改为该目录,然后将源代码复制到该目录中。 ```sql $ tar xzvf mysql-community_5.7.17.orig.tar.gz ``` 现在我们解压缩源。 ```sql $ cd mysql-5.7.17/ ``` 我们转到`mysql-5.7.17`目录,这里有源。 ```sql $ 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 ``` 我们显示源目录。 ```sql $ 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 存储引擎。 ```sql $ cmake . ``` 我们配置构建。 我们保留所有默认设置。 如果我们还希望拥有 MySQL 嵌入式系统,我们将提供`-DWITH_EMBEDDED_SERVER=1`选项。 ```sql $ make $ sudo make install ``` 我们制作系统并安装它。 ### 安装后的设置 在我们的系统上安装 MySQL 之后,需要其他步骤。 ```sql $ cd /usr/local/mysql $ sudo chown -R mysql . $ sudo chgrp -R mysql . ``` 我们位于`/usr/local/mysql`目录中。 我们更改位于上述目录中所有文件的组和所有者。 `-R`选项表示递归操作。 这意味着这两个命令对所有文件和目录以及目录的内容起作用。 ```sql $ 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 文件的所有者和组。 ```sql $ sudo bin/mysqld --initialize --user=mysql ``` 我们使用`mysqld`初始化 MySQL 数据目录。 该命令还将创建一个临时根密码。 在 MySQL 5.7.6 之前,此任务是通过`mysql_install_db command`完成的。 ```sql $ sudo bin/mysql_ssl_rsa_setup ``` `mysql_ssl_rsa_setup`工具会创建 SSL 证书和键文件以及 RSA 键对文件,以支持使用 SSL 进行安全连接以及使用 RSA 通过未加密连接进行安全密码交换(如果这些文件丢失)。 ```sql $ sudo chown -R root . $ sudo chown -R mysql data ``` 我们将所有文件的所有者更改回用户根目录,但数据目录除外。 `mysql`用户拥有的 MySQL 服务器必须有权访问数据目录。 数据库文件存储在此目录中。 ### 启动和停止 MySQL 服务器 以下命令可用于启动和停止 MySQL 服务器。 ```sql $ sudo /usr/local/mysql/support-files/mysql.server start ``` 此命令启动 MySQL 服务器。 ```sql $ sudo /usr/local/mysql/support-files/mysql.server stop ``` 该命令停止 MySQL 服务器。 ### 其他设定 在系统上安装 MySQL 并更改`root`帐户的密码后,还有一些修改要做。 MySQL 有一个名为`my.cnf`的配置文件,该文件位于`/etc`目录中。 通过编辑此文件中的选项,我们可以根据需要配置服务器。 ```sql $ 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 全局配置文件。 在第二个示例中,我们在用户的主目录中创建一个个人文件。 ```sql $ 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`密码。 现在该为根设置新密码了。 ```sql $ /usr/local/mysql/bin/mysql -u root -p ``` 我们启动`mysql`命令行工具。 (服务器必须正在运行。)我们以 root 用户身份连接。 ```sql mysql> SET PASSWORD = PASSWORD('newpassowrd'); ``` 我们设置了一个新密码。 ## 加固 MySQL 我们可以使用`mysql_secure_installation`来提高 MySQL 服务器的安全性。 ```sql $ /usr/local/mysql/bin/mysql_secure_installation ``` 我们可以选择改进 MySQL 的`root`密码,删除匿名用户帐户,禁用 localhost 外部的`root`登录以及删除测试数据库。 在 MySQL 教程的这一部分中,我们介绍了 MySQL 数据库系统的安装。