Linux源码包安装MySQL数据库

一、安装环境介绍

1.CentOS7.9虚拟机

2.mysql-boost-5.7.42.tar源码包,自MySQL5.7版本开始需要依赖boots库,如果未安装boots库,建议下载mysql-boost源码包,否则需要额外安装boost库,MySQL下载地址https://downloads.mysql.com/archives/community/

二、源码包安装MySQL

1.检查&卸载mariadb组件

在CentOS7.9中,默认安装了mariadb-libs组件,该组件会与MySQL冲突,建议检查并卸载,否则会导致安装MySQL失败。

rpm -qa |grep mariadb 检查是否安装了mariadb组件

rpm -e --nodeps mariadb-libs 卸载mariadb-libs组件并且不检查依赖

bash 复制代码
[root@wzh101 ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@wzh101 ~]# rpm -e --nodeps mariadb-libs

2.安装依赖包

MySQL编译安装依赖一些基础包,需要先安装这些依赖包,否则可能导致编译安装异常,这里采用yum方式安装

bash 复制代码
yum install -y cmake make gcc gcc-c++ openssl openssl-devel ncurses ncurses-devel bison bison-devel

3.上传并解压MySQL源码包

通过Xftp或其他FTP软件,将下载好的源码包上传到Linux中,我是将源码包上传到/usr/local/tmp目录中,若上传到其他目录,则cd 相应目录即可,解压缩源码包:

bash 复制代码
[root@wzh101 tmp]# cd /usr/local/tmp
[root@wzh101 tmp]# ls
mysql-boost-5.7.42.tar.gz
[root@wzh101 tmp]# tar -zxvf mysql-boost-5.7.42.tar.gz
[root@wzh101 tmp]# ls
mysql-5.7.42  mysql-boost-5.7.42.tar.gz

4.进行预编码

MySQL与其他软件不同,不是使用./configure进行预编译的,而是使用cmake进行预编译的

bash 复制代码
[root@wzh101 tmp]# cd mysql-5.7.42/
[root@wzh101 mysql-5.7.42]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_TCP_PORT=3306 -SYSCONFDIR=/etc -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_INNODB_MEMCACHED=ON -DWITH_BOOST=boost/boost_1_59_0

预编译基础配置解释,根据需要选择配置

bash 复制代码
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql				#安装位置
-DMYSQL_DATADIR=/usr/local/mysql/data				#数据库数据存放位置
-DMYSQL_TCP_PORT=3306								#端口
-SYSCONFDIR=/etc									#my.cnf配置文件所在位置,建议使用/etc
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock	#套接字socket文件路径
-DWITH_INNOBASE_STORAGE_ENGINE=1		            #将InnoDB存储引擎编译到服务器中
-DWITH_PARTITION_STORAGE_ENGINE=1				    #是否支持分区
-DWITH_FEDERATED_STORAGE_ENGINE=1				    #本地数据库是否可以访问远程mysql数据
-DWITH_BLACKHOLE_STORAGE_ENGINE=1				    #黑洞存储引擎,接收数据但不存储直接丢弃
-DWITH_MYISAM_STORAGE_ENGINE=1					    #将MYISAM存储引擎静态编译到服务器中
-DENABLED_LOCAL_INFILE=1					        #启用本地加载外部数据文件功能,建议开启
-DEXTRA_CHARSETS=all							    #扩展字符集
-DDEFAULT_CHARSET=utf8mb4							#默认字符集
-DDEFAULT_COLLATION=utf8mb4_general_ci				#默认校验规则
-DWITH_SSL=system									#SSL支持类型
-DWITH_BOOST=boost/boost_1_59_0						#Boost库源代码的位置
-DWITH_INNODB_MEMCACHED=ON							#启用InnoDB 存储引擎对 Memcached 的支持

看到这个证明预编译完成,但还是需要检查一下编译过程中是否有提示某些依赖包未找到,如有错误,建议删除已解压的mysql目录,从解压步骤重新开始操作。

bash 复制代码
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/tmp/mysql-5.7.42

5.编译安装

这一步执行会比较慢,等待它执行完成即可,如果CPU是多核的可以使用make -jx,多线程进行编译

bash 复制代码
[root@wzh101 mysql-5.7.42]# make && make install

三、初始化数据库

1.创建相关目录

编译安装完毕后,需要为MySQL创建相关目录

bash 复制代码
[root@wzh101 mysql-5.7.42]# cd /usr/local/mysql
[root@wzh101 mysql]# mkdir -p /usr/local/mysql/data
[root@wzh101 mysql]# mkdir -p /usr/local/mysql/tmp
[root@wzh101 mysql]# mkdir -p /usr/local/mysql/logs
[root@wzh101 mysql]# useradd -r -s /bin/nologin mysql
[root@wzh101 mysql]# chown -R mysql:mysql /usr/local/mysql

cd /usr/local/mysql #打开MySQL所在目录

mkdir -p /usr/local/mysql/data #创建MySQL数据存储目录

mkdir -p /usr/local/mysql/tmp #创建socket套接字存放目录

mkdir -p /usr/local/mysql/logs #创建MySQL日志存放目录

useradd -r -s /bin/nologin mysql #创建一个用户,用来管理MySQL软件的运行

chown -R mysql:mysql /usr/local/mysql #修改/usr/local/mysql下所有文件的所有者所属组为mysql

2.编辑MySQL配置文件

根据需要修改配置

bash 复制代码
[root@wzh101 mysql]# vi /etc/my.cnf

[client]                                                #客户端设置
port=3306                                               #服务器监听端口,默认为3306
socket=/usr/local/mysql/tmp/mysql.sock                  #Unix套接字文件路径,默认/tmp/mysql.sock

[mysqld]                                                #服务端设置
## 一般配置选项
port=3306                                               #服务器监听端口,默认为3306
basedir=/usr/local/mysql                                #MySQL安装根目录
datadir=/usr/local/mysql/data                           #MySQL数据文件目录
socket=/usr/local/mysql/tmp/mysql.sock                  #Unix套接字文件路径,默认/tmp/mysql.sock
pid-file=/usr/local/mysql/tmp/mysql.pid                 #服务进程pid文件路径
character_set_server=utf8mb4                            #默认字符集
default_storage_engine=InnoDB                           #默认InnoDB存储引擎
user=mysql

log_error=/usr/local/mysql/logs/error.log               #错误日志存放路径

3.初始化MySQL

bash 复制代码
[root@wzh101 mysql]# bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql

4.检查初始化是否成功

在/usr/local/mysql/data目录存在这些文件,说明初始化成功

bash 复制代码
[root@wzh101 mysql]# ls data
auto.cnf    ca.pem           client-key.pem  ibdata1      ib_logfile1  performance_schema  public_key.pem   server-key.pem
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile0  mysql        private_key.pem     server-cert.pem  sys

四、使用systemctl命令管理MySQL

1.配置环境变量

为MySQL配置环境变量

bash 复制代码
[root@wzh101 mysql]# echo export MYSQL_HOME=/usr/local/mysql >> /etc/profile
[root@wzh101 mysql]# echo export PATH=$MYSQL_HOME/bin:$PATH >> /etc/profile
[root@wzh101 mysql]# source /etc/profile

echo export MYSQL_HOME=/usr/local/mysql >> /etc/profile #软件的路径

echo export PATH=MYSQL_HOME/bin:PATH >> /etc/profile #命令的路径

source /etc/profile #重新加载系统环境变量配置文件

2.systemctl命令管理MySQL

复制配置文件到init.d目录使系统能够使使用systemctl命令管理MySQL

bash 复制代码
[root@wzh101 init.d]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
[root@wzh101 init.d]# cd /etc/init.d/
[root@wzh101 init.d]# chmod +x mysql
[root@wzh101 init.d]# systemctl daemon-reload

3.启动MySQL

bash 复制代码
[root@wzh101 init.d]# systemctl start mysql
[root@wzh101 init.d]# 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 二 2025-02-11 23:28:39 CST; 5s ago    ative证明MySQL已经启动成功

4.设置MySQL开启自动动

bash 复制代码
[root@wzh101 init.d]# chkconfig mysql on

5.设置MySQL命令

设置软链接,把MySQL的命令都放在默认的命令里面,使得可以在系统的任何地方使用MySQL的命令

bash 复制代码
[root@wzh101 init.d]# ln -s /usr/local/mysql/bin/* /usr/local/bin/

6.登录使用数据库

自MySQL5.7版本起,MySQL初始有默认密码,存放在日志文件当中

bash 复制代码
[root@wzh101 init.d]# cat /usr/local/mysql/logs/error.log |grep root
#2025-02-11T15:16:33.756118Z 1 [Note] A temporary password is generated for root@localhost: jjB_&CF1=Pri

冒号后面的是密码,复制密码,会提示请输入密码,将复制的密码粘贴,按回车即可登录MySQL

bash 复制代码
[root@wzh101 init.d]# mysql -u root -p

登录MySQL后需要先修改密码,否则无法进行其他操作,set password=password('123456')

bash 复制代码
mysql> set password=password('123456');

至此,MySQL源码包安装成功,可以使用MySQL数据库了

相关推荐
m0_6632340129 分钟前
flask后端开发(8):Flask连接MySQL数据库+ORM增删改查
数据库·mysql·flask
黑客Ash1 小时前
网络安全工程师逆元计算 网络安全逆向
linux·服务器·web安全
lj15305629652 小时前
第5章 数据库系统(选择|案例|论文)(重点★★★★★)
数据库·系统分析师
爱吃喵的鲤鱼2 小时前
Linux——网络(https)
linux·网络·https
Navicat中国2 小时前
PostgreSQL 开发利器:Navicat 核心功能与资源攻略
数据库·postgresql·navicat
向上的车轮2 小时前
OpenEuler学习笔记(二十三):在OpenEuler上部署开源MES系统
linux·笔记·学习·开源
布谷歌3 小时前
【注意】sql语句where条件中的数据类型不一致,不仅存在性能问题,还会有数据准确性方面的bug......
android·数据库·sql·bug
不爱学英文的码字机器3 小时前
[操作系统] 进程程序替换
linux·运维·服务器
嘻嘻哈哈173 小时前
docker搭建mysql
mysql·docker·容器