【MySQL】基于centos7编译安装MySQL5.7.29

MySQL介绍

MySQL一般特制完整的MySQLRDBMS,是一个开源的关系型数据库管理系统(Relational Database Management System),现在属于Oracle公司。

MySQL特性

(1) MySQL性能卓越、服务稳定,很少出现异常宕机
(2) MySQL开放源代码且无版权制约,自主性及使用成本低
(3) MySQL历史悠久,社区及用户活跃,遇到问题可以解决
(4) MySQL软件体积小,安装使用简单,并且易于文虎,安装及维护成本 低
(5) MySQL支持多用操作系统,提供多种API接口,支持多用开发语言

前期准备

官网下载MySQL5.7.29源码包。
官方网站:https://downloads.mysql.com/archives/community/
在这里插入图片描述
由于MySQL官方网站下载源码包有时下载速度非常慢,为此我将MySQL5.7.29的源码包和安装包都上传了,供大家下载!
地址:https://download.csdn.net/download/weixin_42526641/20559235

编译安装具体步骤

本次所有的操作都是建立在MySQL源码包以及上传到当前目录下

解决软件的依赖关系

yum  install cmake ncurses-devel gcc  gcc-c++  vim  lsof bzip2 openssl-devel ncurses-compat-libs -y

cmake:一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)
ncurses-devel:ncurses是字符终端下屏幕控制的基本库,devel代表的是开发库
gcc:C语言编译器
gcc-c++:C++语言编译器
lsof:查看端口的命令
bzip2:bzip2命令是.bz2文件的压缩程序
openssl-devel:是第三方软件开发时使用的Lib包,是用于编译的时候连接的库之类的文件
ncurses-compat-libs:支持安装程序的库

创建管理MySQL的用户和存放MySQL数据的目录

# 新建用户
useradd -r -s /sbin/nologin mysql

# 新建数据目录
mkdir -p /data/mysql

# 修改数据目录的拥有者为mysql
chown mysql:mysql /data/mysql

解压源码包

# 解压src的rpm包
rpm -ivh mysql-community-5.7.29-1.el7.src.rpm 

# 进入/root/rpmbuild目录
cd /root/rpmbuild/SOURCES

# 解压MySQL真正的源码包
tar xf mysql-5.7.29.tar.gz

# 解压boost源码包
tar xf boost_1_59_0.tar.bz2

# 将boost包移动到mysql解压的包里
mv boost_1_59_0 mysql-5.7.29

配置MySQL相关信息

# 进入解压后的目录
cd mysql-5.7.29
 
# 配置MySQL相关信息
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/sc_mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost_1_59_0

-DCMAKE_INSTALL_PREFIX=/usr/local/sc_mysql:
是编译安装MySQL的时候的固定语法参数,是给cmake传参的,告诉cmake去生成一个叫做Makefile的文件
指定MySQL安装的路径/usr/local/mysql,具体的路径可以自己定义
-DMYSQL_DATADIR=/data/mysql:
指定MySQL的存放数据的目录,目录的路径可以自定义
-DSYSCONFDIR=/etc:
指定mysql的配置文件存放的目录
-DMYSQL_USER=mysql:
指定启MySQL的用户,用户名可以自定义
-DDEFAULT_CHARSET=utf8:
指定MySQL里的默认的字符集
-DDEFAULT_COLLATION=utf8_general_ci:
排序规则,指定不区分大小写
-DWITH_BOOST=boost_1_59_0:
指定boost源码的位置,在MySQL源码的当前目录下一个叫做boost的文件夹,boost通过免费的经过同行评审的可移植的C++源库

真正开始编译安装

# 启动2个进程同时编译,2代表2个进程,建议进程数和cpu核心数量一致
make -j 2

# 安装编译好的二进制文件到指定的目录,放在当前目录下编译好的二进制文件到当时指定目录
make install

备份文件

# 备份原来的my.cnf配置文件,然后清空这个配置文件,这个文件是mariadb的,不是mysql的
cp /etc/my.cnf{,.bak}
>/etc/my.cnf

初始化MySQL

# 进入编译安装好的mysql的目录
cd /usr/local/sc_mysql/bin
# 执行mysqld这个程序,初始化我们的mysql,并且将日志和临时密码重定向到/root/temp_password.txt文件中
./mysqld --initialize --user=mysql --basedir=/usr/local/sc_mysql/ --datadir=/data/mysql &>/root/temp_password.txt

–initialize:初始化操作
–user=mysql:指定用户
–basedir=/usr/local/sc_mysql/:指定了安装 MySQL 的安装路径
–datadir=/data/mysql:指定了 MySQL 的数据库文件放在/data/mysql下
&>/root/temp_password.txt:并且将日志和临时密码重定向到对应文件中

将mysql指令写入环境变量里

# 临时修改PATH变量
PATH=$PATH:/usr/local/sc_mysql/bin
# 修改PATH变量,将mysql命令永久写入环境变量里
echo 'PATH=$PATH:/usr/local/sc_mysql/bin' >> /etc/bashrc

永久配置是要重新前端一个窗口才能生效,所有为了脚本后续的操作需要临时配置环境变量

拷贝mysqld

# 拷贝mysqld的程序文件到指定的目录,方便设置mysql开机启动,是MySQL服务的启动停止重启脚本
cp ../support-files/mysql.server /etc/init.d/mysqld

关闭防火墙和selinux

# 关闭防火墙
systemctl stop firewalld
# 禁用防火墙
systemctl disable firewalld
# 临时关闭selinux
setenforce 0
# 永久修改selinux配置文件的内容
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config

为了后续的相关操作,需要关闭防火墙和selinux

启动MySQL服务

# 设置MySQL开机启动
chkconfig mysqld on

# 启动mysql
service mysqld start

这里需要注意的是在启动MySQL服务时应该使用service命令,不要使用systemctl命令,因为systemctl命令是主要针对yum安装的,使用它很有可能是服务启动不起来

登录MySQL并修改密码

# 登录进去MySQL并且重新设置密码Pp.123456
# 从保存的临时密码文件里,截取临时文件,赋值给一个变量tmp_pwd
temp_pwd=$(cat /root/temp_password.txt |tail -1 |awk '{print $NF}')
# 给MySQL设置密码为Pp.123456
mysql -uroot -p$temp_pwd --connect-expired-password -e "set password='Pp.123456'"

mysql -uroot -p$temp_pwd --connect-expired-password -e "set password=‘Pp.123456’”:是shell脚本操作MySQL语句

编译安装一键部署脚本

#!/bin/bash

# time 2021-7-17
# company: SC
########################################
# 编译安装mysql5.7.29
# os: CentOS Linux release 7.9.2009
########################################

# 假设MySQL源码包已经上传到当前目录下

#解决软件的依赖关系
yum  install cmake ncurses-devel gcc  gcc-c++  vim  lsof bzip2 openssl-devel ncurses-compat-libs -y

# 新建用户
useradd -r -s /sbin/nologin mysql

# 新建数据目录
mkdir -p /data/mysql

# 修改数据目录的拥有者为mysql
chown mysql:mysql /data/mysql

# 解压src的rpm包
rpm -ivh mysql-community-5.7.29-1.el7.src.rpm 

# 进入/root/rpmbuild目录
cd /root/rpmbuild/SOURCES

# 解压MySQL真正的源码包
tar xf mysql-5.7.29.tar.gz

# 解压boost源码包
tar xf boost_1_59_0.tar.bz2

# 将boost包移动到mysql解压的包里
mv boost_1_59_0 mysql-5.7.29

# 进入解压后的目录
cd mysql-5.7.29
 
# 配置MySQL相关信息
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/sc_mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost_1_59_0

# 开始编译安装
# 启动进程
make -j 2

# 安装编译好的二进制文件到指定的目录,放在当前目录下编译好的二进制文件到当时指定目录
make install

# 备份原来的my.cnf配置文件,然后清空这个配置文件,这个文件是mariadb的,不是mysql的
cp /etc/my.cnf{,.bak}
>/etc/my.cnf

# 进入编译安装好的mysql的目录
cd /usr/local/sc_mysql/bin
# 执行mysqld这个程序,初始化我们的mysql,并且将日志和临时密码重定向到/root/temp_password.txt文件中
./mysqld --initialize --user=mysql --basedir=/usr/local/sc_mysql/ --datadir=/data/mysql &>/root/temp_password.txt

# 临时修改PATH变量
PATH=$PATH:/usr/local/sc_mysql/bin
# 修改PATH变量,将mysql命令永久写入环境变量里
echo 'PATH=$PATH:/usr/local/sc_mysql/bin' >> /etc/bashrc

# 拷贝mysqld的程序文件到指定的目录,方便设置mysql开机启动,是MySQL服务的启动停止重启脚本
cp ../support-files/mysql.server /etc/init.d/mysqld

# 关闭防火墙
systemctl stop firewalld
# 禁用防火墙
systemctl disable firewalld
# 临时关闭selinux
setenforce 0
# 永久修改selinux配置文件的内容
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config

# 设置MySQL开机启动
chkconfig mysqld on

# 启动mysql
service mysqld start

# 登录进去MySQL并且重新设置密码Pp.123456
# 从保存的临时密码文件里,截取临时文件,赋值给一个变量tmp_pwd
temp_pwd=$(cat /root/temp_password.txt |tail -1 |awk '{print $NF}')
# 给MySQL设置密码为Pp.123456
mysql -uroot -p$temp_pwd --connect-expired-password -e "set password='Pp.123456'"

echo '###### congratulation! your mysql has be installed successfully #####'

测试

查看服务

查看端口

lsof -i:3306

在这里插入图片描述

查看进程

ps aux|grep mysqld

在这里插入图片描述

登录MySQL

mysql -uroot -p'Pp.123456'

在这里插入图片描述

编译安装中遇到的问题

在这里插入图片描述

  1. [ERROR] --initialize specified but the data directory has files in it. Aborting.
    /zhang_data/mysql目录下已存在文件,终止运行。
    解决办法:rm -rf /zhang_data/mysql/*
  2. Check that your 0S and file system support files of this size. Check also that the disk is not full or a disk quota exceeded.
    主要意思是磁盘空间满了,无法存放MySQL安装的数据
    解决办法:清除磁盘中无意义的大文件

心得

通过对MySQL的编译安装让我对MySQL有了更深入的了解,也希望这篇文章能对大家有帮助!

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 安装步骤如下: 1. 首先,确保CentOS 7操作系统已经安装并且是最新版本。 2. 确认已经安装了必要的软件包,包括GCC、C++、CMake、GMP、MPFR和MPC库:sudo yum install -y gcc-c++ cmake ncurses-devel libaio-devel openssl-devel zlib-devel libgcrypt-devel libedit-devel libxml2-devel libxslt-devel libicu-devel libcurl-devel libpng-devel libjpeg-devel libzip-devel bzip2-devel readline-devel systemd-devel 3. 下载MySQL 5.7.34 tar包:wget -c https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.34.tar.gz 4. 解压tar包:tar -zxvf mysql-5.7.34.tar.gz 5. 进入解压后的目录:cd mysql-5.7.34 6. 创建MySQL安装目录:sudo mkdir /usr/local/mysql 7. 为MySQL安装目录赋予权限:sudo chown -R root:root /usr/local/mysql 8. 创建MySQL数据目录:sudo mkdir /var/mysql 9. 为MySQL数据目录赋予权限:sudo chown -R mysql:mysql /var/mysql 10. 在MySQL安装目录下创建编译文件夹:cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/var/mysql \ -DWITH_BOOST=/opt/boost \ -DWITH_SYSTEMD=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_SSL=system \ -DENABLED_LOCAL_INFILE=1 \ -DSYSCONFDIR=/etc \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_unicode_ci . 11. 编译:make 12. 安装:sudo make install 13. 初始化MySQL数据库:sudo /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/var/mysql 14. 启动MySQL服务:sudo systemctl start mysql 15. 修改root用户密码:sudo /usr/local/mysql/bin/mysqladmin -u root password 'new_password' 至此,MySQL 5.7.34的安装就完成了。 ### 回答2: CentOS 7 是一款非常稳定和可靠的操作系统,然而,对于一些新手来说,在安装 MySQL 时可能会遇到一些困难。如果您想在 CentOS 7 上安装 MySQL 5.7.34,则可以按照以下步骤进行操作: 步骤一:检查 tar 包 在安装 MySQL 之前,您需要从官方网站下载 MySQL 5.7.34 的tar包。请确保下载的tar包处于完好无损的状态,可以使用以下命令进行检查: $ md5sum mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz (替换为您下载的文件名) 如果输出结果与官方网站上的MD5值匹配,则说明下载的文件没有被损坏或者篡改。 步骤二:解压 tar 包 接下来,您需要使用以下命令解压tar包: $ tar -zxvf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz 解压完成后进入解压文件夹: $ cd mysql-5.7.34-linux-glibc2.12-x86_64 步骤三:创建 MySQL 用户组和用户 为了保证 MySQL 运行的安全性,我们需要创建一个新的 MySQL 用户组和用户。可以使用以下命令来创建: $ groupadd mysql $ useradd -r -g mysql -s /bin/false mysql 步骤四:安装 MySQL 完成以上步骤之后,就可以使用以下命令执行 MySQL安装: $ mkdir -p /usr/local/mysql $ chown -R mysql:mysql /usr/local/mysql $ ./bin/mysqld --initialize --user=mysql $ ./bin/mysql_ssl_rsa_setup 执行完成后,MySQL 将会自动在 /usr/local/mysql/data 目录下生成root 用户的初始密码,您可以使用以下命令查看: $ cat /usr/local/mysql/data/*-host.err | grep "A temporary password" 步骤五:启动 MySQL 启动 MySQL 可以使用以下命令: $ ./support-files/mysql.server start 您也可以将 MySQL 自动启动脚本添加到系统服务中,使 MySQL 在系统启动时自动启动: $ cp support-files/mysql.server /etc/init.d/mysqld $ chkconfig --add mysqld $ chkconfig --level 345 mysqld on 步骤六:配置 MySQL 启动 MySQL 后,您需要修改 root 用户的密码,并且修改 MySQL 的配置文件,使 MySQL 具有更好的性能和安全性。 MySQL 配置文件位于 /etc/my.cnf 或者 /usr/local/mysql/etc/my.cnf。您可以根据需要修改配置文件来改变 MySQL 的运行参数。 总结 通过以上步骤,您可以在 CentOS 7 上安装 MySQL 5.7.34,并且调整 MySQL 的性能和安全性。这些步骤都相对简单,即使是 Linux 新手也能够轻松上手,希望本文能对您在 CentOS 7 上安装 MySQL 5.7.34 有所帮助! ### 回答3: 首先,我们需要从官网(https://dev.mysql.com/downloads/mysql/5.7.html)下载MySQL 5.7.34的tar包,并解压至指定目录。 1. 解压 下载好tar包后,我们需要将它解压到指定的目录中,这里以/opt目录为例: ``` tar -zxvf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz -C /opt/ ``` 解压完毕后,我们可以看到/opt目录下多了一个mysql-5.7.34-linux-glibc2.12-x86_64目录。 2. 创建mysql用户组和用户 创建mysql用户组: ``` groupadd mysql ``` 创建mysql用户: ``` useradd -g mysql mysql ``` 3. 配置MySQL 创建一个新的MySQL配置文件my.cnf: ``` vi /etc/my.cnf ``` 在my.cnf中增加以下内容: ``` [mysqld] basedir=/opt/mysql-5.7.34-linux-glibc2.12-x86_64 datadir=/opt/mysql-5.7.34-linux-glibc2.12-x86_64/data socket=/opt/mysql-5.7.34-linux-glibc2.12-x86_64/mysql.sock user=mysql ``` 其中: - basedir:MySQL安装目录; - datadir:存放数据库文件的目录; - socket:MySQL使用的套接字文件; - user:运行MySQL服务的用户。 4. 初始化MySQL 使用mysqld_safe初始化MySQL: ``` cd /opt/mysql-5.7.34-linux-glibc2.12-x86_64 ./bin/mysqld_safe --user=mysql --datadir=/opt/mysql-5.7.34-linux-glibc2.12-x86_64/data & ``` 初始化完成后会生成一个临时密码,我们需要将它保存下来备用。 5. 修改root密码 登录MySQL,并修改root密码: ``` ./bin/mysql -uroot -p mysql> SET PASSWORD = PASSWORD('new password'); ``` 其中new password为新密码。 6. 配置systemd启动项 为了方便管理,我们可以将MySQL配置为systemd服务。 创建一个mysql.service文件: ``` vi /usr/lib/systemd/system/mysql.service ``` 输入以下内容: ``` [Unit] Description=MySQL After=network.target [Service] Type=forking ExecStart=/opt/mysql-5.7.34-linux-glibc2.12-x86_64/bin/mysqld_safe --user=mysql --datadir=/opt/mysql-5.7.34-linux-glibc2.12-x86_64/data ExecStop=/opt/mysql-5.7.34-linux-glibc2.12-x86_64/bin/mysqladmin -u root -p shutdown [Install] WantedBy=multi-user.target ``` 保存并退出。 启动MySQL服务: ``` systemctl start mysql ``` 设置MySQL自启动: ``` systemctl enable mysql ``` 7. 测试MySQL 使用以下命令测试MySQL是否正常运行: ``` ./bin/mysql -uroot -p ``` 输入之前设置的root密码,成功连接则说明MySQL安装成功。 以上就是在CentOS 7中使用tar包安装MySQL 5.7.34的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值