首页 > 数据库 >Linux下MySQL的安装部署

Linux下MySQL的安装部署

时间:2024-07-22 14:29:32浏览次数:18  
标签:opt Shell 部署 mysql 33 mysql8.0 Linux MySQL

文章目录


前言

MySQL,作为全球最受欢迎的开源关系型数据库管理系统之一,以其卓越的性能、可靠性及广泛的社区支持而闻名。无论是初创企业还是大型跨国公司,MySQL都是构建高效应用和服务的首选数据库解决方案。本文旨在为那些希望在Linux环境中部署MySQL的用户,提供一个全面、详细的安装与配置教程。我们将从基础的软件包下载开始,逐步深入到系统服务脚本的创建,以及如何通过Shell脚本简化安装过程。通过本教程,您将能够掌握MySQL的安装部署。

一、MySQL是什么?

MySQL是一个流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,现属于Oracle公司的产品。它以高性能、灵活性、易用性和开源特性著称,广泛应用于Web应用、企业级应用以及嵌入式系统等多个领域。MySQL支持多种操作系统,包括Windows、Linux和MacOS,并且使用结构化查询语言(SQL)进行数据库操作。

二、MySQL安装部署(两种)

1.手动安装MySQL

(1) 下载MySQL安装包

 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz

(2) 解压压缩包至opt文件夹下

tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /opt

(3)重命名 mysql-8.0.33-linux-glibc2.12-x86_64文件夹

mv  /opt/mysql-8.0.33-linux-glibc2.12-x86_64 /opt/mysql8.0.33

(4)创建用户组和密码

# 创建用户组
sudo addgroup mysql
# 创建用户并将其添加到mysql组
sudo adduser --ingroup mysql mysql

(5)为mysql用户授权

chown -R mysql.mysql /opt/mysql8.0.33

(6)创建数据文件的存储位置

mkdir /opt/mysql.8.33/mysql-data

(7)初始化MySQL数据库

cd bin
./mysqld --user=mysql --basedir=/opt/mysql-8.0.33 --datadir=/opt/mysql-8.0.33/mysql-data/ --initialize

在初始化完成后,MySQL将打印临时的root用户密码。

(8)编辑MySQL的配置文件

在初始化完成后,需要编辑MySQL的配置文件以设置服务器的运行参数。通常,这个文件位于/etc/my.cnf或/etc/mysql/my.cnf,但因为是自定义安装,可能需要手动创建或编辑一个配置文件。这里,我们可以使用vim命令,如果没有my.cnf则直接创建,并设置必要的参数,如basedir、datadir和socket等。

vim /etc/my.cnf 
[mysqld]
basedir=/opt/mysql8.0.33
datadir=/opt/mysql8.0.33/mysql-data
socket=/opt/mysql8.0.33/mysql.sock
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-name-resolve
log-error=/opt/mysql8.0.33/mysql-error.log
pid-file=/opt/mysql8.0.33/mysql.pid
skip-grant-tables

(9)创建系统服务脚本

为了使MySQL服务能够随系统启动即开机自启,需要创建一个systemd服务脚本。这可以通过编辑或创建一个.service文件在/etc/systemd/system/目录下完成。

cat > /etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
After=syslog.target network.target

[Service]
Type=forking
User=mysql
Group=mysql
PIDFile=/opt/mysql8.0.33/mysql.pid
ExecStart=/opt/mysql8.0.33/bin/mysqld
ExecReload=/opt/mysql8.0.33/bin/mysqladmin --socket=/opt/mysql8.0.33/mysql.sock reload
ExecStop=/opt/mysql8.0.33/bin/mysqld --user=mysql --basedir=/opt/mysql8.0.33 --datadir=/opt/mysql8.0.33/mysql-data/ --remove
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

(10)启用并启动MySQL服务

使用systemd工具启用并启动MySQL服务。

systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld

(11)检查MySQL服务状态

确保MySQL服务正在运行。

systemctl status mysqld

(12)设置免密登录

如果找不到MySQL打印的临时密码的可以通过修改my.cnf文件跳过密码(免密登录)

#打开MySQL的配置文件my.cnf
vim /etc/my.cnf 

在配置文件中找到[mysqld]部分,并添加skip-grant-tables指令。这个指令告诉MySQL服务器跳过权限表的验证,允许任何用户以任何密码登录。

[mysqld]
basedir=/opt/mysql8.0.33
datadir=/opt/mysql8.0.33/mysql-data
socket=/opt/mysql8.0.33/mysql.sock
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-name-resolve
log-error=/opt/mysql8.0.33/mysql-error.log
pid-file=/opt/mysql8.0.33/mysql.pid
#添加这一句
skip-grant-tables

保存my.cnf文件的更改。按Esc键输入 :wq即可

重启MySQL服务以使配置生效。

sudo systemctl restart mysql

在MySQL服务器重启后,可以直接使用mysql命令登录到MySQL,而无需输入密码。

(13)修改密码

登录MySQL,并更改root用户的密码。

mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
EXIT;

(14)配置MySQL防火墙规则

如果使用了防火墙,需要添加规则以允许MySQL的端口(默认为3306)对外提供服务。

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

2.使用Shell脚本文件安装MySQL.

在此之前如果安装过MySQL将之前安装的删除干净后再执行Shell脚本文件

(1)下载Shell脚本文件并传入服务器

Shell脚本小编已放在文章顶部下载即可

(2)修改Shell脚本文件的权限

chmod +x mysql.sh

(3)运行Shell脚本文件

./mysql.sh

(4)根据提示安装MySQL

脚本安装MySQL
脚本安装MySQL

(5)重新生效环境变量

source /etc/profile

总结

通过本文,深入了解了MySQL在Linux系统上的安装与配置过程,还学习了如何通过手动步骤和Shell脚本自动化来完成部署。从解压软件包、配置用户权限,到初始化数据库和设置服务脚本。本文还介绍了如何通过修改配置文件实现免密登录,以及如何安全地设置root用户的密码,这些都是数据库管理中不可或缺的安全措施。最后,我们强调了配置防火墙规则以确保MySQL对外服务的安全性和可达性。

标签:opt,Shell,部署,mysql,33,mysql8.0,Linux,MySQL
From: https://blog.csdn.net/weixin_52811458/article/details/140594257

相关文章

  • Linux 部署DVWA靶场
    Linux部署DVWA靶场DVWA是一款开源的网络安全漏洞实践平台,专为安全学习者设计。它涵盖了XXS、SQL注入、文件上传、文件包含、CSRF和暴力破解等多种安全漏洞环境,每个漏洞都有从简单到复杂的多个难度级别。环境部署安装httpd及其相关的组件yuminstall-yhttpdhttpd-devel......
  • Linux常用命令
    命令格式:命令字[选项][参数]pwd   查看当前工作目录cd切换工作目录                cd/etc/:从当前目录切换到跟目录下的etc下        cd-:切换到上次切换的目录(切换前的目录),常用于两个文件夹之间相互切换            ......
  • Linux目录和文件管理
    1、cat查看文件内容  cat/etc/sysconfig/selinux2、more和less都是全屏显示文件内容  more查看内容超过一屏进行分频那个显示,并在左下角显示百分比,可以按Enter键向下逐行滚动查看,按Space键可以向下翻一屏   less与more命令类似,less命令结合管道符号“|”......
  • PyCharm远程部署带屏幕影响串口
    我有一个Flaskapp.py,我正在本地计算机上开发。Flask应用程序使用连接到远程计算机的串行接口(pyserial)。我设置PyCharm以在远程计算机上进行远程部署机器。当我远程(从本地机器)部署和运行应用程序时,我想在独立的screen中启动它,以便我可以在需......
  • MySQL支持中文排序的实现方法
    在处理包含中文字符的数据库时,正确地实现中文排序是确保数据准确性和用户体验的关键。MySQL提供了多种方法来实现中文排序,这些方法主要涉及字符集(Charset)和排序规则(Collation)的设置。以下是三种常用的方法来支持中文排序:方法一:使用GBK编码GBK是一种常用于简体中文的字符编码......
  • 嵌入式C++、FreeRTOS、MySQL、Spring Boot和MQTT协议:智能零售系统详细流程介绍(代码示
    项目概述随着科技的发展,零售行业正经历着一场数字化转型。智能零售系统通过集成嵌入式技术和大数据分析,为商家提供了高效的运营管理工具。该系统的核心目标是提升顾客体验、优化库存管理、降低运营成本以及实现精准营销。本项目将结合多种技术栈,包括嵌入式硬件、嵌入式软件、......
  • linux-批量修改文件内容
    1.批量修改文件内容$find.-typef-execsed-i's/oldname/newname/g'{}+#此命令含义:在当前目录及其所有子目录中查找所有文件,并对这些文件执行sed命令,将文件内容中的所有oldname字符串替换为newname。#find.:从当前目录(.)开始查找文件。#typef:指定查找的类型为文......
  • 如何在 vercel 部署中路由 python 和 typescript 无服务器函数
    我从一个带有Next.js和Typescript前端以及python后端的全栈应用程序开始。由于我们想在vercel上部署,因此我们将所有后端功能迁移到/api文件夹中的typescript函数中,可通过以下方式访问:fetch('api/**foldername**)问题是我有一个简单的pytorch模型,因此......
  • docker-compose部署kafka-ui部署以及使用
    1.docker-compose配置脚本version:"3"services:kafka-ui:image:provectuslabs/kafka-ui:v0.7.2container_name:kafka-uihostname:kafka-uiprivileged:truerestart:alwaysenvironment:-DYNAMIC_CONFIG_ENABLED=true......
  • SpringBoot利用MyBatis连接Mysql数据库时常见启动报错
    目录报错情况报错情况一:​编辑报错情况二:解决步骤一、解决命名问题1.mapper层的id是否和Dao层的方法名字相同2.检查namespace与Dao层的文件地址相同二、解决注解问题1.检查Controller层的注解是否正确和完整2.Dao层或者Mapper层的注解3.pojo层:实体类层Data注解(用来......