Linux部署MySQL8.0

目录

    • 一、部署前准备
      • 1.1、查看系统版本和位数(32位或64位)
      • 1.2、下载对应安装包
    • 二、开始部署
      • 1、将安装包解压并且移动到目标安装目录
      • 2、准备MySQL数据和日志等存储文件夹
      • 3、准备MySQL配置文件 my.cnf
      • 4、创建mysql单独用户组和用户,将安装目录 /usr/local/mysql-8.0.37/ 的所有者及所属组改为 mysql
      • 5、初始化数据库
      • 6、将mysql加入到可控制启动服务的文件夹内,并命名mysql(service可控制的服务名)
      • 7、配置profile环境变量
      • 8、启动并登录 mysql
      • 9、修改登录密码和设置允许远程登录

一、部署前准备

我这里使用Linux版本为CentOS7.x,部署时会使用Linux-Generic(通用包)来部署MySQL。

1.1、查看系统版本和位数(32位或64位)

# 查看系统版本
cat /etc/red*
# 查看系统位数
getconf LONG_BIT
[root@localhost ~]# cat /etc/red*
CentOS Linux release 7.5.1804 (Core) 
[root@localhost ~]# getconf LONG_BIT
64

1.2、下载对应安装包

官网下载地址:https://dev.mysql.com/downloads/mysql/

可以选择一个自己需要的版本下载,我这里会使用MySQL8.0.37,使用Linux-Generic(通用包),可以先在自己开发机器上直接下载然后上传到Linux,也可以直接在Linux中下载,这里提供两个CentOS中的下载命令

wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.37-linux-glibc2.12-x86_64.tar.xz
# 没有安装wget可以直接使用curl -O下载
curl -O https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.37-linux-glibc2.12-x86_64.tar.xz

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d5c4284edd2b405ba16788e7b0047fcd.png

二、开始部署

1、将安装包解压并且移动到目标安装目录

  • 解压
tar -Jxvf mysql-8.0.37-linux-glibc2.12-x86_64.tar.xz
[root@localhost tools]# ls
mysql-8.0.37-linux-glibc2.12-x86_64  mysql-8.0.37-linux-glibc2.12-x86_64.tar.xz
  • 移动并修改文件夹名称为mysql-8.0.37
mv mysql-8.0.37-linux-glibc2.12-x86_64 /usr/local/mysql-8.0.37
[root@localhost tools]# mv mysql-8.0.37-linux-glibc2.12-x86_64 /usr/local/mysql-8.0.37
[root@localhost tools]# ls /usr/local/
bin  etc  games  include  lib  lib64  libexec  mysql-8.0.37  sbin  share  src  tools

2、准备MySQL数据和日志等存储文件夹

# 进入MySQL解压目录
cd /usr/local/mysql-8.0.37
# 创建数据和日志等存储文件夹 data:数据存储 log:日志存储 tmp:临时文件 binlog:binlog日志
mkdir data log tmp binlog

3、准备MySQL配置文件 my.cnf

MySQL默认会读取/etc下的my.cnf文件,这里我们可以将自定义配置写入到该文件中,如果已经有mariadb的my.cnf,检测一下系统中是否有使用,如果没有则直接删除即可

vi /etc/my.cnf

将下面配置内容粘贴到my.cnf中

###### [client]配置模块 ######
[client]
default-character-set=utf8mb4
socket=/usr/local/mysql-8.0.37/tmp/mysql.sock###### [mysql]配置模块 ######
[mysql]
# 设置MySQL客户端默认字符集
default-character-set=utf8mb4
socket=/usr/local/mysql-8.0.37/tmp/mysql.sock###### [mysqld]配置模块 ######
[mysqld]
port=3306
user=mysql
# 设置sql模式 sql_mode模式引起的分组查询出现*this is incompatible with sql_mode=only_full_group_by,这里最好剔除ONLY_FULL_GROUP_BY
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# MySQL服务安装的基本目录
basedir=/usr/local/mysql-8.0.37
# MySQL服务数据存储
datadir=/usr/local/mysql-8.0.37/data/
socket=/usr/local/mysql-8.0.37/tmp/mysql.sock
server-id = 1# MySQL8 的密码认证插件 如果不设置低版本navicat无法连接
default_authentication_plugin= mysql_native_password# 允许最大连接数
max_connections=1000# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB# 0: 表名将按指定方式存储,并且比较区分大小写;
# 1: 表名以小写形式存储在磁盘上,比较不区分大小写;
lower_case_table_names=0max_allowed_packet=16M # 设置时区
default-time_zone='+8:00'# binlog 配置 只要配置了log_bin地址 就会开启
log_bin = /usr/local/mysql-8.0.37/binlog/mysql_bin
# 日志存储天数 默认0 永久保存
# 如果数据库会定期归档,建议设置一个存储时间不需要一直存储binlog日志,理论上只需要存储归档之后的日志
expire_logs_days = 30
# binlog最大值
max_binlog_size = 1024M
# 规定binlog的格式,binlog有三种格式statement、row、mixad,默认使用statement,建议使用row格式
binlog_format = ROW
# 在提交n次事务后,进行binlog的落盘,0为不进行强行的刷新操作,而是由文件系统控制刷新日志文件,如果是在线交易和账有关的数据建议设置成1,如果是其他数据可以保持为0即可
sync_binlog = 1# MySQL服务器安全启动的配置部分
[mysqld_safe]
# mysqld_safe进程的日志文件位置
log-error=/usr/local/mysql-8.0.37/log/mysqld_safe.err
# mysqld_safe的pid文件存放位置
pid-file=/usr/local/mysql-8.0.37/tmp/mysqld.pid
# mysqld_safe使用的socket文件位置
socket=/usr/local/mysql-8.0.37/tmp/mysql.sock# MySQLadmin工具的配置部分
[mysqladmin]
# mysqladmin工具使用的socket文件位置
socket=/usr/local/mysql-8.0.37/tmp/mysql.sock

4、创建mysql单独用户组和用户,将安装目录 /usr/local/mysql-8.0.37/ 的所有者及所属组改为 mysql

  • 增加用户组 mysql,在用户组下增加用户 mysql
# 增加用户组 mysql
groupadd mysql
# 在用户组下增加用户 mysql
useradd -r -g mysql mysql
  • 检查用户组、用户是否创建成功
groups mysql
[root@localhost tools]# groups mysql
mysql : mysql
  • 将安装目录 /usr/local/mysql-8.0.37/ 的所有者及所属组改为 mysql
chown -R mysql:mysql /usr/local/mysql-8.0.37/

5、初始化数据库

初始的时候指定一下默认配置文件和一些别的配置,如果不指定默认配置文件会使用/etc 下的 my.cnf

./bin/mysqld --basedir=/usr/local/mysql-8.0.37/ --datadir=/usr/local/mysql-8.0.37/data/ --user=mysql --initialize

在这里插入图片描述
初始化数据库的时候会生成一个root用户的登录密码,提前记录一下后面修改,我这个里的随机密码是q7EBL=z,0-e

6、将mysql加入到可控制启动服务的文件夹内,并命名mysql(service可控制的服务名)

cp ./support-files/mysql.server /etc/init.d/mysql

7、配置profile环境变量

vi /etc/profile

在文件底部添加以下内容:

export MYSQL_HOME="/usr/local/mysql-8.0.37"
export PATH="$PATH:$MYSQL_HOME/bin"

添加好保存后,执行让修改的profile文件立即生效命令

source /etc/profile

8、启动并登录 mysql

  • 切换到mysql用户启动mysql
su mysql
service mysql start
[root@localhost mysql-8.0.37]# su mysql
bash-4.2$ service mysql start
Starting MySQL.. SUCCESS!

执行完成启动成功后切换回root用户,开始进行下面操作

bash-4.2$ su root
密码:
[root@localhost ~]# 
  • 登录 mysql(q7EBL=z,0-e是在初始化数据库数据库时生成的密码)
mysql -u root -p'q7EBL=z,0-e'
[root@localhost data]# mysql -u root -p'q7EBL=z,0-e'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.37Copyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

9、修改登录密码和设置允许远程登录

  • 修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.01 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
  • 配置允许远程登录

    • 1、查看访问权限
    select user,host from mysql.user;
    
    mysql> select user,host from mysql.user;
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | mysql.infoschema | localhost |
    | mysql.session    | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    +------------------+-----------+
    4 rows in set (0.00 sec)

    root用户的localhost表示只允许本机访问,要实现远程连接,可以将用户的host改为%,表示允许任意主机访问,如果需要设置只允许特定ip访问,则应改为对应的ip。

    • 2、修改root用户的host字段为%
    update mysql.user set host="%" where user="root";
    
    mysql> update mysql.user set host="%" where user="root";
    Query OK, 1 row affected (0.01 sec)
    Rows matched: 1  Changed: 1  Warnings: 0mysql> select user,host from mysql.user;
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | root             | %         |
    | mysql.infoschema | localhost |
    | mysql.session    | localhost |
    | mysql.sys        | localhost |
    +------------------+-----------+
    4 rows in set (0.00 sec)
    
    • 3、 刷新配置
    flush privileges;
    
    • 4、开放3306端口允许外网访问
      先切回root用户在执行以下操作,su root
    # 开启指定的端口号
    firewall-cmd --add-port=3306/tcp --permanent
    # 重启一下防火墙
    firewall-cmd --reload
    # 查看指定端口号是否开启成功
    firewall-cmd --query-port=3306/tcp
    
    [root@localhost data]# firewall-cmd --add-port=3306/tcp --permanent
    success
    [root@localhost data]# firewall-cmd --reload
    success
    [root@localhost data]# firewall-cmd --query-port=3306/tcp
    yes
    

    这里也可以直接关闭防火墙,如果是自己测试使用可以直接将防火墙关闭

    # 查看防火墙状态  active(running)说明防火墙已经被打开
    systemctl status firewalld.service
    # 临时关闭防火墙
    systemctl stop firewalld.service
    # 永久关闭防火墙
    systemctl disable firewalld.service
    # 开启防火墙
    systemctl start firewalld.service
    

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<数据集>灭火器识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:3262张 标注数量(xml文件个数):3262 标注数量(txt文件个数):3262 标注类别数:1 标注类别名称:[extinguisher] 使用标注工具:labelImg 标注规则&#xf…

无人机培训机构推广运营理论技术

一、市场定位与品牌建设 在无人机培训行业的激烈竞争中,精准的市场定位是成功的第一步。首先,需明确目标学员群体,如航拍爱好者、农业植保服务者、应急救援人员或专业无人机操作员等。基于目标群体的需求,构建差异化的品牌形象。…

FlexBV电路查看软件

FlexBV - Macbook, iPhone, PC/Laptop & Electronics BoardViewer with PDF Cross Referencing 免费。 支持tvw,cad格式。 支持Windows,Linux,Mac。 而且我发现cad格式是文本的!意味着可以自由编辑!

git拉取代码出现“remote: The project you were looking for could not be found.”错误分析

git拉取代码出现“remote: The project you were looking for could not be found.”错误分析 如果输入的远程地址正确,那么极大可能是用户未登录或多个用户登录无法正确获取你想要的用户,如下图所示, 由于之前有同事在我电脑登录git账号&a…

leetcode 103.二叉树的锯齿形层序遍历

1.题目要求: 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。2.做题思路:由题我们可以判断,树中每到偶数…

spring过滤器和拦截器的区别

1出身不同。 过滤器来自servlet,拦截器来自spring框架。 2触发时机 不同请求的执行顺序是:请求进入容器 > 进入过滤器 > 进入 Servlet > 进入拦截器 > 执行控制器 过滤器先执行,会在servlet请求之前和相应之后进行处理。 拦…

写一个Vue2和vue3的自定义指令(以复制指定作为示例)

文章目录 一、自定义指令是什么?二、自定义指令有啥用?三、自定义指令怎么用?1.自定义指令的参数2.自定义指令的钩子函数(1)五个钩子函数的说明(2)钩子函数的参数(主要参数:el和valu…

【活动预告】研讨会+开源集市,IoTDB “登录” GOTC 2024!

由开源中国与上海浦东软件园联合举办的 GOTC 2024 即将开幕!本次大会结合 “GOTC(全球开源技术峰会)” 与 “GOGC(全球开源极客嘉年华)”,将集结全球范围内对开源技术充满热情的开发者、社区成员、创业者、…

Oracle是如何保证数据不丢的

上一篇文章给大家梳理了一条更新语句在Oracle数据库中是如何执行的,我们也提到只要更新记录成功写入到在线重做日志文件,Oracle就能保证数据不会丢失。同时也向大家解释了,其实这个时候数据并没有写入到数据文件,因此这个时候仍然…

为什么不用postman做自动化

面试的时候被问到:为什么不用postman做自动化 打开postman,看到用例集管理、API 管理、环境管理这三个功能,用户体验感算得上品牌等级了 为什么不用呢,文心一言给了一些答案 不适合大规模自动化测试:Postman 主要是为…

React 后台管理项目 入门项目 简洁清晰保姆级内容讲解

序章 React Hook的后台管理项目,从0到1搭建,内容非常丰富涵盖项目搭建、路由配置、用户鉴权、首页报表、用户列表、前后端联调等功能,推荐指数:5颗星! 视频学习链接: React 通用后台管理-零基础从0到1详细的入门保姆…

数据结构(5.5_3)——并查集的进一步优化

Find操作的优化(压缩路径) 压缩路径——Find操作,先找到根节点,再将查找路径上所有结点都挂到根结点下 代码: //Find "查"操作优化,先找到根节点,再进行"路径压缩" int Find(int S[], int x) {…

50 mysql 的 “where 1 = 1“ 的优化处理

前言 问题是来自于 chinaunix 问题 ”mysql查询后面加 where 1 1 影响效率吗?” mysql 中在 java 代码中我们经常会使用到 ”where 1 1 and username ‘jerry’ ” 之类的条件 然后 我们这里 来看一下 “where 1 1” 的相关处理 where 条件在 select_lex, QUP_shared…

LeetCode面试150——14最长公共前缀

题目难度:简单 默认优化目标:最小化平均时间复杂度。 Python默认为Python3。 目录 1 题目描述 2 题目解析 3 算法原理及代码实现 3.1 横向扫描 3.2 纵向扫描 3.3 分治 3.4 二分查找 参考文献 1 题目描述 编写一个函数来查找字符串数组中的最长…

【面试题】设计模式-责任链模式

设计模式-责任链模式 前言责任链简历案例代码小结 前言 我们知道,设计模式是面试时经常被问到的问题之一,这是因为设计模式能够体现出代码设计的美感,且在很多框架的底层也都会使用到各种设计模式,所以对设计模式的考察&#xff…

用Manim创建条形图【BarChart】

BarChart是Manim库中用于创建条形图的函数。它允许用户通过一组值创建一个条形图,其参数可以调整条形的外观和布局。 BarChart(values, bar_namesNone, y_rangeNone, x_lengthNone, y_lengthNone, bar_colors[#003f5c, #58508d, #bc5090, #ff6361, #ffa600],bar_w…

js第四天-函数

例1&#xff1a;选出最大值&#xff1a; <script>function getmax(x, y) {return x > y ? x : y}let max getmax(1, 3)</script> 例2&#xff1a;返回数组的最大值 <script>function getArrValue(arr []) {let max arr[0]for (let i 1; i < arr.…

基于Hadoop的共享单车分布式存储与计算

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍研究背景研究目的和意义国内外研究现状总体研究思路数据可视化每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 共享单车的普及带…

Elastic 基于 RAG 的 AI 助手:使用 LLM 和私有 GitHub 问题分析应用程序问题

作者&#xff1a;来自 Bahubali Shetti 作为 SRE&#xff0c;分析应用程序比以往任何时候都更加复杂。你不仅必须确保应用程序以最佳方式运行以确保出色的客户体验&#xff0c;而且在某些情况下还必须了解内部工作原理以帮助排除故障。分析基于生产的服务中的问题是一项团队运动…

HTML “文本处理基础”--文本格式化——WEB开发系列05

HTML 的主要工作之一是赋予文本结构&#xff0c;使浏览器能够按照开发者的意图显示 HTML 文档。 在创建网页时&#xff0c;文本格式化是至关重要的&#xff0c;它不仅可以影响用户的阅读体验&#xff0c;还可以增强网页的可读性和美观性。HTML 如何通过添加标题和段落、强调单词…