Linux 下 MySQL 8 搭建教程

news2025/3/17 3:08:39

一、下载

你可以从 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

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

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

相关文章

单口路由器多拨号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…

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

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

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

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

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)中的对齐涉及引导模型输出以符合人类预期和偏好,特别是在安全关键或用户面对的应用程序中。本章讨论了实现对齐的三个主要范式: 带有反馈的人工…

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

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

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);本节课最终…

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…