ubuntu18离线安装mysql8.0

发布时间 2023-12-22 14:34:29作者: 热气球!

参考文档

Ubuntu中使用apt下载离线包以及相关依赖包 - 厚礼蝎 - 博客园 (cnblogs.com)

ubuntu18.04安装mysql8.0详细教程及踩坑解决方法(包含删除Mysql5.7版本方法)_ubuntu编译安装mysql-CSDN博客

如何配置MySQL8中的lower_case_table_names来让其忽略大小写? – 就是这个范儿 (thisfaner.com)

背景介绍

文档是在个人环境中复现一遍,并非实际生产环境的步骤,因为生产环境涉及公司敏感数据。

接到一个需求要在没有网络环境的Ubuntu 18.04.5 LTS机器上安装MySQL8.x版本,用于作为BI工具的数据存储。

MySQL官网下载列表中没有Ubuntu 18.04 对应的MySQL8.x版本的包,如下图所示

环境说明

网络:机器上没有网络,apt虽然做了代理但是无法获取apt的签名,因为签名需要网络环境

操作系统:Ubuntu 18.04.5 LTS

特殊配置:lower_case_table_names=1 (忽略大小写)

lower_case_table_names 的值:
如果设置为 0,表名将按指定方式存储,并且在对比表名时区分大小写。
如果设置为 1,表名将以小写形式存储在磁盘上,在对比表名时不区分大小写。
如果设置为 2,则表名按给定格式存储,但以小写形式进行比较。
IP地址 角色 主机名 目的
10.0.0.10 有网络 havenetwork 制作离线安装包
10.0.0.11 无网络 notnetwork 需要安装mysql8.0的目标机器

解决思路:

通过aptitude的方式在有网络的Ubuntu 18.04机器下载好MySQL8.0的包并打包压缩传送到无网络环境的机器上进行安装。

操作步骤

获取mysql8.0的apt缓存包 ---> 发送到目标机器 ---> 设置lower_case_table_names=1 --->安装 ---> 安装后验证

制作离线包

# 安装aptitude
root@havenetwork:~# apt install aptitude

# 下载存储库软件包
root@havenetwork:~# wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb

# 安装 (安装过程中提示选择安装版本,默认安装的就是8.0版本,所以直接选择“OK”确认即可)
root@havenetwork:~# dpkg -i mysql-apt-config_0.8.10-1_all.deb
root@havenetwork:~# apt update
# 如果出现下面错误则需要添加仓库签名
W: GPG error: http://repo.mysql.com/apt/ubuntu focal InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B7B3B788A8D3785C
# 添加仓库签名
root@havenetwork:~# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C
# 继续 apt update
root@havenetwork:~# apt update
# 使用方法
root@havenetwork:~# aptitude --download-only install  mysql-server
# 文件下载的位置(这里跟yum的工具还不一样,yum可以直接下载到指定文件夹, aptitude只能下载到 /var/cache/apt/archives 目录下,目录下.deb结尾的就是)

# 安装命令
dpkg -i *.deb

发送到目标机器

cd /var/cache/apt/archives
mkdir mysql_8.0
mv mysql-* mysql_8.0/
tar -zcvf mysql_8.0.tar.gz mysql_8.0/*
scp mysql_8.0.tar.gz root@10.0.0.11:/root/

设置lower_case_table_names

在MySQL数据库中我们可以通过配置 lower_case_table_names=1 来让其忽略大小写。在 MySQL 8 以下版本我们很好配置,但在 MySQL 8 中配置起来却有些麻烦。必须在初始化 MySQL 服务器(安装 MySQL 后的首次启动)之前将 lower_case_table_names 配置为所需的值。 在大多数情况下,这需要在首次启动 MySQL 服务器之前在 MySQL 配置文件中设置 lower_case_table_names

但是,当你在 Debian 和 Ubuntu 使用 APT 安装 MySQL 时,系统将自动为您初始化 MySQL,并且没有机会事先在配置文件中设置该值。因此,在使用 APT 安装 MySQL 之前, 必须使用 debconf-set-selection 实用程序来启用小写的表名。为此,请在使用 APT 安 装 MySQL 之前运行此命令(官方给出的命令)

sudo debconf-set-selections <<< "mysql-server mysql-server/lowercase-table-names select Enabled"

在 MySQL 8 中,数据目录初始化之后,不再允许更改 lower_case_table_names = 1 的 值;

MySQL 基于某些原因,禁止在重新启动 MySQL 服务时将 lower_case_table_names 设置 成不同于初始化 MySQL 服务时设置的 lower_case_table_names 值。

也就是说启动(重启)MySQL 时,lower_case_table_names的值必须于,初始化 MySQL 时(安装 MySQL 后的首次启动)的值相同。

输入之后会出现选择加密方式的提示界面,我在网上的教程中看到默认的mysql8.0的加密方式与ubuntu18.04 不兼容,所以选择5.x的加密方式;建议选择下边的那个:

安装

root@notnetwork:~# tar -zxvf mysql_8.0.tar.gz 
mysql_8.0/libevent-core-2.1-7_2.1.11-stable-1_arm64.deb
mysql_8.0/libevent-pthreads-2.1-7_2.1.11-stable-1_arm64.deb
mysql_8.0/libhtml-template-perl_2.97-1_all.deb
mysql_8.0/libmecab2_0.996-10build1_arm64.deb
mysql_8.0/mecab-ipadic_2.7.0-20070801+main-2.1_all.deb
mysql_8.0/mecab-ipadic-utf8_2.7.0-20070801+main-2.1_all.deb
mysql_8.0/mecab-utils_0.996-10build1_arm64.deb
mysql_8.0/mysql-client-8.0_8.0.35-0ubuntu0.20.04.1_arm64.deb
mysql_8.0/mysql-client-core-8.0_8.0.35-0ubuntu0.20.04.1_arm64.deb
mysql_8.0/mysql-common_5.8+1.0.5ubuntu2_all.deb
mysql_8.0/mysql-server_8.0.35-0ubuntu0.20.04.1_all.deb
mysql_8.0/mysql-server-8.0_8.0.35-0ubuntu0.20.04.1_arm64.deb
mysql_8.0/mysql-server-core-8.0_8.0.35-0ubuntu0.20.04.1_arm64.deb
root@notnetwork:~# cd mysql_8.0/
root@notnetwork:~/mysql_8.0# 
root@notnetwork:~/mysql_8.0# 
root@notnetwork:~/mysql_8.0# ls
libevent-core-2.1-7_2.1.11-stable-1_arm64.deb      mysql-client-8.0_8.0.35-0ubuntu0.20.04.1_arm64.deb
libevent-pthreads-2.1-7_2.1.11-stable-1_arm64.deb  mysql-client-core-8.0_8.0.35-0ubuntu0.20.04.1_arm64.deb
libhtml-template-perl_2.97-1_all.deb               mysql-common_5.8+1.0.5ubuntu2_all.deb
libmecab2_0.996-10build1_arm64.deb                 mysql-server_8.0.35-0ubuntu0.20.04.1_all.deb
mecab-ipadic_2.7.0-20070801+main-2.1_all.deb       mysql-server-8.0_8.0.35-0ubuntu0.20.04.1_arm64.deb
mecab-ipadic-utf8_2.7.0-20070801+main-2.1_all.deb  mysql-server-core-8.0_8.0.35-0ubuntu0.20.04.1_arm64.deb
mecab-utils_0.996-10build1_arm64.deb
root@notnetwork:~/mysql_8.0# dpkg -i *.deb
省略......
如果第一次执行报错,请再执行一次,因为第一次会报错缺少某些依赖,这是因为安装顺序导致的。
root@notnetwork:~/mysql_8.0# netstat  -ntpl 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      5097/mysqld         
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      792/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      861/sshd: /usr/sbin 
tcp        0      0 127.0.0.1:33060         0.0.0.0:*               LISTEN      5097/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      861/sshd: /usr/sbin 
root@notnetwork:~/mysql_8.0# 

安装后验证

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 447
Server version: 8.0.33 MySQL Community Server - GPL

Copyright (c) 2000, 2023, 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> show variables like 'lower_case_table_names';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_table_names | 1     |
+------------------------+-------+
1 row in set (0.01 sec)

mysql>