Linux系统离线部署MySQL详细教程(带每步骤图文教程)

1、登录官网下载对应的安装包

MySQL :: Developer Zone

2、将压缩包上传到服务器上,这里直接上传到/usr/local路径上

使用sftp工具上传到/usr/local目录上

3、解压压缩包

tar -xf mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz

4、将mysql-8.0.39-linux-glibc2.17-x86_64目录重命名为mysql

在/usr/mysql/目录下

mv mysql-8.0.39-linux-glibc2.17-x86_64 mysql

5、创建用户组

groupadd mysql #创建用户组

useradd -r -g mysql mysql

-r 参数表示mysql 用户是系统用户,不可用于登录系统;

-g 将用户mysql添加到用户组mysql中

6、分配用户组,将文件属性、组属性改为mysql

chown -R mysql /usr/local/mysql/ # 将文件的所有属性改为mysql用户

chgrp -R mysql /usr/local/mysql/ # 将组属性改为mysql组

7、创建新的数据目录(也可以使用默认的数据目录,一般在/var目录下)

mkdir -p /data/mysql #创建数据目录

chown mysql:mysql -R /data/mysql# 将新目录文件的所有属性改为mysql用户

8、修改MySQL服务器配置文件

vim /etc/my.cnf

添加如下配置信息

mysqld

port=3306 # 设置MySQL服务监听端口,默认3306

bind-address=0.0.0.0# 设置MySQL服务器绑定的IP地址,可以设置为自己本机IP

user=mysql # 设置MySQL数据库用户

basedir=/usr/local/mysql # 数据库文件路径

datadir=/data/mysql # 数据库数据目录,存储数据库文件的路径

socket=/tmp/mysql.sock # 设置MySQL服务器使用的套接字文件路径

pid-file=/data/mysql/mysql.pid # 设置指定存放进程ID的文件

character_set_server=utf8mb4 # 设置每个连接的默认字符集

symbolic-links=0

explicit_defaults_for_timestamp=true # mysql-5.6.6丢弃了这个系统变量,版本高于5.6.6的可加上

9、初始化数据库

先切换到mysql路径,再执行初始化

cd /usr/local/mysql/bin

复制代码
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

--basedir 为mysql解压目录,--datadir 为mysql数据存放目录,就是在/etc/my.cnf配置的路径

PS:此步骤可能因glibc依赖问题会报错,如报错可参考第15条的解决方法。

10、初始化后就可以查看mysql初始密码了

cat /data/mysql/mysql.err

11、加入到系统服务,启动mysql服务

复制代码
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

PS:此步骤重启mysql服务可能会log-err文件目录不存在报错,可参考第15条的解决方法。

12、MySQL服务启动成功后,就可以登录到mysql数据库

/usr/local/mysql/bin/mysql -u root -p

输入刚开始初始化后查看到的初始密码,即可完成进入mysql数据库

PS:如果想直接使用mysql -u root -p 直接登录,则需要先把mysql的路径映射链接到/usr/bin目录下

ln -s /usr/local/mysql/bin/mysql /usr/bin

13、更改mysql数据库登录初始密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

FLUSH PRIVILEGES; #刷新

14、完成部署

退出数据库,再次登录即可输入更改的密码,到此mysql已经部署完成,成功部署。

15、部署时可能出现的问题

1、初始化数据库报错

初始化数据库的时候报"./mysqld:/lib64/libstdc++.so.6:version 'CXXABI 1.3.11' not found (required by ./mysqld)"

此报错是缺少对应的libstdc++版本依赖问题,可以先查看对应的版本

strings /usr/lib64/libstdc++ |grep CXXABI

find / -name "libstdc++.so.6*"

可以看到是缺少相应的版本依赖。

(1)解决办法

1)可以看缺少那些依赖就安装对应的依赖版本

  1. 使用rpm查看glibc版本,然后去官网下载对应的版本即可
2、启动mysql服务报错

启动mysql服务时可能会报"Starting MySQL.2024-09-20T09:32:58.959370Z mysqld safe error:log-errorr set to/var/log/mariadb/mariadb.log',however file don't exists.Create writable for us 'mysql'"

**(1 )**解决方法

此错误时没有对应的目录和文件,进行创建目录和文件即可

mkdir /var/log/mariadb/

touch /var/log/mariadb/mariadb.log

chown -R mysql:mysql /var/log/mariadb/

相关推荐
大聪明-PLUS14 分钟前
QEMU:如何组织与 I2C 设备的透明交互
linux·嵌入式·arm·smarc
sulikey1 小时前
【Linux权限机制深入理解】为何没有目录写权限仍能修改文件权限?
linux·运维·笔记·ubuntu·centos
liu****1 小时前
8.list的模拟实现
linux·数据结构·c++·算法·list
biubiubiu07061 小时前
VPS SSH密钥登录配置指南:告别密码,拥抱安全
linux
人生苦短,菜的抠脚2 小时前
Linux 内核IIO sensor驱动
linux·驱动开发
jz_ddk2 小时前
[LVGL] 从0开始,学LVGL:进阶应用与项目实战(上)
linux·信息可视化·嵌入式·gui·lvgl·界面设计
望获linux3 小时前
【实时Linux实战系列】Linux 内核的实时组调度(Real-Time Group Scheduling)
java·linux·服务器·前端·数据库·人工智能·深度学习
MC丶科3 小时前
【SpringBoot常见报错与解决方案】端口被占用?Spring Boot 修改端口号的 3 种方法,第 3 种 90% 的人不知道!
java·linux·spring boot
江公望3 小时前
ubuntu kylin(优麒麟)和标准ubuntu的区别浅谈
linux·服务器·ubuntu·kylin
Lynnxiaowen3 小时前
今天我们开始学习python语句和模块
linux·运维·开发语言·python·学习