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
此外,我们需要在我们的系统上安装以下三个工具:cmake、bison和perl。在我们的例子中,我们必须安装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数据库系统的安装。