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

Linux 下 MySQL 8 搭建教程

一、下载

你可以从 MySQL 官方下载地址 下载所需的 MySQL 安装包。

image-20250314104819877

image-20250314104850599

二、环境准备

1. 查看 MySQL 是否存在

使用以下命令查看系统中是否已经安装了 MySQL:

rpm -qa|grep -i mysql

2. 清空 /etc/ 目录下的 my.cnf

执行以下命令删除 my.cnf 文件:

[root@localhost ~]# rm -rf /etc/my.cnf

3. 删除 mariadb

使用 yum 命令删除 mariadb:

[root@localhost ~]# yum -y remove mariadb

4. 清空带有 mysql 的所有文件

使用 find 命令查找并删除所有包含 mysql 的文件:

[root@localhost ~]# find / -name "*mysql*" -exec rm -rf {} \;

5. 检查并安装依赖库

查看是否安装了 MySQL 依赖库 libaio,如果没有安装则进行安装:

[root@localhost ~]# yum list installed |grep libaio
libaio.x86_64                         0.3.109-13.el7                   @anaconda

若未安装,执行以下命令安装:

yum -y install libaio

6. 解压 MySQL 压缩包并更名

解压 MySQL 压缩包:

tar xvJf mysql-8.0.41-linux-glibc2.17-x86_64.tar.xz

附注:tar 命令参数解释:

  • -x:解开已有的归档文件
  • -v:显示详细的过程
  • -J:使用 xz 压缩或解压归档文件
  • -f:指定归档文件名

重命名解压后的文件夹:

mv mysql-8.0.41-linux-glibc2.17-x86_64 mysql-8.0.41

7. 移动项目文件

将解压并重命名后的 MySQL 文件夹移动到 /usr/local/mysql/ 目录下:

[root@localhost ~]# cp -r mysql-8.0.41 /usr/local/mysql/mysql-8.0.411

8. 创建 mysql 组和用户

为了满足生产环境服务器对 root 用户的限制,需要创建 mysql 组和用户:

# 创建 mysql 组
groupadd mysql
# 创建 mysql 用户
useradd -g mysql mysql

示例:

[root@localhost ~]# useradd -r -s /sbin/nologin mysql
[root@localhost ~]# id mysql
uid=997(mysql) gid=995(mysql)=995(mysql)

创建一个文件:

[root@localhost ~]# mkdir /usr/local/mysql/mysql-8.0.411/mysql-files

修改权限:

[root@localhost ~]# chown mysql:mysql /usr/local/mysql/mysql-8.0.411/mysql-files
[root@localhost ~]# chmod 750 /usr/local/mysql/mysql-8.0.411/mysql-files/

给解压的 MySQL 文件夹及创建的 data 文件夹修改用户及用户组权限:

chown -R mysql:mysql /usr/local/soft/mysql/

三、设置 MySQL 配置文件 my.cnf

使用 vim 编辑器打开并编辑 /etc/my.cnf 文件:

[root@chen mysql]# vim /etc/my.cnf

配置内容如下:

[mysqld]
# 设置 MySQL 服务监听端口,默认 3306
port=3306
# 设置 MySQL 服务器绑定的 IP 地址,可以设置为自己本机 IP
bind-address=0.0.0.0
# 设置 MySQL 数据库用户
user=mysql
# 数据库文件路径
basedir=/usr/local/mysql/mysql-8.0.41
# 数据库数据目录,存储数据库文件的路径
datadir=/usr/local/mysql/mysql-8.0.41/data
# 设置 MySQL 服务器使用的套接字文件路径
socket=/usr/local/mysql/mysql-8.0.41/mysql.sock
# datadir=/var/lib/mysql
# socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
# 设置每个连接的默认字符集
character_set_server=utf8mb4
explicit_defaults_for_timestamp=true
lower_case_table_names = 1
# 配置 MySQL 的自动扩展参数
innodb_autoextend_increment=64
log-error=/usr/local/mysql/mysql-8.0.41/logs/mysql.log
pid-file=/usr/local/mysql/mysql-8.0.41/mysql.pid[mysqld_safe]
# 设置指定存放进程 ID 的文件
log-error=/usr/local/mysql/mysql-8.0.4/logs/mysql.log
pid-file=/usr/local/mysql/mysql-8.0.4/mysql.pid
# log-error=/var/log/mariadb/mariadb.log
# pid-file=/var/run/mariadb/mariadb.pid
[client]
socket = /usr/local/mysql/mysql-8.0.4/mysql.sock
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

四、Mysql 初始化

Linux 中的 MySQL 默认是区分表名大小写的,如果你安装的是 MySQL 8,需要在数据库初始化时设置不区分大小写,否则初始化后在配置文件中设置并重启时会报错。

使用 mysqlbin 下面的 mysqld 脚本进行初始化:

/usr/local/mysql/mysql-8.0.41
/bin/mysqld --defaults-file=/usr/local/soft/mysql/my.cnf --user=mysql --basedir=/usr/local/mysql/mysql-8.0.41 --datadir=/usr/local/soft/mysql/data --lower-case-table-names=1 --initialize

示例:

[root@localhost ~]# /usr/local/mysql/mysql-8.0.4/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql-8.0.4/mysql-8.0.40
2024-08-05T02:12:23.829793Z 0 [System] [MY-013169] [Server] /usr/local/mysql/mysql-8.0.4/bin/mysqld (mysqld 8.0.33) initializing of server in progress as process 3849
2024-08-05T02:12:23.841538Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-08-05T02:12:24.709625Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-08-05T02:12:25.810204Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: v,es=69BKU25

判断是否初始化成功

[root@localhost ~]# ls /usr/local/mysql/mysql-8.0.4/

出现 data 表示初始化成功。

设置 ssl 安全加密连接

[root@localhost ~]# cd /usr/local/mysql/mysql-8.0.41/
[root@localhost mysql]# ls ./bin/*ssl*
./bin/mysql_ssl_rsa_setup
[root@localhost mysql]# ./bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/mysql-8.0.4/data
[root@localhost mysql]# ls ./data/
auto.cnf         #ib_16384_0.dblwr  #innodb_temp        public_key.pem   undo_002
ca-key.pem       #ib_16384_1.dblwr  mysql               server-cert.pem
ca.pem           ib_buffer_pool     mysql.ibd           server-key.pem
client-cert.pem  ibdata1            performance_schema  sys
client-key.pem   #innodb_redo       private_key.pem     undo_001

其他配置

[root@localhost ~]# ls /usr/local/mysql/mysql-8.0.41/support-files
mysqld_multi.server  mysql-log-rotate  mysql.server

五、启动并登录 MySQL,设置 MySQL 开机自启动

加入到系统服务并启动 mysql

cp /usr/local/mysql/mysql-8.0.41/support-files/mysql.server /etc/init.d/mysql

修改 mysql 自启服务配置

vim /etc/init.d/mysql

启动服务

service mysql start

登录 mysql

/usr/local/mysql/mysql-8.0.41/bin/mysql -u root -p 

登录成功后会提示你重置密码,修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'uacsapp';
FLUSH PRIVILEGES;      # 刷新 

退出:

quit

重启服务:

service mysql restart

再次登陆:

/usr/local/mysql/mysql-8.0.41/bin/mysql -u root -p 

输入刚修改的密码,按回车键。到此,MySQL 已经安装完成。

环境路径配置

[root@localhost ~]# vim /etc/profile

在文件中添加以下内容:

export PATH=$PATH:/usr/local/mysql/mysql-8.0.4/

使配置生效:

[root@localhost ~]# source /etc/profile

设置开机自启动(方法一)

添加服务列表的方式,放置到 /etc/rc.d/init.d 中:

# copy 并重命名
cp /usr/local/mysql/mysql-8.0.41/support-files/mysql.server /etc/rc.d/init.d/mysql
# 复制成功后我们需要给赋予权限
chmod +x /etc/init.d/mysql
# 添加为服务:
chkconfig --add mysql
# 查看服务列表 
chkconfig --list

看到 mysql 服务的 3、4、5 状态为开或者为 on 则表示成功。如果是关或者 off 则执行以下命令:

chkconfig --level 345 mysqld on

重启计算机:

reboot

相关文章:

Linux 下 MySQL 8 搭建教程

一、下载 你可以从 MySQL 官方下载地址 下载所需的 MySQL 安装包。 二、环境准备 1. 查看 MySQL 是否存在 使用以下命令查看系统中是否已经安装了 MySQL: rpm -qa|grep -i mysql2. 清空 /etc/ 目录下的 my.cnf 执行以下命令删除 my.cnf 文件: [roo…...

单口路由器多拨号ADSL实现方法

条件是多拨号场景,公司路由器接口不够用...

最新版VMware 17.6.3安装包分享

修复 Windows 11 主机无响应问题:Windows 11 主机锁定或解锁后,虚拟机可能变得无响应,此问题已在 17.6.3 版本中解决。 解决虚拟机启动崩溃问题:在某些系统上启动虚拟机后,Workstation Pro 可能会崩溃,新版…...

Java高频面试之集合-12

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:HashMap 的 hash 函数是怎么设计的? HashMap的hash函数设计核心在于减少碰撞、提高数据分布均匀性,具体实现…...

视频推拉流EasyDSS案例分析:互联网直播/点播技术与平台创新应用

随着互联网技术的快速发展,直播/点播平台已成为信息传播和娱乐的重要载体。特别是在电视购物领域,互联网直播/点播平台与技术的应用,不仅为用户带来了全新的购物体验,也为商家提供了更广阔的营销渠道。传统媒体再一次切实感受到了…...

【黑马点评|项目】万字总结(下)

文章上半部分: 【黑马点评|项目】万字总结(上) 优惠卷秒杀 当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在一些问题: id的规律性太明显,容易出…...

[数据结构]排序之 直接选择排序

1 基本思想: 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的 数据元素排完 。 2 直接选择排序 : 在元素集合 array[i]--array[n-1] 中选择关键码最大 ( 小 ) 的数据元素…...

前端工程化之前端工程化详解 包管理工具

前端工程化详解 & 包管理工具 前端工程化什么是前端工程化前端工程化发展脚手架能力 体验度量规范流程效能流程扭转 稳定性建设针对整体稳定性建设 可监控:前端监控系统 包管理工具npm包详解package.jsonname 模块名description 模块描述信息keywords&#xff1…...

深入解析 React Diff 算法:原理、优化与实践

深入解析 React Diff 算法:原理、优化与实践 1. 引言 React 作为前端领域的标杆框架,采用 虚拟 DOM(Virtual DOM) 来提升 UI 更新性能。React 的 Diff 算法(Reconciliation) 是虚拟 DOM 运行机制的核心&a…...

Linux 蓝牙音频软件栈实现分析

Linux 蓝牙音频软件栈实现分析 蓝牙协议栈简介蓝牙控制器探测BlueZ 插件系统及音频插件蓝牙协议栈简介 蓝牙协议栈是实现蓝牙通信功能的软件架构,它由多个层次组成,每一层负责特定的功能。蓝牙协议栈的设计遵循蓝牙标准 (由蓝牙技术联盟,Bluetooth SIG 定义),支持多种蓝牙…...

PySide(PyQt),使用types.MethodType动态定义事件

以PySide(PyQt)的图片项为例,比如一个视窗的场景底图是一个QGraphicsPixmapItem,需要修改它的鼠标滚轮事件,以实现鼠标滚轮缩放显示的功能。为了达到这个目的,可以重新定义一个QGraphicsPixmapItem类,并重写它的wheelE…...

2.5 python接口编程

在现代软件开发的复杂生态系统中,不同系统、模块之间的交互协作至关重要。接口编程作为一种关键机制,定义了组件之间的通信规范与交互方式。Python 凭借其卓越的灵活性、丰富的库资源以及简洁易读的语法,在接口编程领域占据了重要地位&#x…...

SpringData JPA事务管理:@Transactional注解与事务传播

文章目录 引言一、事务基础概念二、Transactional注解详解2.1 基本用法2.2 属性配置2.3 类级别与方法级别 三、事务传播行为详解3.1 REQUIRED(默认)3.2 REQUIRES_NEW3.3 其他传播行为 四、事务隔离级别五、事务最佳实践5.1 正确设置事务边界5.2 合理使用…...

第2章、WPF窗体及其属性

1、窗体的宽与高。 2、启动窗体设置 3、窗体的启动位置设置 4、窗体图标更换 5、应用程序的图标更改 6、 7、窗体属性汇总: AllowsTransparency 类型: bool 描述: 该属性决定窗口是否可以有透明效果。如果设置为true,窗口的背景必须设置为Transpar…...

关于ModbusTCP/RTU协议对接Ethernet/IP(CIP)协议的方案

IGT-DSER智能网关模块支持西门子、倍福(BECKHOFF)、罗克韦尔AB,以及三菱、欧姆龙等各种品牌的PLC之间通讯,支持Ethernet/IP(CIP)、Profinet(S7),以及FINS、MC等工业自动化常用协议,同时也支持PLC与Modbus协议的工业机器人、智能仪…...

WPF 与 GMap.NET 结合实现雷达目标动态显示与地图绘制

概述 雷达上位机是雷达系统中用于数据可视化、分析和控制的核心软件。本文将介绍如何使用 C# 和 WPF 框架开发一个雷达上位机程序,主要功能包括: 显示目标轨迹:在界面上实时绘制雷达探测到的目标轨迹。点击显示详细信息:用户点击…...

A SURVEY ON POST-TRAINING OF LARGE LANGUAGE MODELS——大型语言模型的训练后优化综述——第2部分

3、微调(上一部分内容) 4、LLMs的对齐 大型语言模型(LLMs)中的对齐涉及引导模型输出以符合人类预期和偏好,特别是在安全关键或用户面对的应用程序中。本章讨论了实现对齐的三个主要范式: 带有反馈的人工…...

pytest快速入门 - 目录:半天掌握pytest

1 pytest快速入门 - 目录 本系列文章将快速的带领用户进入pytest领域,通过阅读本专栏,用户将可以熟练掌握pytest的基本用法,同时对测试前置条件的构造、后置条件的清理等有较深入的了解,特别是后置条件的执行完备度有一个认识。 …...

2018年全国职业院校技能大赛高职组-计算机网络应用竞赛竞赛样题C卷

目录 总体规划 模块二:设备基础信息配置 模块三:网络搭建与网络冗余备份方案部署 模块四:移动互联网搭建与网优 模块五:出口安全防护与远程接入 总体规划 CII教育公司在进行企业大学信息化建设的过程中,为了保证北京校区、广州校区与本部校区的日常OA办公通信等关键业务,…...

某大厂自动化工程师面试题

一些大厂的自动化工程师面试题汇总: 基础知识类 请解释什么是PLC(可编程逻辑控制器)?什么是PID控制?它在自动化系统中的作用是什么?请描述一下工业4.0的基本概念。编程与控制系统类 你熟悉哪些PLC编程语言?请举例说明。如何在SCADA系统中实现数据采集和监控?请解释一下…...

L1-7 统一命名规范(java)

你所在的公司刚刚招收了几位程序员,然而这些程序员之前在不同的公司工作,所以他们习惯的变量命名规范可能存在差异,需要让他们都习惯公司要求的命名规范,然而这样可能会降低他们的工作效率。 你的上司找到了你,希望你…...

ES6回顾:闭包->(优点:实现工厂函数、记忆化和异步实现)、(应用场景:Promise的then与catch的回调、async/await、柯里化函数)

闭包讲解 ES6回顾:闭包->(优点:实现工厂函数、记忆化和异步实现)、(应用场景:Promise的then与catch的回调、async/await、柯里化函数) 以下是与 JavaScript 闭包相关的常见考点整理,结合 Pro…...

zend server试用分析

文件:ZendServer-2021.4.1-multi-php-Windows_x86.exe 安装后可以试用30天,想分析下限制原理, 根据安装日志,发现了2个关键的文件: ZendServer\gui\module\Configuration\src\Configuration\License\Wrapper.php ZendServer\gu…...

C# NX二次开发:在多个体的模型中如何实现拉伸操作布尔减

大家好,今天接着上一篇拉伸文章去讲。 UF_MODL_create_extruded1 (view source) uf_list_p_tobjectsInputList of objects to be extruded.char *taper_angleInputTaper angle (in degrees).char *limit [ 2 ]InputLimit of extrusion. This is declared as: char …...

15 | 定义简洁架构 Store 层的数据类型

提示: 所有体系课见专栏:Go 项目开发极速入门实战课;欢迎加入 云原生 AI 实战 星球,12 高质量体系课、20 高质量实战项目助你在 AI 时代建立技术竞争力(聚焦于 Go、云原生、AI Infra);本节课最终…...

GitLab多种场景下的备份与迁移指南

GitLab备份与迁移完全指南 GitLab作为一个完整的DevOps平台,其数据对于组织至关重要。无论是版本升级、服务器迁移还是灾难恢复,掌握GitLab的备份和迁移技术都是系统管理员的必备技能。本文将详细介绍GitLab的备份策略和各种场景下的迁移方法。 目录 GitLab备份基础知识Omn…...

2.3 滑动窗口专题:最大连续1的个数 III(LeetCode 1004)

1. ​题目链接 1004. 最大连续1的个数 III - 力扣(LeetCode)https://leetcode.cn/problems/max-consecutive-ones-iii/ 2. ​题目描述 给定一个二进制数组 nums 和一个整数 k,允许将最多 k 个 0 翻转为 1,求翻转后最长的连续 1 …...

【微服务】Nacos 配置动态刷新(简易版)(附配置)

文章目录 1、实现方法2、配置依赖 yaml3、验证效果 1、实现方法 环境&#xff1a;Nacos、Java、SpringBoot等 主要是在boostrap.yaml中的data-id属性下配置refresh:true来实现动态更新 2、配置依赖 yaml 具体的版本参考官方的说明&#xff1a;官方版本说明 <!--读取boo…...

六十天前端强化训练之第二十天React Router 基础详解

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 一、核心概念 1.1 核心组件 1.2 路由模式对比 二、核心代码示例 2.1 基础路由配置 2.2 动态路由示例 2.3 嵌套路由实现 2.4 完整示例代码 三、关键功能实现效果 四、…...

高级java每日一道面试题-2025年2月26日-框架篇[Mybatis篇]-Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式 ?

如果有遗漏,评论区告诉我进行补充 面试官: Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式 ? 我回答: 在Java高级面试中讨论MyBatis如何将SQL执行结果封装为目标对象并返回的过程时&#xff0c;我们可以从过程细节和映射形式两个方面来综合解答这个问…...