MySQL的源码安装及基本部署(基于RHEL7.9)

这里源码安装mysql的5.7.44版本

一、源码安装

1.下载并解压mysql , 进入目录:

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz
tar xf mysql-boost-5.7.44.tar.gz
cd mysql-5.7.44/

2.准备好mysql编译安装依赖:

yum install cmake gcc-c++ openssl-devel ncurses-devel rpcgen  -y
yum install  libtirpc-devel-0.2.4-0.16.el7.x86_64.rpm #需到第三方仓库去找找

  可以用阿里云的链接下载https://mirrors.aliyun.com/centos-vault/7.7.1908/os/x86_64/Packages/libtirpc-devel-0.2.4-0.16.el7.x86_64.rpm​​​​​​​

3.添加参数选项:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci -DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0

   选项的详细解释如下:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安装路径
-DMYSQL_DATADIR=/data/mysql \ #指定数据目录
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \ #指定套接字文件
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #指定启用INNODB存储引擎,默认用myisam
-DWITH_EXTRA_CHARSETS=all \ #扩展字符集
-DDEFAULT_CHARSET=utf8mb4 \ #指定默认字符集
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \ #指定默认校验字符集
-DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/ #指定c++库依赖

4.开始编译安装:

尽量使用-j指定多线程进行编译以加快速度,但是要注意物理CPU数量以及内存大小,以及留有一定磁盘空间来安装mysql 一般(2-15min) 

make -j16 && make install

如编译过程出错、或者中断.Cmake 工具可以继续编译,得益于CMakeCache.txt的缓存记录.

如果想重新编译改变参数的话,需要将CMakeCache.txt先删除掉再进行编译,否则会采用之前的记录继续.

查看下大小
[root@mysql_node1 ~]# du -sh /usr/local/mysql/
1.9G        /usr/local/mysql/

二、Mysql的部署

在编译完成后即可进行mysql的部署

不能提前装有mysql类似软件!!! ⚠️  如果安装前有mysql环境一定要清理干净,再进行安装.

按照以下步骤依次操作即可:

#编译完成后:
#拷贝mysql启动程序文件 到 启动脚本目录
[root@mysql_node1 ~]# cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld

#添加mysql的bin目录环境变量
[root@mysql_node1 ~]# vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
[root@mysql_node1 ~]# source ~/.bash_profile

#编辑mysql配置文件
[root@mysql_node1 ~]# cat /etc/my.cnf
[mysqld]
datadir=/data/mysql               #mysql的数据目录
socket=/data/mysql/mysql.sock     #mysql的套接字文件路径
symbolic-links=0                  #禁用mysql创建或者使用符号链接

#创建数据目录并授权给mysql用户 如果mysql用户不存在则创建一个( useradd -s /sbin/nologin  -M mysql   )
[root@mysql_node1 ~]# mkdir -p  /data/mysql
[root@mysql_node1 ~]# chown -R mysql.mysql /data/mysql/


#以mysql用户身份初始化mysql数据库 
[root@mysql_node1 ~]# mysqld --initialize --user=mysql      
2024-08-22T13:29:13.656433Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2024-08-22T13:29:13.763601Z 0 [Warning] InnoDB: New log files created, LSN=45790
2024-08-22T13:29:13.786517Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2024-08-22T13:29:13.849416Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 85cf7691-608a-11ef-a7c1-001c4294cf16.
2024-08-22T13:29:13.851008Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2024-08-22T13:29:13.981298Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2024-08-22T13:29:13.981313Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2024-08-22T13:29:13.981701Z 0 [Warning] CA certificate ca.pem is self signed.
2024-08-22T13:29:13.996329Z 1 [Note] A temporary password is generated for root@localhost: h!y_tT)pu4hx     #生成的随机临时密码, 只能用一次,即失效需要立即重新设置root账户密码才OK.  

#启动mysqld服务
[root@mysql_node1 ~]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/mysql_node1.err'.
 SUCCESS!
 
#使用chkconfig 工具使mysqld服务开机启动
[root@mysql_node1 ~]# chkconfig mysqld on

#进行mysql安全初始化
[root@mysql_node1 ~]# mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root: #这里输入刚刚的临时密码

The existing password for the user account root has expired. Please set a new password.

New password:  #设置root密码

Re-enter new password:

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?                  #加载mysql密码安全插件,会使得密码必须复杂,试验环境一般不加.

Press y|Y for Yes, any other key for No: n
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n      #不改变root密码,因为刚刚已经设置了.

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y  #是否移除匿名用户,默认不需要
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y      #是否禁用root用户远程登录,安全起见一般禁用.
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y    #是否删除test数据库,一般不需要.
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y         #是否现在重载表的权限,是
Success.

All done!

#登录测试mysql
[root@mysql_node1 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.44 Source distribution

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql启动 关闭 重启 

/etc/init.d/mysqld start stop restart

数据目录的含义

[root@mysql_node1 ~]# ll /data/mysql/

auto.cnf: MySQL 的自动配置文件,通常用于存储一些自动生成的配置参数。
ca-key.pem, ca.pem: 用于创建和管理用于 SSL 加密连接的证书颁发机构 (CA) 的密钥和证书文件。
client-cert.pem, client-key.pem: 用于客户端连接到 MySQL 服务器时的客户端 SSL 证书和密钥文件(如果启用)。
ib_buffer_pool: 用于缓存 InnoDB 存储引擎经常访问的数据的 InnoDB 缓冲池文件。
ibdata1: InnoDB 存储引擎的数据文件,其中存储了数据库表中的数据。
ib_logfile0, ib_logfile1: InnoDB 存储引擎的 InnoDB redo log 文件,用于记录事务的更改,以实现崩溃恢复。
ibtmp1: InnoDB 存储引擎的临时文件。
mysql/: 子目录,包含 MySQL 服务器本身的一些数据文件,例如权限信息和日志文件。
mysql_node1.err: MySQL 服务器的错误日志文件。
mysql_node1.pid: MySQL 服务器的进程 ID 文件。
mysql.sock: 用于本地进程之间通信的 MySQL 套接字文件。
mysql.sock.lock: 用于锁定 mysql.sock 文件的锁定文件。
performance_schema/: 子目录,包含用于性能分析的性能架构数据文件。
private_key.pem: 用于服务器端 SSL 加密连接的服务器私钥文件。
public_key.pem: 用于服务器端 SSL 加密连接的服务器公钥文件。
server-cert.pem: 用于服务器端 SSL 加密连接的服务器证书文件。
server-key.pem: 用于服务器端 SSL 加密连接的服务器私钥文件。
sys/: 子目录,包含一些内部系统文件。

以上步骤完成,即可正常使用mysql了👍🎉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/872066.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

牛客网习题——通过C++实现

一、目标 实现下面4道练习题增强C代码能力。 1.求123...n_牛客题霸_牛客网 (nowcoder.com) 2.计算日期到天数转换_牛客题霸_牛客网 (nowcoder.com) 3.日期差值_牛客题霸_牛客网 (nowcoder.com) 4.打印日期_牛客题霸_牛客网 (nowcoder.com) 二、对目标的实现 1.求123...n_…

杰发科技AC7840——CAN通信简介(8)_通过波特率和时钟计算SEG_1/SEG_2/SJW/PRESC

通过公式计算 * 波特率和采样点计算公式:* tSeg1 (S_SEG_1 2); tSeg2 (S_SEG_2 1).* BandRate (SCR_CLK / (S_PRESC 1) / ((S_SEG_1 2) (S_SEG_2 1))), SCR_CLK 为CAN 模块源时钟* SamplePoint (tSeg1 / (tSeg1 tSeg2)). {0x0D, 0x04, 0x04, 0x3B},…

[创业之路-140] :生产 - 生产流程概述

目录 前言: 一、生产流程的基本框架 二、生产流程的关键要素 前言: 生产流程是一个广泛的概念,它涵盖了从原材料投入到成品产出的全过程。 这个过程在不同行业和领域中有所不同,但通常都包括一系列有序的步骤和环节。 以下是…

WIN 10 添加右键菜单(VSCode 打开当前目录)

WIN 10 添加右键菜单(VSCode 打开当前目录) 前言最终效果操作步骤 前言 每次打开代码都需要先打开 VSCode,再选择最近打开的项目或者浏览打开项目,感觉比较难找。所以自己添加了右键命令。 最终效果 操作步骤 cmd 打开注册表 找…

C语言程序设计(初识C语言后部分)

十七,数组 1.一维数组的创建和初始化 1)数组的创建 数组是一组相同类型元素的集合 数组的创建方式: type_t arr_name [const_n]; //type_t 是指数组的元素类型 //const_n 是一个常量表达式,用来指定数组大小 …

R语言统计分析——回归分析的改进措施

参考资料:R语言实战【第2版】 如果在回归诊断中发现了问题,我们该如何做?有四种方法可以处理违背回归假设的问题: ①删除观测点; ②变量变换; ③添加或删除变量; ④使用其他回归方法。 1、…

C语言 ——— 常见的动态内存错误(下篇)

目录 使用free释放一块动态开辟内存的一部分 对同一块动态内存多次释放 动态开辟内存忘记释放(内存泄漏) 使用free释放一块动态开辟内存的一部分 代码演示: // 动态开辟10个整型空间 int* p (int*)malloc(sizeof(int) * 10);// 判断是…

Pod基础使用

POD基本操作 1.Pod生命周期 在Kubernetes中,Pod的生命周期经历了几个重要的阶段。下面是Pod生命周期的详细介绍: Pending(待处理): 调度: Pod被创建后,首先进入“Pending”状态。此时,Kubernetes的调度器…

机器视觉运动控制一体机VPLC532E在汽车胶带缠绕的开放式CNC应用

市场应用背景 在汽车线束和零配件中,胶带缠绕是一种常见且重要的加工工艺,主要用于线束/零配件的捆扎、固定、绝缘保护等应用。在缠绕头控制下,胶带均匀缠绕在汽车线束/零配件表面,完成缠绕后,系统自动执行切割。汽车…

【CSS】使用 CSS 自定义属性(变量)-- var()

自定义属性(有时候也被称作CSS 变量或者级联变量)是由 CSS 作者定义的,它包含的值可以在整个文档中重复使用。由自定义属性标记设定值(比如: --main-color: black;),由 var() 函数来获取值&…

qtsql连接达梦数据库

odbc window和linux都有odbc的中间件,可以通过odbc中间件配合qtsql连接数据库 windows下配置odbc linux配置odbc apt install unixodbc unixodbc-dev /etc/odbcinst.ini配置 [DM8 ODBC DRIVER] DescriptionDM8 ODBC Driver DRIVER/opt/dmdbms/bin/libdodbc.so/et…

安装打印机提示“打印后台程序服务没有启动”的解决方法

1、在桌面选中“我的电脑”,鼠标右键选择“管理”; 2、在“管理”窗口中,选取“服务和应用程序”扩展项目下的“服务”选项(如图),在右侧出现系统服务列表中找到“Print Spooler”服务,双击进入…

JavaWeb基础 -- Servlet

JavaWeb基础 – Servlet 1.Servlet简介 1.1 Servlet是什么 Servlet本身是用Java编写的,运行在Web服务器上的应用程序,并作为Web浏览器和其他HTTP客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。Servlet可以收集来自网页表单输入的数据…

ARM 裸机与 Linux 驱动对比及 Linux 内核入门

目录 ARM裸机代码和驱动的区别 Linux系统组成 内核五大功能 设备驱动分类 内核类型 驱动模块 驱动模块示例 Makefile配置 命令 编码辅助工具 内核中的打印函数 printk 函数 修改打印级别 ​编辑 打印级别含义 驱动多文件编译 示例 模块传递参数 命令行传递参数…

【机器学习】经典CNN架构

第一章:引言 1.1 研究背景 机器学习的发展历程 机器学习作为人工智能的重要分支,其发展历程可以追溯到20世纪50年代。初期的机器学习研究主要集中在规则系统和基本的统计学习方法上。随着计算能力的提升和数据的积累,机器学习逐渐发展出更为复杂的算法和模型。20世纪80年…

7.添加购物车以及完善导航条跳转

添加购物车 一、引言二、前端2.1引入轻组件2.2为图片添加点击事件2.3创建addShoppingCart函数 三、后端四、运行效果五、导航条跳转 一、引言 在前几篇文章中,我们一步一步慢慢的实现了项目的建立,从数据库获取数据显示在页面,商品大图查看&…

C++ JAVA源码 HMAC计算 openssl 消息认证码计算 https消息防篡改 通信安全

签名和验签 把所有消息按顺序合并成一条信息,对这个信息用密钥进行签名。 签名信息通过 HTTP 头 Sign 传递,没有携带签名或者签名验证不通过的请求,将会被认为异常请求,并返回相应 code 码。 校验方法:根据 http请求…

国产3A游戏《黑神话悟空》中AI绘画技术的运用与探索

导语:近年来,我国游戏产业不断发展,越来越多的国产游戏开始尝试运用AI技术,以提升游戏品质。其中,国产3A游戏《黑神话悟空》便在原画设计过程中,巧妙地运用了AI绘画技术。本文将带你了解《黑神话悟空》如何…

【计算机三级-数据库技术】操作题大题(第六套)

第六套操作题 第46题 假定要建立一个学校科研项目管理的信息系统,需要管理如下信息: 教师:教师编号、教师姓名; 项目:项目编号、项目名称、资助额: 学生:学生编号、学生姓名、学位&#xff0c…

Vodafone 推出了与 Wi-Fi 竞争的基于树莓派私人5G技术

随着全球5G网络的逐步推出,在其过程中遇到了可预见的起起伏伏,并且蜂窝技术也开始进入另一个无线技术 Wi-Fi ,并且已经占据的市场。私有5G网络(即个人或公司建立自己的全设施蜂窝网络)如今正在寻找曾经属于Wi-Fi的唯一…