当前位置: 首页 > news >正文

技术分享| 二进制部署MySQL

一、介绍

​MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

二、应用环境

与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL [1] 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本。

​Linux作为操作系统,Apache 或Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合

三、系统特性

1、MySQL使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。

2、支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。

3、Group Replication:MySQL 5.7.21 引入了 Group Replication 功能,这是 MySQL 的一种高可用性和复制解决方案。它基于组复制协议,允许将一个 MySQL 服务器组成员作为复制集群的一部分。Group Replication 提供了自动故障检测和恢复机制,以确保数据的一致性和可用性。

4、JSON 支持的增强:MySQL 5.7.21 对 JSON 类型进行了增强。它引入了一些新的 JSON 函数和操作符,使得在处理和查询存储为 JSON 数据的字段时更加灵活和方便。此外,还提供了更好的 JSON 支持以及对 JSON 数据的索引和搜索功能。

5、InnoDB 存储引擎的改进:InnoDB 是 MySQL 默认的事务性存储引擎,在 MySQL 5.7.21 中进行了一些改进。这些改进包括性能优化、并发性增强、稳定性提升以及对空间和存储管理的改进。

6、GIS 功能的增强:MySQL 5.7.21 进一步加强了对地理空间数据的支持。它引入了新的 GIS 函数和操作符,提供了更强大的地理空间数据处理能力。这些功能使得在存储和查询地理空间数据时更加方便和高效。

7、优化器和执行计划改进:MySQL 5.7.21 对查询优化器进行了一些改进,以提高查询的执行性能。这些改进包括索引选择和使用的优化、执行计划的改进以及查询性能的优化策略。

8、安全性增强:MySQL 5.7.21 引入了一些安全性增强的功能。其中包括密码强度检查和密码过期功能的改进,以及对安全连接(Secure Connection)的支持。

四、服务部署

1、下载MySQL官方包

## 下载MySQL
[root@localhost ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

2、解压并移动安装包

# 解压 tar -zxvf 待解压目录
[root@localhost ~]# tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz# 移动 mv 移动目录 移动后的目录
[root@localhost ~]# mv mysql-5.7.21-linux-glibc2.12-x86_64 /usr/local/mysql

3、创建数据目录

# 进入MySQL目录
[root@localhost ~]# cd /usr/local/mysql# 创建data文件夹(也可以根据那个磁盘大而定__df -Th查看)
[root@localhost mysql]# mkdir data

4、创建mysql用户权限

# 创建msyql组
[root@localhost mysql]# groupadd mysql# 创建mysql用户并添加到mysql组中,-r表示mysql是系统级用户,-g是所属组为mysql
[root@localhost mysql]# useradd -r -g -U mysql mysql# 修改mysql目录的组以及权限
[root@localhost mysql]# chown mysql:mysql -R ./

5、修改MySQL配置文件

[root@localhost mysql]# vi /etc/my.cnf

[mysqld]
## 用于指定 MySQL 服务器绑定的网络接口地址,127.0.0.1代表只能本地访问
bind-address = 127.0.0.1
port = 3306
user = mysql# mysql解压目录
basedir = /usr/local/mysql# 数据存放目录
datadir = /usr/local/mysql/data# 跳过密码验证
# skip-grant-tables# socker文件存放目录
socket = /tmp/mysql.sock# 错误日志
log-error = /usr/local/mysql/data/mysql.error# mysql进程号
pid-file = /usr/local/mysql/data/mysql.pid# 日志记录慢查询SQL
slow_query_log = true
slow_query_log_file = /usr/local/mysql/data/mysql_slow_query.log
long_query_time = 1#记录没有使用index的查询记录
log-queries-not-using-indexes
sql_mode = NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER

6、初始化MySQL

# 初始化  --defaults-file为配置文件所在 ,--basedir为解压路径,--datadir为数据保存路径 --user表示MySQL所属用户
[root@localhost mysql]# ./bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql --initialize## 如果执行完初始化没有报错,复制MySQL启动脚本到/etc/init.d/目录便于使用service mysql start启动
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql

7、查看密码

## 初始化MySQL是会生产一个临时密码,可以通过查看在my.cnf中配置的log-error的配置文件知晓。
[root@localhost mysql]# cat data/mysql.error
root@localhost: 2(Q!o_an6ZaI   ##通常最后一行

8、设置systemd启动文件

[root@localhost mysql]# vim /usr/lib/systemd/system/mysql.service

[Unit]
Description=MySQL Server
Documentation=man:mysqld()
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target[Install]
WantedBy=multi-user.target[Service]
User=mysql
Group=mysql
PIDFile=/usr/local/mysql/data/mysqld.pid# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=# Execute pre and post scripts as root
PermissionsStartOnly=true
# Needed to create system tables
#ExecStartPre=/usr/bin/mysqld_pre_systemd# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid
#注意这里要加上 --daemonize
# Use this to switch malloc implementation
#EnvironmentFile=-/etc/sysconfig/mysql# Sets open_files_limit
LimitNOFILE = 
Restart=on-failure
RestartPreventExitStatus=
PrivateTmp=false

9、启动服务

## 开机自启动
[root@localhost mysql]# systemctl enable --now mysql.service

10、设置环境变量

[root@localhost mysql]# vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin		## 最后一行添加
[root@localhost mysql]# source /etc/profile

11、修改密码

## 登入MySQL
[root@localhost mysql]# mysql -uroot -p
Enter password: 	## mysql.error获取的临时密码ep(U:hpym0&f## 修改密码
mysql> SET PASSWORD = PASSWORD('123456');
mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
mysql> FLUSH PRIVILEGES; ## 设置MySQL远程登入
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 
mysql> FLUSH PRIVILEGES; 

五、开放相关端口

[root@localhost mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@localhost mysql]# firewall-cmd --reload

在这里插入图片描述

相关文章:

技术分享| 二进制部署MySQL

一、介绍 ​MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System&#x…...

3.1 模板测试与深度测试(Stencil Test Z Test)

一、模板测试(Stencil Test) 模板测试可以实现的一些效果图 1.是什么 ①从渲染管线出发:模板测试是在逐片源操作阶段,透明测试之后,深度测试之前的位置。 ②从书面概念上理解 说到模板测试,就要先说道模…...

一些常见的必须会的谭浩强基本代码大全也是常考的应试是没问题的

//1. 1£¡+2£¡+3£¡+...20! /* #include <stdio.h> int main() {int i;long sum=0,k=1;for(i=1;i<=20;i++){k*=i;sum+=k;}printf("%d",sum); } *///方法2 /* #include <stdio.h> int main() {int i,j;long sum=0,k;for(i…...

C语言天花板——指针(进阶1)

接上次的指针初阶&#xff08;http://t.csdnimg.cn/oox5s&#xff09;&#xff0c;这次我们继续的探寻指针的奥秘&#xff0c;发车咯&#xff01;&#xff01;&#xff01;&#x1f697;&#x1f697;&#x1f697; 一、字符指针 可以看到我们将指针p给打印出来&#xff0c;就是…...

二、深度测试(Z Test)

1.是什么 ①从渲染管线出发 ②书面上理解 所谓深度测试&#xff0c;就是针对当前对象在屏幕上&#xff08;更准确的说是frame buffer&#xff09;对应的像素点&#xff0c;讲对象自身的深度值与当前该像素点缓存的深度值进行比较&#xff0c;如果通过了&#xff0c;本对象再改…...

Vue_Bug VUE-ADMIN-TEMPLATE-MASTER electron build后无法登录

Bug描述&#xff1a; VUE-ADMIN-TEMPLATE-MASTER 项目在经过 electron 的 build 命令后&#xff0c;无法登录 问题原因&#xff1a; 大部分vue 前段项目 会使用 js-cookie 这个库 来操作浏览器的cookie 然而这个库 在electron下 会无法使用 &#xff08;最坑的是还没报错&…...

睡衣内衣服装商城小程序的作用是什么

服装行业一直都是市场很重要的组成部分&#xff0c;每个人都需要&#xff0c;且根据品牌、样式作用等可以细分很多类目&#xff0c;其中睡衣内衣也有不小的市场规模&#xff0c;从业商家多、市场需求度高。 但同时睡衣内衣经营痛点也比较明显。 当今消费者习惯于线上消费&…...

idea怎么设置作者信息(详细)

目录 一&#xff1a;在Java类的开头自动注释作者名字和日期等信息 二&#xff1a;给Java的方法注释作者名字和日期等信息 1. 不可修改的模板&#xff1a;Postfix Completion 2. 可修改的模板&#xff1a;Live Templates tips&#xff1a;首先给大家推荐两款好用的免费软件&…...

产品经理如何有效跟进开发进度?

作为产品经理&#xff0c;很难跟进开发过程。随着软件开发的复杂性和不断变化的产品环境&#xff0c;产品经理必须保持在开发过程的顶端&#xff0c;并确保目标得到满足。产品经理如何跟进开发进度&#xff1f; 第一步是对开发过程本身有一个扎实的理解。产品经理必须熟悉开发过…...

【已解决】Qt无法追踪到mouse移动事件

本博文源于笔者正在亲身经历的Qt无法追踪到鼠标移动事件。事情是这样的&#xff0c;笔者有一个应用程序&#xff0c;当应用程序移动进窗口里的时候&#xff0c;每移动一下&#xff0c;检测鼠标位置&#xff0c;进而调整鼠标的形状&#xff0c;结果发现它这死活不听话。后来解决…...

Dubbo从0到1——万字完整学习笔记

目录 RPC理论概述 RPC的基本思想 RPC的实现组成部分 RPC的实现流程 RPC的核心思想 RPC调用分类 初识Dubbo Dubbo特性 Dubbo设计架构 zookeeper环境搭建 搭建注册中心环境 搭建监控中心环境 Dubbo入门案例(Dubbo Spring) 实现步骤 搭建中介者组件共享资源 打包为jar&#xf…...

Rust初接触

一、什么是Rust Rust 是由 Mozilla 开发的多范式编程语言&#xff0c;专注于性能和安全性。 Rust 以其先进的安全并发能力而闻名&#xff0c; 它的语法类似于 C&#xff0c;但它提供了更快的速度和内存安全性&#xff0c;但不使用垃圾收集器。 Rust 最初是为 Mozilla Firefox …...

shell脚本学习笔记03(小滴课堂)

在shell脚本中&#xff0c;表示变量除了可以使用$a(a是一个变量)&#xff0c;还可以使用${a} 那这两种表示方式有什么区别么&#xff1f; 花括号可以和其它字符或者字母区分开来。 >追加内容 我们发现使用>会把原来的内容覆盖。 我们使用>>就不会覆盖了&#xff…...

软件工程和计算机科学与技术学习方向区别

软件工程&#xff08;Software Engineering&#xff09;和计算机科学与技术&#xff08;Computer Science and Technology&#xff09;是两个相关但不同的领域&#xff0c;它们涉及到计算机和软件的不同方面。以下是它们之间的主要区别&#xff1a; 计算机科学与技术&#xff…...

React常用hooks总结

React Hooks react常用hooks React Hooks React Hooks是React16.8版本新增的特性&#xff0c;它允许你在不编写class的情况下使用state以及生命周期等特性。 在React中&#xff0c;组件的创建方式有两种&#xff1a;类组件和纯函数组件。 然而&#xff0c;函数组件没有状态…...

【算法学习】-【滑动窗口】-【找到字符串中所有字母异位词】

LeetCode原题链接&#xff1a;438. 找到字符串中所有字母异位词 下面是题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&…...

利用python学习如何处理需要登录的网站

要处理需要登录的网站&#xff0c;你可以按照以下步骤进行学习&#xff1a; 了解网站的登录机制&#xff1a;登录机制通常有用户名密码登录、OAuth授权登录、Cookie登录等。了解目标网站使用的登录机制是学习处理的第一步。 使用Web抓取工具模拟登录&#xff1a;通过使用工具如…...

vue适配各个屏幕

1:不是响应式&#xff0c;只是用缩放来适配各个pc 2&#xff1a;使用中会出现由于 transform 属性导致的定位问题&#xff0c;具体的需要针对性的处理 App.vue <div id"app" ><div class"app-view" :style"{--scale:scale}"><…...

在conda创建的虚拟环境中安装jupyter以及使用

1. 进入你的虚拟环境 conda activate conda_env_name 2. 安装jupyter notebook conda install -y jupyter 3. 启动jupyter jupyter notebook 4. 将conda环境添加到jupyter的内核中 conda install ipykernel python -m ipykernel install --name conda_env_namepython -m…...

【Java 8的新特性】

引言 Java 8是Java编程语言的一个重要里程碑&#xff0c;它引入了许多令人兴奋的新特性和改进。这些新特性不仅使Java编程更加简洁和高效&#xff0c;还提供了更多的功能和灵活性。在本文中&#xff0c;我们将探讨Java 8的一些重要新特性&#xff0c;并展示它们是如何改变我们…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...