Anolis OS 8.8 CentOS8离线安装mysql-8.0.9

news2024/11/22 14:11:11

下载mysql安装包:
mysql下载地址

在Linux系统中,mysql的安装包除了要区分系统和cpu架构之外,还区分安装方式,下载不同的包,安装方式也完全不一样,安装完成后的效果也完全不一样。

我之前下载的包按照官方安装方式安装后,mysql的运行文件,配置文件,数据文件等等存储在不同的目录,这样对于经常离线操作的我来说,很不方便,迁移起来极为复杂,所以我在习惯上更倾向于安装完成后,是一整块文件夹,方便后期维护管理,这篇文章也是记录安装完成后一整块文件的方式。

下载界面
在这里插入图片描述
在这里插入图片描述
系统类型选择Linux - Generic,我之前选择的别的,安装完成后,mysql文件就是东一块西一块的,目录还不能自定义,注意根据自己系统情况下载。
在这里插入图片描述
安装:
安装包上传到服务器指定目录,上传方式就不说了,不同的软件方式都不一样,但方式大差不差,上传目录自定义,无所谓,图方便的话,直接上传到自己想安装的目录。

解压安装包:

tar -Jxvf mysql-8.0.39-linux-glibc2.28-x86_64.tar.xz

解压完成后,想改文件夹名称的可以自定义改一下,随便你怎么改,以我这里为例,我直接改成"mysql"名字。
在这里插入图片描述

这个包是免安装的,其实解压完成后,相当于就安装完成了,但是还需要配置一些东西。

进入mysql目录:

cd mysql

新建tmp、log、etc等目录:
tmp目录不是必须的,根据现场情况而定,根据项目程序而定,因为我遇到过类似的问题,如果没有这个文件夹,在程序与mysql交互期间,不定时会出现各种问题,具体啥问题抱歉我也忘了,只是当时找到解决方式就是在mysql根目录创建这个文件夹,并配置在my.cnf配置文件中,久而久之,这个习惯就保留下来了。

mkdir tmp
mkdir log
mkdir etc

在etc目录中创建my.cnf文件,并复制以下配置:
注意mysql目录根据自己实际情况做更改,用户也根据自己实际情况做更改。

[client]
port = 3306

#设置socke文件所在目录,必须和mysqld下socket配置一致
socket =  /tmp/mysql.sock
 
[mysqld]
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 1
 
#服务端口号 默认3306
port = 3306

#用户
user = user

#允许访问的IP网段
bind-address = 0.0.0.0

#设置socke文件所在目录,必须和client下socket配置一致
socket =  /tmp/mysql.sock

# MySQL X 插件配置
mysqlx-bind-address = ::
mysqlx_socket = /home/user/project/serv/mysql/mysqlx.sock
 
#mysql安装根目录
basedir = /home/user/project/serv/mysql
 
#mysql数据文件所在位置
datadir = /home/user/project/serv/mysql/data
 
#pid
pid-file = /home/user/project/serv/mysql/mysql.pid

 
#设置临时目录
tmpdir = /home/user/project/serv/mysql/tmp
 
#错误日志
log_error=/home/user/project/serv/mysql/log/mysql.log

#共享库
plugin-dir = /home/user/project/serv/mysql/lib/plugin

#用来存放一些特定类型的数据文件的目录
#secure-file-priv = /home/user/project/serv/mysql/mysql-files
 
#设置认证插件
authentication_policy=mysql_native_password
 
#设置sqlmode(根据需求自定义)
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

#跳过密码登录
#skip-grant-tables
 
#主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容
skip-external-locking
 
#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve = 1
 
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
 
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
 
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
 
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 0

#用于指定 MySQL 错误消息文件的位置
#lc-messages-dir = /home/user/project/serv/mysql/share/mysql-8.0
 
#最大连接数
max_connections = 2048
 
#最大错误连接数
max_connect_errors = 1000
 
#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp = true
 
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet = 128M
 
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
 
#内部内存临时表的最大值 ,设置成128M。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 134217728
max_heap_table_size = 134217728
 
#mysql binlog日志文件保存的过期时间,过期后自动删除(3天)
binlog_expire_logs_seconds = 259200

授权:
如果有tmp目录,就要给这个目录最高权限。
而bin目录是给bin目录里面的东西最高权限,所以两个命令不一样。
其他的目录与文件就不需要给权限了,默认权限就行,特别是etc配置文件,我有次自作主张改了它的权限,mysql反而运行不了了。

sudo chmod 777 /home/user/project/serv/mysql/tmp
sudo chmod 777 /home/user/project/serv/mysql/bin/*

初始化数据库:
然后我看很多教程说要创建一个mysql用户,刚开始接触linux部署mysql时,让我进入了一个误区,以为在linux上面安装mysql,必须创建名称叫mysql的用户才行,后来才慢慢知道,只要除root用户外,另外有一个普通用户就行,叫啥名字都行,就比如我这里用户名是user,那我就不需要再去创建mysql用户,这个用户其实就是系统用户,注意并不是mysql软件的用户。

mysqld --initialize --user=普通系统用户的名称

初始化完成后,界面会输出临时密码,记录好这个密码,后面会用。

准备工作完成,到这里可以测试运行一下:

/home/user/project/serv/mysql/bin/mysqld --defaults-file=/home/user/project/serv/mysql/etc/my.cnf

如果运行失败,大概率是配置文件有问题,小概率是其他原因,这个原因就多了,各种各样,这个就不细说了,每个人遇到的情况不一样,只能遇到问题时再去排查。

命令登录mysql:

mysql -uroot -p

输入刚才的密码,然后回车登录:

修改mysql密码:

alter user root@localhost identified by '新密码';

进入mysql数据库:

use mysql;

设置远程连接:
意思是任何ip都能远程访问mysql的root用户,这里的root就是mysql的用户了,不是系统用户。

update user set host='%' where user='root';

刷新权限:

flush privileges;

退出mysql登录:

quit;

到这里,可以用navicat等类似工具远程访问试试,注意开通3306端口,能连接成功,mysql算是安装完成了一大半,为什么说一大半,是因为像mysql这种关系库,在linux系统中,一般是安装成系统服务,当系统重启或开机时,会自动启动mysql,而刚刚我们是手动命令运行的,所以接下来要把mysql安装成系统服务,也很简单。

把程序安装成系统服务,我记得是有三种方式,我就记录我最常用的一种,另外两种我也忘了,懒得去找了,安装系统服务之前,记得先关闭刚刚启动的mysql。

创建"mysql.service"文件,并复制以下内容到此文件,注意根据自己实际情况更改目录和用户:

[Unit]
Description=MySQL server
After=syslog.target network.target
 
[Service]
#这个设置适用于那些在启动时会fork一个子进程,然后父进程立即退出的服务。
Type=forking

#mysql只能用普通用户运行,用root用户运行有问题,且用户组配置必须是root
User=user
Group=root

#设置为0也意味着systemd将不再能够强制终止或重启长时间无响应的服务
TimeoutSec=0

#当这个选项被设置为true时,它指示systemd在服务启动时应用权限更改,但在服务运行过程中不维持这些权限。
PermissionsStartOnly=true

#on-failure意味着当服务的退出状态表明它遭遇了一个错误或异常情况时,systemd将尝试重启该服务。
Restart=on-failure

#这个延迟可以用来避免过于频繁的重启循环,即所谓的“restart storm”。在本例中,systemd将在尝试重启服务前等待3秒。
RestartSec=3

#1被添加到这个列表中,意味着如果服务以状态码1退出,systemd将不会重启该服务,即使它认为这是一个失败状态。
RestartPreventExitStatus=1

#如果设置为true,service将获得一个独立的临时文件存储区域,与其他服务和系统进程隔离。这有助于增强安全性,防止服务之间可能的干扰。但是,如果设置为false(如所示),则服务将使用系统共享的/tmp和/var/tmp目录,这可能会降低安全性,但也可能在某些情况下提供更好的性能或资源利用。
PrivateTmp=false

#运行命令
ExecStart=/home/user/project/serv/mysql/bin/mysqld --defaults-file=/home/user/project/serv/mysql/etc/my.cnf --daemonize
 
[Install]
WantedBy=multi-user.target

复制mysql.service文件到/usr/lib/systemd/system目录:

sudo cp mysql.service /usr/lib/systemd/system

设置mysql服务为开机自启:

sudo systemctl daemon-reload
sudo systemctl enable mysql
sudo systemctl start mysql

最后一步,重启服务器测试mysql是否开机自启:

sudo reboot

系统重启后,用navicat等软件远程连接一下,能正常连接基本就没啥问题了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zabbix企业级应用案列

随着业务的越发复杂,对软件系统的要求越来越高,这意味着我们需要随时掌控系统的运行情况。因此,对系统的实时监控以及可视化展示,就成了基础架构的必须能力。 一、zabbix可视化 1.Grafana 简介 Grafana 是一个开源的指标量监测和…

汽车保养维修|基于java的汽车保养系统小程序(源码+数据库+文档)

汽车保养系统小程序 目录 基于java的汽车保养系统小程序 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师,阿里云…

简单聊聊bait文件

场景:业务同事发现某云主机部署了企业主机安全,在该主机上发现了一个诱饵文件,显示注意:此文件是诱饵文件,用于防止重要文件被病毒加密。请勿修改或删除此文件。 解决方法:联系企业主机安全运维同事发现&am…

基于SpringBoot+Vue的小区停车场管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

opencv之图像轮廓(三)--凸包

文章目录 前言获取凸包凸缺陷几何学测试测试轮廓是否是凸形的点到轮廓的距离 形状场景算法比较轮廓轮廓的特征值宽高比ExtentSolidity等效直径(Equivalent Diameter)方向掩模和像素点使用Numpy函数获取轮廓像素点使用OpenCV函数获取轮廓点 最大值和最小值…

太牛了!AI大佬的课程!吴恩达、李飞飞、李宏毅、Hinton、LeCun...

本文精心梳理了AI顶级大佬教授的人工智能课程,涵盖了深度学习、机器学习等多个领域的前沿内容。 这些课程将引领您深入了解决策树、朴素贝叶斯、逻辑回归、神经网络和深度学习等核心知识点,同时还将探索贝叶斯学习、支持向量机和核方法、聚类、无监督学…

2024开学季,这五款学生必备好物请不要错过!

转眼又到了开学季,想必许多踏入大学校园的新同学们已经难掩心中的兴奋与期待,正摩拳擦掌准备拥抱即将到来的大学生活。不过,在你们迫不及待地迎接新阶段之前,何不利用开学季的各种优惠活动,为自己挑选一些实用的必备好…

NX二次开发—柱面中心线工具

设计一个柱面中心线工具,可以实现选择对象,画出圆柱的中心线,可以更改中心的线的颜色、线型、线宽和图层,是否延长,是否关联。 先在NX上进行界面设计 添加选择对象,并设置标题,选择设置为多选 添加组,在组里添加线条颜色/线型/线宽,设置颜色ColorValue和线型Value 这…

OrionX GPU算力池助力AI OCR场景应用

01 AI OCR的历史及概念 OCR(Optical Character Recognition,光学字符识别)是指采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文…

Java 冒泡排序

1&#xff0e;冒泡排序是最出名的排序算法之一&#xff0c;总共有八大排序&#xff01; 2&#xff0e;冒泡排序的算法相对简单&#xff0c;两层循环&#xff0c;外层冒泡轮数&#xff0c;里层以此比较。 如下&#xff1a; j < array.length - 1-i的作用&#xff1a;下一轮比…

内衣洗衣机哪个牌子好用?汇总五款主流硬核内衣洗衣机

内衣洗衣机是近年来备受关注的小家电产品&#xff0c;虽然市场火爆&#xff0c;但还是存在大部分人对内衣洗衣机的不了解&#xff0c;会购买到质量差、清洗效果不好的内衣洗衣机&#xff0c;面对众多内衣洗衣机品牌&#xff0c;到底内衣迷你洗衣机什么牌子好呢&#xff1f;今天…

多线程篇五——wait和notify

多线程篇五——wait和notify 如笔者理解有误&#xff0c;欢迎交流指正⭐ 线程的执行先后顺序难以预料【抢占式执行】&#xff0c;但是实际开发中我们会需要掌握当下线程的执行顺序. 这就是wait和notify的作用.【都是Object方法即随便定义一个对象豆可以使用wait和notify】 wa…

跟李沐学AI:长短期记忆网络LSTM

输入们、遗忘门和输出门 LSTM引入输入门、忘记门和输出门 输入门计算公式为&#xff1a;。 遗忘门计算公式为&#xff1a;。 输出门计算公式为&#xff1a;。 它们由三个具有sigmoid激活函数的全连接层处理&#xff0c; 以计算输入门、遗忘门和输出门的值。 因此&#xff0c…

为什么不推荐使用Stack

Java已不推荐使用Stack&#xff0c;而是推荐使用更高效的ArrayDeque 为什么不推荐使用 性能低&#xff1a;是因为 Stack 继承自 Vector&#xff0c; 而 Vector 在每个方法中都加了锁。由于需要兼容老的项目&#xff0c;很难在原有的基础上进行优化&#xff0c;因此 Vector 就被…

鸟类目标检测系统源码分享

鸟类目标检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

亲测好用,ChatGPT 3.5/4.0新手使用手册~

都知道ChatGPT很强大&#xff0c;聊聊天、写论文、搞翻译、写代码、写文案、审合同等等&#xff0c;无所不能~ 那么到底怎么使用呢&#xff1f;其实很简单了&#xff0c;国内AI产品发展也很快&#xff0c;很多都很好用了~ 我一直在用&#xff0c;建议收藏下来~ 有最先进、最…

RocketMQ出现The broker does not support consumer to filter message by SQL92

在使用RocketMQ使用SQL过滤消息的时候&#xff0c;出现下面错误 原因是我们的配置文件没有开启SQL过滤功能&#xff0c;我们需要在每个配置文件中添加下面命令 #开启过滤消息时支持SQL92标准 enablePropertyFiltertrue接着我们重启namesrv与broker服务就解决问题 # 1.进入bi…

Robust Image Denoising through Adversarial Frequency Mixup

基于对抗性混频的鲁棒图像去噪 论文链接&#xff1a;https://openaccess.thecvf.com/CVPR2024/Ryou_Robust_Image_Denoising_through_Adversarial_Frequency_Mixup 项目链接&#xff1a;https://github.com/dhryougit/AFM Abstract 基于深度神经网络的图像去噪方法经常与训练…

哈希表的底层实现(1)---C++版

目录 哈希表的基本原理 哈希表的优点 哈希表的缺点 应用场景 闭散列法 开散列法 开放定值法Open Addressing——线性探测的模拟实现 超大重点部分评析 链地址法Separate Chaining——哈希桶的模拟实现 哈希表&#xff08;Hash Table&#xff09;是一种数据结构&#x…

STM32G070 CubeMX配置多通道/单通道ADC+DMA流程 LL库

基础配置不再赘述&#xff0c;时钟这些根据硬件来配置 多通道ADCDMA配置图&#xff1a; 程序配置&#xff1a; 调试查看内存数据&#xff0c;硬件上将PA1接到GND&#xff0c;PA2接到3V3 采集的数据会循环覆盖内存 问题&#xff1a;代码里先初始化ADC_IN1&#xff0c;再初…