Linux 编译安装MYSQL

一、编译安装MySQL

1、MySQL 官方链接

MySQL官网:https://nginx.mysql.com/

MySQL下载:https://dev.mysql.com/downloads/mirrors/

MySQL文档:https://dev.mysql.com/doc/relnotes/mysql/5.7/en/

 

2、MySQL版本

版本分为四种: Alpha版、Beta版、RC版(Release Candidate)、GA版(Generally Available).

1、Alpha 版

Alpha版本软件,这是软件工程对软件开发过程软件定义使用的版本说明。beta是内部测试版,一般不向外部发布,会有很多bug,除非你也是测试人员,否则不推荐使用,是希腊字母的第一位,表示最初级的版本,Alpha是a。

2、Beta版

Bate版软件,这也是软件工程中对软件开发测试版本控制的版本说明。Beta一般是Alpha后面的版本,该版本相对于a版已有了很大的改进,消除了严重的错误,但是仍然有一个缺陷,经过许多测试需要进一步消除,这个阶段的版本会一直加入新的功能,Beta是B。

3、RC版

RC、RC即Release Candidate的简写。这是Beta后面的版本,一般RC版本并没有新增功能,而是修复了一些反馈的Beta中存在的bug,所以RC版本更接近最终发行版即稳定版(GA版) 

4、GA版

GA, GA即Generally Available的简写。这就是软件的最终发行版,这个版本一般BUG相对较小,这个发行版也可以称为稳定版。

5、Release版

Release版,在有些软件存在,在MySQL中一般没有这个版本。该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下。Release不会以单词形式出现在软件封面上,取而代之的是符号(R).

 

3、MySQL版本号

1、系统查询已安装MySQL版本方法

1、已登录MySQL的方法

mysql> status;
mysql> select version();
mysql> select@@version;
mysql> show variables like "%version%";

2、不登录直接查询的方法

[root@localhost ~]# mysql -u root -p #连接mysql
[root@localhost ~]# mysqladmin -uroot -p version;
[root@localhost ~]# mysql -V
[root@localhost ~]# mysql --version
[root@localhost ~]# mysql --help | grep Distrib$ mysql -? | grep Distrib$ mysql -I grep Distrib
[root@localhost ~]# rpm -qa | grep mysql

3、MySQL版本说明

以MySQL 5.7.27这个版本的版本号为例来说明每个数字含义。

第一个数字(5)主版本号:文件格式改动时,将作为新的版本发布;

第二个数字(7)发行版本号:新增特性或者改动不兼容时,发行版本号需要更改;

第三个数字(27)发布序列号:主要是小的改动,如bug修复,函数添加或更改,配置参数的更改等。

4、MySQL类型

1、MySQL Community Server

MySQL Community Server 是社区版本,开源免费,但不提供官方技术支持。遵循GPL协议。

MySQL Community Server 也是我们通常用MySQL的版本。根据不同的操作系统平台细分为多个版本。

2、MySQL Enterprise Edition

MySQL Enterprise Edition 企业版本,需付费,可以试用30天。

3、MySQL Cluster

MySQL Cluster集群版,开源免费。可将几个MySQL Server封装成一个Server。MySQL Cluster CGE 高级集群版,需付费。

5、MySQL安装方式

1、yum 安装

优点:操作简单易用。不用单独下载,服务器可以联网且yum源没有问题即可(可以选择国内的163/sohu/阿里源)

2、编译安装

5.1.X及之前的版本是通过下载tar包以后解压后进入软件包解压路径。然后./configure、 make、make install

5.4.X 到 5.7.X通过下载tar包以后解压进入软件包解压路径。然后cmake、make、make install(cmake需要提前安装)

有点:可以定制功能特性。

3、二进制安装

官方下载二进制包,解压初始化即可直接使用不用安装。

4、rpm安装

需要提前下载rpm软件包上传服务器系统本地。

使用rpm或者yum命令直接安装

6、MySQL安装方式

1、MySQL 编译环境

1、创建个mysql安装包目录

[root@localhost ~]# mkdir -p /usr/local/src/mysql

2、安装编译环境依赖包

[root@localhost ~]# yum -y install gcc gcc-c++ ncurses ncurses-devel bison make 

2、软件包下载

[root@localhost ~]# cd /usr/local/src/mysql
[root@localhost mysql]# wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
[root@localhost mysql]# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5.tar.gz
[root@localhost mysql]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.27.tar.gz
[root@localhost mysql]# ls -l
总用量 143532
-rw-r--r--.  1 root root  83709983 12月 10 16:52 boost_1_59_0.tar.gz
-rw-r--r--.  1 root root   8854929 6月   1 2019 cmake-3.14.5.tar.gz
-rw-r--r--.  1 root root  54398696 6月  10 2019 mysql-5.7.27.tar.gz

3、安装cmake

1、安装cmake
[root@localhost ~]# tar -zxvf cmake-3.14.5.tar.gz 
[root@localhost ~]# cd cmake-3.14.5
[root@localhost ~]# ./bootstrap
[root@localhost ~]# gmake
[root@localhost ~]# gmake install
2、查看cmake版本
[root@localhost ~]# cmake -version

4、解压 boost 库到/usr/local/目录

[root@localhost mysql]# tar xf boost_1_59_0.tar.gz -C /usr/local/
[root@localhost mysql]# cd /usr/local/
[root@localhost local]# mv boost_1_59_0/ boost
[root@localhost local]# cd boost
[root@localhost boost]# ls -l
总用量 108
drwxr-xr-x. 105 501 games  8192 8月  12 2015 boost
-rw-r--r--.   1 501 games   850 8月  11 2015 boost-build.jam
-rw-r--r--.   1 501 games 21920 8月  11 2015 boostcpp.jam
-rw-r--r--.   1 501 games   989 8月  11 2015 boost.css
-rw-r--r--.   1 501 games  6308 8月  11 2015 boost.png
-rw-r--r--.   1 501 games  2477 8月  11 2015 bootstrap.bat
-rwxr-xr-x.   1 501 games 10631 8月  11 2015 bootstrap.sh
drwx------.   7 501 games    84 8月  12 2015 doc
-rw-r--r--.   1 501 games   769 8月  11 2015 index.htm
-rw-r--r--.   1 501 games  5476 8月  11 2015 index.html
-rw-r--r--.   1 501 games   291 8月  11 2015 INSTALL
-rw-r--r--.   1 501 games 10779 8月  11 2015 Jamroot
drwx------. 116 501 games  4096 8月  12 2015 libs
-rw-r--r--.   1 501 games  1338 8月  11 2015 LICENSE_1_0.txt
drwxr-xr-x.   4 501 games   159 8月  11 2015 more
-rw-r--r--.   1 501 games  2608 8月  11 2015 rst.css
drwxr-xr-x.   2 501 games   141 8月  11 2015 status
drwxr-xr-x.  10 501 games   190 8月  11 2015 tools

5、编译安装MySQL

1、安装编译 MySQL 依赖的包
[root@localhost mysql]# yum install -y ncurses-devel

MySQL5.7依赖的软件包:gcc gcc-c++ ncurses ncurses-devel bison make 等供参考,安装前可以使用 rpm -qa | grep $ (软件包名称)检查一下

2、创建安装MySQL相关目录
[root@localhost mysql]# mkdir  -p /database/mysql/{data,tmp,binlog,logs}
[root@localhost mysql]# tree -L 2 /database/
/database/
└── mysql
    ├── bin
    ├── data
    ├── logs
    └── tmp
5 directories, 0 files
     
3、创建MySQL组和用户
[root@localhost mysql]# groupadd mysql
[root@localhost mysql]# useradd mysql -s /sbin/nologin -M -g mysql
[root@localhost mysql]# id mysql
uid=1000(mysql) gid=1000(mysql) 组=1000(mysql)

- s /sbin/nologin 用户不能登录系统

-M 不创建用户的HOME目录

-g 指定用户登录组的GID或组名

4、解压MySQL源码包
[root@localhost mysql]# cd /usr/local/src/mysql
[root@localhost mysql]# tar xf mysql-5.7.27.tar.gz
5、cmake 编译 MySQL
[root@localhost mysql]# cd mysql-5.7.27
[root@localhost mysql-5.7.27]# cmake . -DCMAKE_INSTALL_PREFIX=/database/mysql 
-DMYSQL_DATADIR=/database/mysql/data 
-DMYSQL_UNIX_ADDR=/database/mysql/tmp/mysql.sock 
-DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci 
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii 
-DENABLED_LOCAL_INFILE=ON 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_FEDERATED_STORAGE_ENGINE=1 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 
-DWITH_ZLIB=bundled 
-DWITH_EMBEDDED_SERVER=1 
-DWITH_DEBUG=0 
-DWITH_BOOST=/usr/local/boost

看到如下信息,说明cmake编译完成

-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/mysql/mysql-5.7.27
6、安装 MySQL 
[root@localhost mysql-5.7.27]# gmake && gmake install
...省略
Linking CXX executable  my_safe_process
[100%] Built target my_safe_process
7、MySQL 安装完成
...省略
-- Installing: /database/mysql/support-files/mysqld_multi.server
-- Installing: /database/mysql/support-files/mysql-log-rotate
-- Installing: /database/mysql/support-files/magic
-- Installing: /database/mysql/share/aclocal/mysql.m4
-- Installing: /database/mysql/support-files/mysql.server

如果上述操作未出现错误(每个步骤结束后,都可以使用echo $?看返回值是否为0,为0则表示正确),查看/database/mysql/目录,若其下有内容,则表示MySQL5.7.27源代码包采用cmake方式安装成功了

  

6、配置MySQL系统环境变量

[root@localhost ~]# echo 'export PATH=/database/mysql/bin:$PATH' >> /etc/profile
[root@localhost ~]# tail -1 /etc/profile
export PATH=/database/mysql/bin:$PATH

使/etc/profile配置文件立即生效

[root@localhost ~]# source /etc/profile
[root@localhost ~]# echo  $PATH
/database/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

7、初始化 MySQL 数据库

1、更改 MySQL 安装目录的属主和属组
[root@localhost ~]# chown -R mysql:mysql /database/mysql/
2、修改 MySQL 配置文件的属主和属组
[root@localhost ~]# chown mysql:mysql /etc/my.cnf
3、修改 MySQL 配置文件

修改/etc/my.cnf文件,和5.6之前的版本不一样,5.7版本support-files目录下没有.cnf文件, 因此,需要自己手动编辑

[root@localhost ~]# cp /etc/my.cnf /etc/my.cnf.bak
[root@localhost ~]# vi /etc/my.cnf

[client]
port = 3306
socket = /database/mysql/tmp/mysql.sock
default-character-set = utf8

[mysqld]
port = 3306
user = mysql
basedir = /database/mysql
datadir = /database/mysql/data
pid-file = /database/mysql/mysqld.pid
socket = /database/mysql/tmp/mysql.sock
tmpdir = /database/mysql/tmp
character_set_server = utf8
server-id = 1
max_connections = 100
max_connect_errors = 10
log-bin = /database/mysql/binlog/mysql-bin
log-error = /database/mysql/logs/mysql_5_7_27.err
4、初始化 MySQL 数据库
[root@localhost ~]# cd /database/mysql/
[root@localhost mysql]# ./bin/mysqld --initialize-insecure  --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data

生成初始化密码参数(5.7版本才有),必须要添加,否则会初始化失败, 会生成空密码

--initialize-insecure

设定初始化用户

--user=mysql

设定mysql工作目录

--basedir=/database/mysql

 设定数据文件目录

--datadir=/database/mysql/data
5、MySQL 实例开启SSL连接
[root@localhost mysql]# cd /database/mysql/
[root@localhost mysql]# ./bin/mysql_ssl_rsa_setup --initialize-insecure --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data
6、修改server-key.pem文件权限
[root@localhost ~]# cd /database/mysql/data/
[root@localhost data]# chmod +r server-key.pem
[root@localhost data]# ls -l server-key.pem
-rw-r--r--. 1 root root 1679 12月 11 01:59 server-key.pem

7、启动 MySQL 数据库

拷贝启动脚本到/etc/init.d/目录下,并改名mysqld

[root@localhost data]# cp support-files/mysql.server /etc/init.d/mysql
[root@localhost data]# ls -l /etc/init.d/mysql 
-rwxr-xr-x. 1 root root 10570 12月 11 02:01 /etc/init.d/mysql

重新加载系统服务,将MySQL数据库加入开机自动

[root@localhost ~]# systemctl daemon-reload 
[root@localhost ~]# systemctl enable mysql
mysql.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysql on
[root@localhost ~]# chkconfig mysql on

启动MySQL数据库,并检查端口监听状态

[root@localhost ~]# /etc/init.d/mysql start
Starting MySQL SUCCESS! 
[root@localhost ~]# systemctl start mysql

[root@localhost ~]# systemctl status mysql
● mysql.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysql; bad; vendor preset: disabled)
   Active: active (running) since 三 2020-12-16 16:41:16 CST; 22h ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/mysql.service
           ├─1016 /bin/sh /database/mysql/bin/mysqld_safe --datadir=/database/mysql/data --pid-file=/database/mysql/mysqld.pid
           └─1321 /database/mysql/bin/mysqld --basedir=/database/mysql --datadir=/database/mysql/data --plugin-dir=/database/my...

12月 16 16:41:15 localhost.localdomain systemd[1]: Starting LSB: start and stop MySQL...
12月 16 16:41:16 localhost.localdomain mysql[995]: Starting MySQL SUCCESS!
12月 16 16:41:16 localhost.localdomain systemd[1]: Started LSB: start and stop MySQL.

[root@localhost ~]# ss -anput | grep 3306
tcp    LISTEN     0      70     [::]:3306               [::]:*                   users:(("mysqld",pid=1321,fd=33))

[root@localhost mysql]#

原文地址:https://www.cnblogs.com/Axianba/p/14149755.html