Ubuntu 20.04LTS 系统离线安装5.7.44mysql数据库

Ubuntu 20.04LTS 系统离线安装5.7.44mysql数据库

    • 环境
    • 下载 MySQL 5.7.44 包
    • 安装
    • 检查服务是否启动成功
      • 启动失败
      • 处理问题
      • mysql服务已经运行成功,但是mysql命令不被识别
    • 登陆&修改密码&远程访问

环境

操作系统:Ubuntu 20.04.4 LTS
数据库:MySQL 5.7.34
内核版本:x86_64(amd)
网络情况:内网服务器,无法访问互联网资源

查看linux系统内核及具体版本

uname -a
lsb_release -a

下载 MySQL 5.7.44 包

在一台有互联网连接的计算机上,访问
MySQL的下载页面
这里我遇到了一个小问题,就是官方没有专门的Ubuntu 20.04LTS系统的mysql,我不知道该使用哪个。
下面是我使用ai软件查询到的的信息。意思是linux通用版可以使用,当然也可以使用其他其他ubuntu版本或第三方版本版本的数据库,不过可能没这个版本兼容性好一些。

在你提到的 MySQL 版本中:“Linux - Generic (glibc 2.12) (x86, 64-bit)” 是适用于
Ubuntu 20.04 LTS 的版本。下面是一些选择的理由: Ubuntu 20.04 LTS 是一个64位系统:
如果你的系统是64位的(大多数现代计算机都是64位),那么你应该选择 “x86, 64-bit” 版本。 glibc版本兼容: Ubuntu
20.04 使用的是较新的 glibc 版本,所以选择一个通用的、基于 glibc 2.12 的版本是合适的,因为它将在大多数情况下与较新的 glibc 兼容。
Ubuntu 20.04LTS 系统离线安装5.7.44mysql数据库_第1张图片

安装

解压

tar -xvf mysql-5.7.44-linux-glibc2.12-x86_64.tar
tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

mysql-test-5.7.44-linux-glibc2.12-x86_64.tar.gz 是一个压缩的归档文件,包含了 MySQL
5.7.44 版本的测试工具和相关文件。 MySQL 测试套件通常包含一些脚本和工具来帮助你验证 MySQL 安装是否正常工作。你可以参考 MySQL 官方文档或 README 文件来了解如何运行这些测试。

移动到指定安装位置(我的:/home 下)

sudo mv mysql-5.7.44-linux-glibc2.12-x86_64 /mysql

将文件重命名为mysql

mv mysql-5.7.44-linux-glibc2.12-x86_64/ mysql-5.7.44/

创建文件夹

sudo mkdir -p /mysql/mysql-5.7.44/data
sudo mkdir -p /mysql/mysql-5.7.44/log

创建用户和组:

sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

配置权限:

sudo chown -R mysql:mysql /mysql
sudo chown -R mysql:mysql /mysql/mysql-5.7.44/data
sudo chown -R mysql:mysql /mysql/mysql-5.7.44/log
sudo chmod -R 755 /mysql/mysql-5.7.44/log
sudo chmod -R 755 /mysql/mysql-5.7.44/log

3.创建my.cnf文件
添加了一些常用的配置,参数含义不理解的将配置文件放到ai里解读一下即可,对应文件夹如果自定义的话一定对应正确。

vim /etc/my.cnf

添加内容

[mysqld]
bind-address=0.0.0.0
#端口号
port=3306
user=mysql
#mysql所在目录
basedir=/mysql/mysql-5.7.44
#数据的存放目录
datadir=/mysql/mysql-5.7.44/data
#mysql.sock 存放位置
socket=/tmp/mysql.sock
#错误日志存放位置
log-error=/mysql/mysql-5.7.44/log/mysql.err
#pid 存放位置
pid-file=/mysql/mysql-5.7.44/mysql.pid
#character config
character_set_server=utf8mb4
skip-name-resolve = 0
#skip-grant-tables #这个是因为忘记root密码加的
symbolic-links=0

4.初始化数据库:

#切换到对应目录
cd /mysql/mysql-5.7.44/bin
#执行初始化命令,如果不是root账号,一定要加sudo
sudo ./mysqld --defaults-file=/etc/my.cnf --basedir=/mysql/mysql-5.7.44/ --datadir=/mysql/mysql-5.7.44/data/ --initialize

5.查看mysql密码

cat /mysql/mysql-5.7.44/log/mysql.err

6.开启服务

#设置开机自启动
sudo systemctl enable mysql
#启动服务
sudo systemctl start mysql

检查服务是否启动成功

为什么要检查是否成功呢,因为我失败了,因为我使用的是小权限账号,因为缺乏权限遇到了很多错误。

ubuntu系统检查服务状态

sudo systemctl status mysql

查看mysql监听的ip端口

sudo ss -tlnp | grep mysql

启动失败

我遇到的问题是mysql服务没有创建成功,导致服务启动不起来,可能是因为我配置文件里的文件夹没有写正确的原因;不过初始化命令中的文件路径对应正确了,因此我不用再次初始化了。
我的部分报错信息如下:

○ mysql.service
Loaded: error (Reason: Unit mysql.service failed to load properly, please adjust/correct and reload service manager: Bad
message)
Active: inactive (dead)

Feb 20 02:38:38 hgcdatabase systemd[1]:
/etc/systemd/system/mysql.service:1: Invalid section header ‘[Unit]
Description=MySQL Server’ Feb 20 02:38:38 hgcdatabase systemd[1]:
/etc/systemd/system/mysql.service:1: Invalid section header ‘[Unit]
Description=MySQL Server’

查看错误日志

cat /mysql/mysql-5.7.44/log/mysql.err

2025-02-20T03:00:39.475323Z 0 [Warning] TIMESTAMP with implicit
DEFAULT value is deprecated. Please use
–explicit_defaults_for_timestamp server option (see documentation for more details). 2025-02-20T03:00:39.475401Z 0 [Note] --secure-file-priv
is set to NULL. Operations related to importing and exporting data are
disabled 2025-02-20T03:00:39.475420Z 0 [Note]
/mysql/mysql-5.7.44/bin/mysqld (mysqld 5.7.44) starting as process
106345 … 2025-02-20T03:00:39.479699Z 0 [Note] InnoDB: PUNCH HOLE
support available 2025-02-20T03:00:39.479722Z 0 [Note] InnoDB: Mutexes
and rw_locks use GCC atomic builtins 2025-02-20T03:00:39.479726Z 0
[Note] InnoDB: Uses event mutexes 2025-02-20T03:00:39.479729Z 0 [Note]
InnoDB: GCC builtin __sync_synchronize() is used for memory barrier
2025-02-20T03:00:39.479731Z 0 [Note] InnoDB: Compressed tables use
zlib 1.2.13 2025-02-20T03:00:39.479734Z 0 [Note] InnoDB: Using Linux
native AIO 2025-02-20T03:00:39.479917Z 0 [Note] InnoDB: Number of
pools: 1 2025-02-20T03:00:39.479997Z 0 [Note] InnoDB: Using CPU crc32
instructions 2025-02-20T03:00:39.504407Z 0 [Note] InnoDB: Initializing
buffer pool, total size = 128M, instances = 1, chunk size = 128M
2025-02-20T03:00:39.511182Z 0 [Note] InnoDB: Completed initialization
of buffer pool 2025-02-20T03:00:39.513008Z 0 [Note] InnoDB: If the
mysqld execution user is authorized, page cleaner thread priority can
be changed. See the man page of setpriority().
2025-02-20T03:00:39.524458Z 0 [Note] InnoDB: Highest supported file
format is Barracuda. 2025-02-20T03:00:39.559722Z 0 [Note] InnoDB:
Removed temporary tablespace data file: “ibtmp1”
2025-02-20T03:00:39.559741Z 0 [Note] InnoDB: Creating shared
tablespace for temporary tables 2025-02-20T03:00:39.559778Z 0 [Note]
InnoDB: Setting file ‘./ibtmp1’ size to 12 MB. Physically writing the
file full; Please wait … 2025-02-20T03:00:39.743700Z 0 [Note]
InnoDB: File ‘./ibtmp1’ size is now 12 MB. 2025-02-20T03:00:39.744437Z
0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback
segment(s) are active. 2025-02-20T03:00:39.744448Z 0 [Note] InnoDB: 32
non-redo rollback segment(s) are active. 2025-02-20T03:00:39.744844Z 0
[Note] InnoDB: Waiting for purge to start 2025-02-20T03:00:39.795067Z
0 [Note] InnoDB: 5.7.44 started; log sequence number 2768319
2025-02-20T03:00:39.795341Z 0 [Note] InnoDB: Loading buffer pool(s)
from /mysql/mysql-5.7.44/data/ib_buffer_pool
2025-02-20T03:00:39.795393Z 0 [Note] Plugin ‘FEDERATED’ is disabled.
2025-02-20T03:00:39.796409Z 0 [Note] InnoDB: Buffer pool(s) load
completed at 250220 3:00:39 2025-02-20T03:00:39.800190Z 0 [Note]
Found ca.pem, server-cert.pem and server-key.pem in data directory.
Trying to enable SSL support using them. 2025-02-20T03:00:39.800202Z 0
[Note] Skipping generation of SSL certificates as certificate files
are present in data directory. 2025-02-20T03:00:39.800206Z 0 [Warning]
A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or
higher. 2025-02-20T03:00:39.800209Z 0 [Warning] A deprecated TLS
version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2025-02-20T03:00:39.804448Z 0 [Warning] CA certificate ca.pem is self
signed. 2025-02-20T03:00:39.804493Z 0 [Note] Skipping generation of
RSA key pair as key files are present in data directory.
2025-02-20T03:00:39.805850Z 0 [Note] Server hostname (bind-address):
‘0.0.0.0’; port: 3306 2025-02-20T03:00:39.805868Z 0 [Note] -
‘0.0.0.0’ resolves to ‘0.0.0.0’; 2025-02-20T03:00:39.805909Z 0 [Note]
Server socket created on IP: ‘0.0.0.0’. 2025-02-20T03:00:39.808139Z 0
[ERROR] Can’t start server: can’t check PID filepath: No such file or
directory

处理问题

创建服务

sudo vi /etc/systemd/system/mysql.service

检查配置文件是否存在,查看pid-file的路径

ls -l /etc/mysql/my.cnf

根据自己需要添加

[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/path/to/mysqld  
pid-file=/var/run/mysqld/mysqld.pid #这两个路径需要修改
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

重新加载 systemd 管理器配置

sudo systemctl daemon-reload

启动 MySQL 服务

sudo systemctl start mysql.service

检查服务状态

sudo systemctl status mysql.service

查看是否启动成功了
查看数据库版本

mysql -V

mysql服务已经运行成功,但是mysql命令不被识别

检查环境变量

echo $PATH

设置环境变量: 你可能想要将 MySQL 的 bin 目录添加到 PATH 环境变量中,以便能够在任何地方使用 MySQL 命令:

echo 'export PATH=/mysql/mysql-5.7.44/bin:$PATH' >> ~/.bashrc
source ~/.bashrc 

然后msyql命令可以使用了,但是海报一个错误

mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

从网上没搜到,然后直接用6代替5使用了

创建一个符号链接,使得 libncurses.so.5 指向 libncurses.so.6:

sudo ln -s /lib/x86_64-linux-gnu/libncurses.so.6 /lib/x86_64-linux-gnu/libncurses.so.5

我没有验证,继续使用mysql命令,又报其他依赖缺失,不过这个依赖可以下载到

mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

用在 AMD64 上 的下载页面libtinfo5_6.2-0ubuntu2.1_amd64.deb
上传上安装就可以了

sudo gdebi -n /mysql/*.deb

如果没有命令需要安装

sudo apt install gdebi-core

mysql识别了,又提示没有套接字文件

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket
‘/tmp/mysql.sock’ (111)

此地址下明明有文件,从网上查询了大量的教程都无法解决,重新初始化也不行,到最后修改配置文件将套接字文件目录改到mysql目录下,重启解决。
原因可能是这个目录挂在的有问题

df -h /tmp

登陆&修改密码&远程访问

登陆 初始化密码去/home/mysql/log/err.log 内查

mysql -uroot -p -P3306

设置密码
如果密码中包含特殊字符 ’ 或 $ 等,则需要使用双引号。

alter user 'root'@'localhost' identified by “password”;

刷新

flush privileges;

切换到mysql 库

use mysql;

设置远程访问

update user set host='%' where user = 'root';

刷新

flush privileges;

参考博客:Linux 之 mysql-5.7.44 下载/安装(离线)

你可能感兴趣的:(前端,数据库,数据库,mysql)