Ubuntu 20.04下MySQL 8.4.3 LTS离线安装全攻略

最近在做软件时,需要使用数据库进行用户信息的保存及深度学习检测识别结果的保存分析,故而想在mysql中进行汇总数据,然后分析,所以进行了一些操作学习。

本文旨在用户如何在Ubuntu 20.04操作系统上进行MySQL 8.4.3 LTS版本的离线安装 。文章详细阐述了部署环境的配置要求,包括所需软件、系统配置以及资源需求。同时,提供了MySQL 8.4.3 LTS的下载地址和版本选择指南。文章重点介绍了安装流程,包括上传MySQL安装包、解压文件、创建专用用户和用户组、设置文件夹权限、安装libaio依赖以解决Ubuntu 20.04系统上的特定问题、数据库初始化、配置my.cnf文件、设置环境变量、启动MySQL服务、登录MySQL以及进行相关设置,如创建root用户、修改密码和授权等。此外,文章还提供了一个快速部署脚本,旨在帮助用户简化部署流程,快速完成MySQL的离线安装。

一、环境准备与离线包下载准备
1.1 环境要求
  • 操作系统:Ubuntu 20.04 LTS

  • 硬件要求:

    • 至少2 GB的RAM

    • 至少10 GB的可用磁盘空间

    • 处理器:建议使用多核处理器,以提高数据库处理能力

    • 网络要求:虽然本文介绍的是离线安装,但在初始阶段,您可能需要通过网络下载必要的安装包和依赖项。

    • 用户权限:需要具有root或sudo权限,以便执行安装和配置操作。(重要的

1.2 软件下载与系统配合

系统配合可进行可不进行

MySQL 8.4.3 LTS的离线包准备

由于我的操作系统比较新, 通过 ldd --version 命令查看glibc版本为2.31,所以选择了 glibc 2.28的版本

注: 如果操作系统支持的话还是选择新的;但是考虑兼容性和维护性,我个人的部署脚本中目前选择的还是glibc2.17的包;

MySQL安装包 :从MySQL官方网站下载适用于Linux的MySQL 8.4.3 LTS版本。下载地址为:MySQL官方下载页面

依赖项: 在Ubuntu 20.04上,您需要安装libaio库,以解决某些特定的问题。可以通过以下命令安装:

复制代码
sudo apt-get updatesudo apt-get install libaio1

系统配置:

内核参数:为了优化MySQL的性能,建议调整一些内核参数。编辑/etc/sysctl.conf文件,添加以下内容:

复制代码
fs.file-max = 65535net.ipv4.ip_local_port_range = 1024 65000net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1vm.swappiness = 10vm.vfs_cache_pressure = 50

文件描述符限制: 编辑/etc/security/limits.conf文件,增加以下内容:

复制代码
mysql soft nofile 65535mysql hard nofile 65535
2.1 安装包处理与解压
  1. 进入目标目录:

登录到目标服务器,进入您上传安装包的目录。

  1. 解压安装包:

使用tar命令解压安装包。假设安装包名为mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz,可以使用以下命令:

复制代码
tar -xvf mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz
  1. 移动解压后的文件:

将解压后的文件移动到一个合适的位置,例如/usr/local/mysql。可以使用以下命令:

复制代码
mv mysql-8.4.3-linux-glibc2.28-x86_64 /usr/local/mysql
  1. 创建符号链接:

为了方便使用,可以创建一个符号链接,指向MySQL的安装目录。使用以下命令:

通过以上步骤,您已经成功上传并解压了MySQL 8.4.3 LTS的安装包。接下来,我们将继续介绍如何创建专用用户和用户组、设置文件夹权限、安装依赖项以及进行数据库初始化等步骤。

二、 用户与权限设置
2.1 创建专用用户和用户组

查询系统中是否存在mysql用户

复制代码
cat /etc/passwd | cut -f1 -d ':' | grep -w "mysql" -c 
# 如果存在用户mysql
1
# 不存在返回
0

在进行MySQL 8.4.3 LTS的离线安装过程中,创建专用用户和用户组是确保系统安全性和稳定性的关键步骤。这一步骤不仅有助于隔离MySQL服务与其他系统服务,还可以防止潜在的安全风险。以下是详细的创建步骤:

1. 创建MySQL用户组:

首先,我们需要创建一个专门用于运行MySQL服务的用户组。这可以通过以下命令实现:

复制代码
  sudo groupadd mysql

2. 创建MySQL用户:

接下来,创建一个专门用于运行MySQL服务的用户,并将其添加到刚刚创建的用户组中。使用以下命令:

复制代码
sudo useradd -r -g mysql -s /bin/false mysql

这里,-r选项表示这是一个系统用户,-g mysql表示将用户添加到mysql组,-s /bin/false表示该用户的登录shell被设置为不可用,从而防止直接登录。

3. 验证用户和用户组:

为了确保用户和用户组已成功创建,可以使用以下命令进行验证:

复制代码
id mysql

输出应显示类似以下内容:

复制代码
uid=999(mysql) gid=999(mysql) groups=999(mysql)

通过以上步骤,您已经成功创建了专用的MySQL用户和用户组。这不仅有助于提高系统的安全性,还可以确保MySQL服务在独立的环境中运行,避免与其他系统服务发生冲突。

2.2 设置文件夹权限以保证安全性

在创建了专用用户和用户组之后,下一步是设置MySQL安装目录的文件夹权限,以确保只有授权用户才能访问和修改相关文件。这一步骤对于保护数据库的安全性和完整性至关重要。以下是详细的设置步骤:

1.更改MySQL安装目录的所有者和组:

首先,将MySQL安装目录的所有者和组更改为刚刚创建的mysql用户和mysql组。使用以下命令:

复制代码
 sudo chown -R mysql:mysql /usr/local/mysql

2.设置文件夹权限:

接下来,设置MySQL安装目录及其子目录的权限,以确保只有mysql用户和mysql组可以读取、写入和执行相关文件。使用以下命令:

复制代码
 sudo chmod -R 750 /usr/local/mysql

3.设置数据目录权限:

创建data目录,存储MySQL数据

复制代码
cd /usr/local/mysql
mkdir data

特别地,MySQL的数据目录需要更高的安全性。假设数据目录位于/usr/local/mysql/data,可以使用以下命令设置其权限:

复制代码
chown -R mysql:mysql /usr/local/mysql/data
chmod -R 700 /usr/local/mysql/data

4.验证权限设置:

为了确保权限设置正确,可以使用以下命令进行验证:

复制代码
ls -ld /usr/local/mysqlls -ld /usr/local/mysql/data

5.输出应显示类似以下内容:

复制代码
drwxr-x--- 12 mysql mysql 4096 Oct 10 14:30 /usr/local/mysqldrwx------ 2 mysql mysql 4096 Oct 10 14:30 /usr/local/mysql/data

通过以上步骤,您已经成功设置了MySQL安装目录及其数据目录的文件夹权限。这不仅有助于保护数据库的安全性,还可以防止未经授权的访问和修改,确保MySQL服务的稳定运行。

三、安装与配置
3.1 安装libaio依赖解决特定问题

在Ubuntu 20.04系统上进行MySQL 8.4.3 LTS的离线安装时,安装libaio依赖是确保数据库正常运行的关键步骤之一。libaio库提供了异步I/O操作的支持,这对于提高MySQL的性能和稳定性至关重要。以下是详细的安装步骤:

1.更新软件包列表:

在安装任何新的软件包之前,建议先更新软件包列表,以确保获取最新的软件包信息。使用以下命令:

复制代码
sudo apt-get update

2.安装libaio:

接下来,安装libaio库。这可以通过以下命令实现:

复制代码
sudo apt-get install libaio1

3.验证安装:

为了确保libaio库已成功安装,可以使用以下命令进行验证:

复制代码
dpkg -l | grep libaio

4.输出应显示类似以下内容:

复制代码
ii  libaio1:amd64 0.3.112-5 amd64 Linux AIO access library

通过以上步骤,您已经成功安装了libaio依赖,解决了Ubuntu 20.04系统上的特定问题,为MySQL 8.4.3 LTS的顺利安装打下了坚实的基础。

3.2 数据库初始化及my.cnf文件配置

在完成依赖项的安装后,接下来的重要步骤是进行数据库的初始化和配置my.cnf文件。这一步骤不仅确保了数据库的初始状态,还为后续的性能优化和安全管理奠定了基础。以下是详细的步骤:

  1. 初始化数据库:

首先,切换到MySQL的安装目录,并使用mysqld命令初始化数据库。使用以下命令:

复制代码
cd /usr/local/mysql
bin/mysqld --initialize --user=mysql

初始化过程中,系统会生成一个临时的root用户密码,记录下来以备后续使用。

  1. 配置my.cnf文件:

接下来,编辑my.cnf文件以配置MySQL的各项参数。创建或编辑/etc/my.cnf文件,添加以下内容:

配置文件

复制代码
[mysqld]
bind-address=0.0.0.0
# 端口
port=3306
# 用户
user=mysql
# mysql根路径
basedir=/usr/local/mysql
# mysql数据路径
datadir=/usr/local/mysql/data

[mysqld_safe]
# 会话信息
socket=/usr/local/mysql/data/tmp/mysql.sock
# 错误日志路径
log-error=/usr/local/mysql/data/error/mysql.log
# 进程存放路径
pid-file=/usr/local/mysql/data/mysql.pid

#character config
# 服务编码格式
character_set_server=utf8mb4
# symbolic-links=0为是否支持符号链接,即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,为0不开启
symbolic-links=0
# 对column属性是timestamp的处理模式,默认OFF
explicit_defaults_for_timestamp=ON

# 关闭MySQL的only_full_group_by模式
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#忽略表名大小写
lower_case_table_names=1
[client]
# 客户端默认编码格式
default-character-set=utf8mb4
socket=/usr/local/mysql/data/tmp/mysql.sock
  1. 创建必要的目录和文件:

确保创建必要的目录和文件,并设置适当的权限。使用以下命令:

复制代码
mkdir -p data
chown mysql:mysql data
mkdir -p data/error
chown mysql:mysql  data/error
touch data/error/mysql.log
chown mysql:mysql data/error/mysql.log
mkdir -p data/tmp
chown mysql:mysql data/tmp

通过以上步骤,您已经成功初始化了MySQL数据库,并配置了my.cnf文件,为后续的启动和使用做好了准备。

3.3 环境变量设置与MySQL服务启动

在完成数据库初始化和配置文件设置后,接下来的步骤是设置环境变量并启动MySQL服务。这一步骤确保了MySQL能够在系统中正常运行,并且用户可以方便地进行管理和操作。以下是详细的步骤:

  1. 设置环境变量:

为了方便使用MySQL命令,需要将MySQL的bin目录添加到系统的环境变量中。编辑/etc/profile文件,添加以下内容:

复制代码
export PATH=$PATH:/usr/local/mysql/bin
  1. 使环境变量生效,使用以下命令:

    source /etc/profile

  2. 启动MySQL服务:

使用以下命令启动MySQL服务:

复制代码
bin/mysqld_safe --user=mysql &
  1. 验证MySQL服务状态:

为了确保MySQL服务已成功启动,可以使用以下命令进行验证:

复制代码
systemctl status mysql

输出应显示MySQL服务正在运行。

  1. 登录MySQL并进行相关设置:

使用临时的root用户密码登录MySQL:

复制代码
mysql -u root -p

登录后,进行相关设置,如修改root用户密码和授权:

复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

通过以上步骤,您已经成功设置了环境变量并启动了MySQL服务,确保了MySQL在Ubuntu 20.04系统上的正常运行。这不仅为您的数据库应用提供了强大的支持,还为您后续的开发和维护工作打下了坚实的基础。

四、MySQL服务管理与授权
4.1 登录MySQL并进行相关设置

在完成了MySQL 8.4.3 LTS的安装和初始化之后,接下来的步骤是登录MySQL并进行相关的设置。这一步骤不仅确保了数据库的初始状态,还为后续的管理和使用奠定了基础。以下是详细的登录步骤和相关设置:

  1. 登录MySQL:

使用临时的root用户密码登录MySQL。在终端中输入以下命令:

复制代码
 mysql -u root -p

输入临时密码后,您将进入MySQL的命令行界面。

  1. 查看当前用户:

为了确认您已成功登录,可以使用以下命令查看当前用户:

复制代码
SELECT USER();

输出应显示当前登录的用户为root@localhost。

  1. 查看数据库列表:

使用以下命令查看当前系统中的所有数据库:

复制代码
SHOW DATABASES;

输出将列出所有可用的数据库,包括默认的information_schema、mysql、performance_schema和sys等系统数据库。

  1. 查看表结构:

为了更好地了解数据库的结构,可以使用以下命令查看某个数据库中的表结构。例如,查看mysql数据库中的表:

复制代码
USE mysql;SHOW TABLES;

通过以上步骤,您已经成功登录到MySQL并进行了初步的检查。接下来,我们将进行更为重要的设置,如创建root用户、修改密码和授权操作。

4.2 创建root用户、修改密码和授权操作

在MySQL中,root用户拥有最高的权限,因此确保其安全性和权限设置是非常重要的。以下是详细的步骤,帮助您创建root用户、修改密码并进行授权操作:

  1. 修改root用户密码:

为了提高安全性,建议立即修改root用户的默认密码。使用以下命令修改密码:

复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123';

请将新密码替换为您希望设置的强密码。

  1. 刷新权限:

修改密码后,需要刷新权限以使更改生效。使用以下命令:

复制代码
FLUSH PRIVILEGES;
  1. 创建新的root用户:

如果您希望创建一个新的root用户,可以使用以下命令:

复制代码
CREATE USER 'new_root'@'localhost' IDENTIFIED BY '123';

请将new_root和新密码替换为您希望使用的用户名和密码。

  1. 授予权限:

为了确保新创建的root用户拥有所有权限,可以使用以下命令:

复制代码
GRANT ALL PRIVILEGES ON *.* TO 'new_root'@'localhost' WITH GRANT OPTION;

这条命令授予新用户对所有数据库和表的全部权限,并允许其授予权限给其他用户。

  1. 再次刷新权限:

授予权限后,再次刷新权限以确保更改生效:

复制代码
FLUSH PRIVILEGES;
  1. 退出MySQL:

完成所有设置后,使用以下命令退出MySQL:

复制代码
 EXIT;

通过以上步骤,您已经成功创建了root用户、修改了密码并进行了授权操作。这不仅提高了数据库的安全性,还为后续的管理和使用提供了便利。确保您的密码足够复杂,并定期更换,以进一步增强系统的安全性。

五、快速部署脚本
5.1 提供快速部署脚本

在完成上述所有步骤后,为了进一步简化MySQL 8.4.3 LTS在Ubuntu 20.04系统上的离线安装过程,我们提供了一个快速部署脚本。详细内容:

复制代码
#!/bin/bash
# 更新软件包列表
sudo apt-get update
# 安装libaio依赖
sudo apt-get install -y libaio1
# 创建MySQL用户和用户组
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
# 下载并解压MySQL安装包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.4.3-linux-glibc2.28-x86_64.tar.xztar -xvf mysql-8.4.3-linux-glibc2.28-x86_64.tar.xz
sudo mv mysql-8.4.3-linux-glibc2.28-x86_64 /usr/local/mysql
# 设置文件夹权限
sudo chown -R mysql:mysql /usr/local/mysql
sudo chmod -R 750 /usr/local/mysql
sudo chown -R mysql:mysql /usr/local/mysql/data
sudo chmod -R 700 /usr/local/mysql/data
sudo mkdir -p data/tmp
sudo  chown -R mysql:mysql data/tmp
sudo mkdir -p data/error
sudo  chown -R mysql:mysql data/error
sudo touch data/error/mysql.log
sudo  chown -R mysql:mysql data/error/mysql.log
# 初始化数据库
cd /usr/local/mysql
sudo bin/mysqld --initialize --user=mysql
# 配置my.cnf文件
sudo tee /etc/my.cnf > /dev/null 
<<EOF
[mysqld]
bind-address=0.0.0.0
# 端口
port=3306
# 用户
user=mysql
# mysql根路径
basedir=/usr/local/mysql
# mysql数据路径
datadir=/usr/local/mysql/data
[mysqld_safe]
# 会话信息
socket=/usr/local/mysql/data/tmp/mysql.sock
# 错误日志路径
log-error=/usr/local/mysql/data/error/mysql.log
# 进程存放路径
pid-file=/usr/local/mysql/data/mysql.pid
#character config
# 服务编码格式
character_set_server=utf8mb4
# symbolic-links=0为是否支持符号链接,即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,为0不开启
symbolic-links=0
# 对column属性是timestamp的处理模式,默认OFF
explicit_defaults_for_timestamp=ON
# 关闭MySQL的only_full_group_by模式
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#忽略表名大小写
lower_case_table_names=1
[client]
# 客户端默认编码格式
default-character-set=utf8mb4
socket=/usr/local/mysql/data/tmp/mysql.sock
# 设置环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin' | sudo tee -a /etc/profile
source /etc/profile
# 启动MySQL服务
sudo bin/mysqld_safe --user=mysql &
# 验证MySQL服务状态
sudo systemctl status mysql
# 登录MySQL并进行相关设置
echo "请使用临时的root用户密码登录MySQL并进行相关设置"
5.2 脚本使用说明与注意事项

使用说明

  1. 下载脚本:

将上述脚本保存为一个文件,例如mysql_install.sh。

  1. 赋予执行权限:

使用以下命令赋予脚本执行权限:

复制代码
chmod +x mysql_install.sh
  1. 运行脚本:

在终端中运行脚本:

复制代码
    ./mysql_install.sh

注意事项

1. 网络连接:

脚本中包含了从MySQL官方网站下载安装包的步骤,因此在运行脚本前,请确保您的系统能够访问互联网。如果您已经在本地准备好了安装包,可以修改脚本中的下载部分,直接使用本地路径。

2. 系统权限:

脚本中涉及多个需要root权限的操作,因此请确保您以root用户或使用sudo权限运行脚本。

3. 临时密码:

在初始化数据库时,系统会生成一个临时的root用户密码。请务必记录下这个密码,以便后续登录MySQL进行相关设置。

4. 环境变量:

脚本中设置了环境变量,使MySQL的命令可以在终端中直接使用。如果您已经设置了其他环境变量,请注意不要覆盖原有的设置。

5. 日志文件:

脚本中配置了MySQL的日志文件路径。请确保日志文件所在的目录存在,并且MySQL用户有写入权限。

通过使用这个快速部署脚本,您可以大大简化MySQL 8.4.3 LTS在Ubuntu 20.04系统上的离线安装过程,节省时间和精力,确保安装过程的顺利进行。希望这个脚本能为您的数据库部署带来便利。

6. 出现问题:   使用不了musql命令

创建链接:我的是在这个目录下/usr/local/mysql/bin/mysql

复制代码
ln -s /usr/local/mysql/bin/mysql /usr/bin
六. 总结

本文详细阐述了在Ubuntu 20.04操作系统上离线安装MySQL 8.4.3 LTS版本的全过程。文章首先介绍了环境配置和前期准备工作,确保系统具备安装MySQL所需的各项条件。接着,指导用户如何下载MySQL的安装包,并将其上传到目标服务器上。

文章详细说明了用户与权限的设置步骤,确保MySQL服务能够以正确的用户身份运行,同时保障系统的安全性。随后,逐步介绍了MySQL的安装与配置过程,包括如何解压安装包、设置配置文件、初始化数据库等关键步骤。

此外,文章还涵盖了MySQL服务的管理,包括如何启动、停止和配置MySQL服务,以及如何进行用户授权,确保数据库的安全访问。为了帮助用户更高效地完成安装,文章提供了一个快速部署脚本,该脚本可以自动化大部分安装步骤,简化操作流程,提高安装效率。

通过本文的指导,用户可以顺利地在Ubuntu 20.04系统上完成MySQL 8.4.3 LTS的离线安装,并确保系统的稳定性和安全性。希望本文能为您的数据库部署工作提供有价值的参考和帮助。

更多精彩内容:

相关推荐
wdxylb25 分钟前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
python_chai1 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
飞雪20071 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪2 小时前
关于Linux内核中头文件问题相关总结
linux
海绵不是宝宝8173 小时前
连接远程服务器上的 jupyter notebook,解放本地电脑
服务器·jupyter·github
Lovyk4 小时前
Linux 正则表达式
linux·运维
冒泡的肥皂5 小时前
MVCC初学demo(一
数据库·后端·mysql
Fireworkitte5 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9006 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char6 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos