技术分享| 二进制部署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)
接上次的指针初阶(http://t.csdnimg.cn/oox5s),这次我们继续的探寻指针的奥秘,发车咯!!!🚗🚗🚗 一、字符指针 可以看到我们将指针p给打印出来,就是…...

二、深度测试(Z Test)
1.是什么 ①从渲染管线出发 ②书面上理解 所谓深度测试,就是针对当前对象在屏幕上(更准确的说是frame buffer)对应的像素点,讲对象自身的深度值与当前该像素点缓存的深度值进行比较,如果通过了,本对象再改…...
Vue_Bug VUE-ADMIN-TEMPLATE-MASTER electron build后无法登录
Bug描述: VUE-ADMIN-TEMPLATE-MASTER 项目在经过 electron 的 build 命令后,无法登录 问题原因: 大部分vue 前段项目 会使用 js-cookie 这个库 来操作浏览器的cookie 然而这个库 在electron下 会无法使用 (最坑的是还没报错&…...

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

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

产品经理如何有效跟进开发进度?
作为产品经理,很难跟进开发过程。随着软件开发的复杂性和不断变化的产品环境,产品经理必须保持在开发过程的顶端,并确保目标得到满足。产品经理如何跟进开发进度? 第一步是对开发过程本身有一个扎实的理解。产品经理必须熟悉开发过…...
【已解决】Qt无法追踪到mouse移动事件
本博文源于笔者正在亲身经历的Qt无法追踪到鼠标移动事件。事情是这样的,笔者有一个应用程序,当应用程序移动进窗口里的时候,每移动一下,检测鼠标位置,进而调整鼠标的形状,结果发现它这死活不听话。后来解决…...

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

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

shell脚本学习笔记03(小滴课堂)
在shell脚本中,表示变量除了可以使用$a(a是一个变量),还可以使用${a} 那这两种表示方式有什么区别么? 花括号可以和其它字符或者字母区分开来。 >追加内容 我们发现使用>会把原来的内容覆盖。 我们使用>>就不会覆盖了ÿ…...
软件工程和计算机科学与技术学习方向区别
软件工程(Software Engineering)和计算机科学与技术(Computer Science and Technology)是两个相关但不同的领域,它们涉及到计算机和软件的不同方面。以下是它们之间的主要区别: 计算机科学与技术ÿ…...
React常用hooks总结
React Hooks react常用hooks React Hooks React Hooks是React16.8版本新增的特性,它允许你在不编写class的情况下使用state以及生命周期等特性。 在React中,组件的创建方式有两种:类组件和纯函数组件。 然而,函数组件没有状态…...
【算法学习】-【滑动窗口】-【找到字符串中所有字母异位词】
LeetCode原题链接:438. 找到字符串中所有字母异位词 下面是题目描述: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&…...
利用python学习如何处理需要登录的网站
要处理需要登录的网站,你可以按照以下步骤进行学习: 了解网站的登录机制:登录机制通常有用户名密码登录、OAuth授权登录、Cookie登录等。了解目标网站使用的登录机制是学习处理的第一步。 使用Web抓取工具模拟登录:通过使用工具如…...
vue适配各个屏幕
1:不是响应式,只是用缩放来适配各个pc 2:使用中会出现由于 transform 属性导致的定位问题,具体的需要针对性的处理 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编程语言的一个重要里程碑,它引入了许多令人兴奋的新特性和改进。这些新特性不仅使Java编程更加简洁和高效,还提供了更多的功能和灵活性。在本文中,我们将探讨Java 8的一些重要新特性,并展示它们是如何改变我们…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...