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数据库了

相关推荐
等猪的风16 分钟前
centos 磁盘重新分割,将原来/home 下部分空间转移到 / 根目录下
linux·运维·centos
米糕.19 分钟前
正则表达式:贪婪匹配与非贪婪匹配
大数据·开发语言·数据库·数据分析·r语言
生活百般滋味,人生需要笑对。 --佚名1 小时前
linux按照nginx
linux·服务器·nginx
明月看潮生1 小时前
青少年编程与数学 02-011 MySQL数据库应用 02课题、MySQL数据库安装
数据库·mysql·青少年编程·编程与数学
用户86178277365181 小时前
整表复制
java·后端·mysql
Tipriest_2 小时前
linux环境下快速输出电脑的系统/硬件/显卡/网络/已安装软件等信息
linux·网络·电脑·信息输出
多云的夏天2 小时前
ubuntu24.04-qt5-mysql8.0
linux·运维·服务器
一匹电信狗2 小时前
【Linux我做主】基础命令完全指南上篇
linux·服务器·开发语言·c++·开源·ssh·unix
后端小肥肠2 小时前
GitHub星标20K!Chat2DB:用说人话的方式写SQL
数据库·sql·openai
jay丿2 小时前
在 Django 中通过 `/media/xxxx` URL 访问上传资源的安全性与实践
数据库·django·sqlite