Linux——编译安装MySQL(5.7.32)

1.检查系统环境

[root@mysql ~]# uname  -r
3.10.0-957.el7.x86_64
[root@mysql ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

2.卸载mariadb

PS:因为centos7的版本默认都安装了mariadb所以需要提前卸载掉。

[root@mysql ~]# rpm -qa | grep  mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@mysql ~]# rpm -e mariadb-libs --nodeps  mariadb-libs

3.安装依赖包

安装依赖软件

[root@mysql ~]# yum -y install openssl openssl-devel gcc gcc-c++  m4

cmake

PS:由于从 MySQL5.5 版本开始弃用了常规的 configure 编译方法,所以需要 CMake 编译器,用于设置 mysql 的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等

[root@mysql ~]# wget http://www.cmake.org/files/v3.18/cmake-3.18.1.tar.gz 
[root@mysql ~]# tar zxf cmake-3.18.1.tar.gz 
[root@mysql ~]# cd cmake-3.18.1/
[root@mysql cmake-3.18.5]# ./bootstrap && gmake && gmake install
[root@mysql cmake-3.18.5]# cmake  -version
cmake version 3.18.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

ncurses

PS:字符终端处理库

[root@mysql ~]# wget ftp://ftp.gnu.org/gnu/ncurses/ncurses-6.2.tar.gz
[root@mysql ~]# tar zxf ncurses-6.2.tar.gz 
[root@mysql ~]# cd ncurses-6.2/
[root@mysql ncurses-6.2]# ./configure  && make && make install

bison

PS:Linux 下 C/C++语法分析器

[root@mysql ~]# wget http://ftp.gnu.org/gnu/bison/bison-3.6.3.tar.gz
[root@mysql ~]# tar zxf  bison-3.6.3.tar.gz 
[root@mysql ~]# cd bison-3.6.3/
[root@mysql bison-3.6.3]# ./configure  && make && make install

bootst

PS:从 MySQL 5.7.5 开始 Boost 库是必需的,mysql 源码中用到了 C++的 Boost 库,要求必须安装 boost1.59.0 或以上版本GCC 是 Linux 下的 C 语言编译工具,mysql 源码编译完全由 C 和 C++编写,要求必须安装GCC

[root@mysql ~]# wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
[root@mysql ~]# tar zxf boost_1_59_0.tar.gz 
[root@mysql ~]# mv boost_1_59_0 /usr/local/boost

4.创建用户和组及目录

[root@mysql ~]# groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql  #新建 msyql 组和 msyql 用户禁止登录 shell
[root@mysql ~]# mkdir /usr/local/mysql   #创建目录
[root@mysql ~]# mkdir /usr/local/mysql/data  #创建数据库目录

5.编译安装MySQL

解压并安装

[root@mysql ~]# wget http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.32.tar.gz
[root@mysql ~]# tar zxf mysql-5.7.32.tar.gz 
[root@mysql ~]# cd mysql-5.7.32/
[root@mysql mysql-5.7.32]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DMYSQL_DATADIR=/usr/local/mysql/data  -DSYSCONFDIR=/etc    -DWITH_MYISAM_STORAGE_ENGINE=1  -DWITH_INNOBASE_STORAGE_ENGINE=1  -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock  -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all  -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci   -DWITH-SYSTEMD=1   -DWITH_BOOST=/usr/local/boost && make -j 4 && make install
参数含义
-DCMAKE_INSTALL_PREFIX=/usr/local/mysqlMySQL 安 装 的 根 目录
-DMYSQL_DATADIR=/usr/local/mysql/dataMySQL 数据库文件存放目录
-DSYSCONFDIR=/etcMySQL 配置文件所在目录
-DWITH_MYISAM_STORAGE_ENGINE=1添加 MYISAM 引擎支持
-DWITH_INNOBASE_STORAGE_ENGINE=1添加 InnoDB 引擎支持
-DWITH_ARCHIVE_STORAGE_ENGINE=1添加 ARCHIVE 引擎支持
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock指定 mysql.sock 位置
-DWITH_PARTITION_STORAGE_ENGINE=1安装支持数据库分区
-DEXTRA_CHARSETS=all使 MySQL 支持所有的扩展字符
-DDEFAULT_CHARSET=utf8设置 MySQL 的默认字符集为utf8
-DDEFAULT_COLLATION=utf8_general_ci设置默认字符集校对规则
-DWITH-SYSTEMD=1可以使用 systemd 控制 mysql 服务
-DWITH_BOOST=/usr/local/boost指向 boost 库所在目录
make  -j  4 && make install
  • -j:表示根据 CPU 核数指定编译时的线程数,可以加快编译速度。默认为 1 个线程编译。

优化路径

[root@mysql ~]# tail -1 /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
[root@mysql ~]# source /etc/profile

6.创建配置文件

[root@mysql ~]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql    #创建目录
datadir=/usr/local/mysql/data    #数据库目录
pid-file=/usr/local/mysql/data/mysqld.pid   #mysql进程
log-error=/usr/local/mysql/data/mysql.err   #错误日志
socket=/tmp/mysql.sock  #可以socket文件方式登录mysql

7.设置权限并初始化MySQL

[root@mysql ~]# chown -R mysql:mysql /usr/local/mysql/
[root@mysql mysql-5.7.32]# ll /usr/local/mysql/
总用量 268
drwxr-xr-x  2 mysql mysql   4096 11月 19 22:07 bin
drwxr-xr-x  2 mysql mysql      6 11月 19 21:53 data
drwxr-xr-x  2 mysql mysql     55 11月 19 22:07 docs
drwxr-xr-x  3 mysql mysql   4096 11月 19 22:07 include
drwxr-xr-x  4 mysql mysql    192 11月 19 22:07 lib
-rw-r--r--  1 mysql mysql 247914 9月  23 20:00 LICENSE
drwxr-xr-x  4 mysql mysql     30 11月 19 22:07 man
drwxr-xr-x 10 mysql mysql   4096 11月 19 22:07 mysql-test
-rw-r--r--  1 mysql mysql    587 9月  23 20:00 README
-rw-r--r--  1 mysql mysql    587 9月  23 20:00 README-test
drwxr-xr-x 28 mysql mysql   4096 11月 19 22:07 share
drwxr-xr-x  2 mysql mysql     90 11月 19 22:07 support-files
drwxr-xr-x  3 mysql mysql     17 11月 19 22:07 usr
[root@mysql mysql-5.7.32]#  mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
  • 以 root 初始化操作时要加–user=mysql 参数,生成一个随机密码(注意保存登录时用)
  • 如果使用–initialize 参数初始化系统 数据库 之后,会生成 root 用户的一个临时密码

8.启动MySQL

[root@mysql ~]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service  /usr/lib/systemd/system/
[root@mysql ~]# vim /usr/lib/systemd/system/mysqld.service 
......
ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd   #修改为自己设置的mysql路径

ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid $MYSQLD_OPTS   ##修改为自己设置的mysql路径
......
[root@mysql ~]# systemctl  daemon-reload 
[root@mysql ~]# systemctl  start  mysqld.service 
[root@mysql ~]# systemctl  enable  mysqld.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.

[root@mysql ~]# ss -lnt | grep  3306
LISTEN     0      80          :::3306                    :::*  

9.登录MySQL

[root@mysql ~]# cat /usr/local/mysql/data/mysql.err  | grep password
2020-11-19T14:09:35.532890Z 1 [Note] A temporary password is generated for root@localhost: fFqNp#ty>6/?
[root@mysql ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.32

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> alter  user  root@localhost  identified  by '123456';
Query OK, 0 rows affected (0.00 sec)

修改密码

[root@mysql ~]# mysqladmin  -u root -p password '123456'
Enter password: 123456
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
### 安装 MySQL 5.7 的具体方法 要在 Linux 系统上成功安装 MySQL 5.7 版本,可以按照以下方式操作: #### 添加 MySQL Yum 存储库 首先需要添加官方的 MySQL Yum 存储库文件。这可以通过下载并安装特定于系统的 RPM 包来完成。以下是具体的命令: ```bash rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm ``` 此命令会自动配置好存储库以便后续能够通过 `yum` 命令轻松管理软件包[^5]。 #### 执行 MySQL 数据库安装 一旦存储库设置完毕,则可以直接利用 `yum` 工具来进行 MySQL 数据库服务端程序的实际部署工作。输入如下指令即可实现自动化安装过程: ```bash yum install mysql-community-server -y ``` 这条语句将会连同必要的客户端工具以及其它组件一并装载到操作系统当中去[^1]。 #### 验证已安装好的 MySQL 软件版本号 为了确认刚刚所做的一切无误,并且确实获取到了期望中的那个分支系列下的实例化产物——即 MySQL Server v5.x.y 形式的成果物;我们还可以借助内置功能模块进一步核实当前环境里实际存在的引擎核心代际归属情况。只需简单键入下面这一串字符序列便能达成目标了哦~ ```bash mysql -V ``` 上述命令用于显示目前系统中存在的 MySQL 及其关联插件的具体编译参数与构建信息等内容。 #### 检查必要依赖项是否存在 在正式开始之前还有一点需要注意的是要确保主机之上已经存在某些必备的基础运行时支持条件。比如像 `libaio` 和网络诊断类实用程序集合这样的东东都是不可或缺的好帮手呢!所以不妨先试着跑一遍这两个检测脚本来排查潜在隐患吧: ```bash rpm -qa | grep libaio rpm -qa | grep net-tools ``` 如果发现缺少任何一项的话就赶紧想办法补全咯~毕竟只有当所有前提都满足之后才能顺利推进后面的工作流程嘛😊[^4]! --- ### 总结说明 综上所述,在 CentOS 或 RHEL 类似的 RedHat 衍生发行版家族成员之中实施针对指定次世代关系型数据库管理系统—MySQL V5.X系别的定制化引入方案并非难事。只需要遵循本文档所提供的标准化步骤逐一落实到位就可以了👍。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值