Linux部署MySQL8.0

news/2024/9/17 19:00:48/ 标签: linux, 运维, 服务器, 数据库

目录

    • 一、部署前准备
      • 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 -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.ppmy.cn/news/1507078.html

相关文章

算法打卡 Day19(二叉树)-平衡二叉树 + 二叉树的所有路径 + 左叶子之和 + 完全二叉树的节点个数

Leetcode 101-平衡二叉树 文章目录 Leetcode 101-平衡二叉树题目描述解题思路 Leetcode 257-二叉树的所有路径题目描述解题思路 Leetcode 404-左叶子之和题目描述解题思路 Leetcode 222-完全二叉树的节点个数题目描述解题思路 题目描述 https://leetcode.cn/problems/balanced…

ESP8266-12E/F 内存分配

参考,,参考1,参考2,参考3 两款模组的不同 可以看出在使用功能和内存功能都一样。参考4 硬件介绍 模组中主要部分的芯片是乐鑫的esp8266,flash使用w25q32(4MB)参考,参考3 内存介绍 乐鑫…

黑马Java零基础视频教程精华部分_14_正则表达式

系列文章目录 文章目录 系列文章目录一、先爽一下正则表达式不使用正则的情况下使用正则的情况下 二、正则表达式的作用三、正则表达式具体表达1、规则2、字符类示例3、预定义字符示例首先学习转义字符 示例练习 四、基本练习1、快捷方法:2、验证手机号3、验证座机电…

02.CH59x入门指南——点亮LED

CH59x入门指南——点亮LED 文章目录 CH59x入门指南——点亮LED一、简介二、准备工作2.1 硬件条件2.2 项目条件 三、项目实现3.1 硬件部分3.2 软件部分3.3 运行结果 四、写在最后 ​ 一、简介 从本文开始,即将一一介绍 CH59x 的相关外设以及使用方法。 从任何一块芯…

Linux Shell编程--变量

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 变量: bash作为程序设计语言和其它高级语言一样也提供使用和定义变量的功能 预定义变量、环境变量、自定义变量、位置变量 一、自定义变…

self的使用

目录 一、看一段代码,并分析问题 二、二说self 1、成员方法定义的基本语法 2、使用细节 一、看一段代码,并分析问题 class Dog:name"波斯猫"age2def info(self,name):print(f"name信息:{name}") # 加菲猫dogDog() …

Dirsearch 工具的安装、使用详细教程

Dirsearch 工具的安装、使用详细教程 Dirsearch简介 安装步骤 语法及参数 常见Payload 渗透实例 总结 Dirsearch简介 Dirsearch 是一个用于探测Web服务器上的隐藏目录和文件的工具。它通过发送HTTP请求来尝试访问可能存在的路径,从而找到不列在网站目录页面上的…

河工院首届工业设计大赛程序组(挑战赛)题解

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 寻找ACMer 思想&#xff1a; 签到题按照题意遍历字符串&#xff0c;不断向后寻找包含 ACMer 完整字符串的数量即可 std标程&#xff1a; #include <iostream> #include <cstring> #include …

人工智能时代,程序员如何保持核心竞争力?

人工智能时代&#xff0c;程序员如何保持核心竞争力&#xff1f; 在人工智能的浪潮中&#xff0c;程序员的角色和工作方式正在经历前所未有的变革。AIGC技术的兴起&#xff0c;如ChatGPT、Midjourney、Claude等&#xff0c;预示着AI辅助编程工具的日益普及。面对这一趋势&…

海量日志数据收集监控平台应该怎么设计和实现

设计和实现一个海量日志数据收集和监控平台&#xff0c;需要考虑以下几个关键方面&#xff1a;数据采集、数据存储、实时处理、监控与告警、可视化分析、扩展性和高可用性。以下是一个详细的设计和实现方案&#xff1a; 1. 需求分析 日志来源&#xff1a;明确日志的来源&…

图谱驱动的智能:如何用Django实现GraphRAG的高效检索

前言 前面一章讲述了构建知识图谱来提高基于 RAG 的应用程序的准确性,并且使用 Neo4j 和 LangChain 在 RAG 应用程序中构建和检索知识图谱信息。 图形检索增强生成 (Graph RAG) 这种方法利用图形数据库的结构化特性,将数据组织为节点和关系,以增强检索信息的深度和上下文性…

HDFS写入数据的流程图

1.客户端向namenode发送请求&#xff0c;请示写入数据 2.namenode接受请求后&#xff0c;判断这个用户是否有写入权限&#xff0c;如果不具备直接报错&#xff1b;如果有写入权限&#xff0c;接着判断在要写入的目录下是否已经存在这个文件&#xff0c;如果存在&#xff0c;直…

Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式

目录 摘要目的安装和卸载特别说明 Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式 摘要 Ubuntu版本&#xff1a;ubuntu24.04 主题下载地址&#xff1a;https://github.com/vinceliuice/WhiteSur-gtk-theme 参考的安装教程&#xff1a;https://blog.51cto.com/u_…

Mybatis的详细讲解

1.前情提要 1.1三层架构 &#xff08;1&#xff09;表现层 Controller 表现层是表示的事数据的接受&#xff0c;参数的校验&#xff0c;参数的转换&#xff0c;结果的转换&#xff0c;结果的返回 &#xff08;2&#xff09;业务逻辑层 Service 介于表现层和业务逻辑层之…

使用Cisco软件进行模拟万维网配置访问服务器过程

万维网(www)实验 文章目录 万维网(www)实验1.实验目的2.实验流程3.实验步骤 1.实验目的 1&#xff09;理解www站点 2&#xff09;理解上层应用和下层通信网络的关系 2.实验流程 开始 → 布置拓扑 → 配置路由及IP地址 → 配置web服务器→ 访问服务器 →结束 3.实验步骤 1&…

Vercel Error: (Azure) OpenAI API key not found

题意&#xff1a;Vercel 错误&#xff1a;(Azure) OpenAI API 密钥未找到 问题背景&#xff1a; I implemented openAI API in my Next.js app with the help of langchain library and it works superb on localhost, but in Vercel (ProVersion) it throws an error: 我使用…

js函数的arguments 对象

arguments对象是函数中传递的参数值的集合。 它是⼀个类似数组的对象&#xff0c;因为它有⼀个length属性&#xff0c; 我们可以使⽤数组索引表示法arguments[1]来访问单个值&#xff0c;但它没有数组中的内置⽅法&#xff0c; 如&#xff1a;forEach、reduce、filter和map。 …

AI的IDE:Cursor配置虚拟python环境(conda)

AI的IDE&#xff1a;Cursor配置虚拟python环境&#xff08;conda&#xff09; Cursor是一个AI的IDE&#xff0c;是从VSCode源代码中fork出来的&#xff0c;专注于和AI一起Coding而生。https://www.cursor.com/是官方地址。最近开始逐渐的试用Cursor&#xff0c;之前一直是VSCod…

机器学习之随机森林

文章目录 1. 随机森林概述1.1 定义与起源1.2 与其他算法的比较 2. 随机森林的工作原理2.1 决策树基础2.2 Bagging机制2.3 随机性的引入 3. 随机森林的构建过程3.1 数据准备3.2 特征选择3.3 多棵树的集成 4. 随机森林的优缺点分析4.1 优势4.2 局限性 5. 随机森林的应用场景5.1 分…

Kali Linux——网络安全的瑞士军刀

一、引言 在网络安全的领域中&#xff0c;Kali Linux 宛如一把强大而全能的瑞士军刀&#xff0c;为安全研究人员和专业人士提供了丰富的工具和资源。本文将深入探讨 Kali Linux 的特点、优势、常用工具以及实际应用场景&#xff0c;带您领略这一强大操作系统的魅力。 二、Kal…