MySQL 安装

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

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

从软件包安装 MySQL

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

$ sudo apt-get install mysql-server

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

$ 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://www.mysql.com/downloads/ 中,我们选择 MySQL Community Edition,然后选择 MySQL Community Server,以及一般可用的 MySQL Community Release。 从“选择平台”组合框中,选择“源代码”选项。 我们选择针对 64 位 Ubuntu Linux 的源。

$ wget https://dev.mysql.com/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

我们已通过deb软件包下载了适用于 64 位体系结构的 Ubuntu Linux 的 MySQL 5.7.17 源。

$ 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 数据目录。 该命令还将创建一个临时根密码。 在 MySQL 5.7.6 之前,此任务是通过mysql_install_db command完成的。

$ sudo bin/mysql_ssl_rsa_setup

mysql_ssl_rsa_setup工具会创建 SSL 证书和键文件以及 RSA 键对文件,以支持使用 SSL 进行安全连接以及使用 RSA 通过未加密连接进行安全密码交换(如果这些文件丢失)。

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

我们将所有文件的所有者更改回用户根目录,但数据目录除外。 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 全局配置文件。 在第二个示例中,我们在用户的主目录中创建一个个人文件。

$ 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 密码。 现在该为根设置新密码了。

$ /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 登录以及删除测试数据库。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程