CentOS 离线安装 MySQL8

安装 Mysql

在服务器上安装 Mysql8 , 需要先将安装包在外网下载后拷贝到内网,有两种方式最常用

一、rpm包安装

1. 下载 mysql rpm 包

https://downloads.mysql.com/archives/community/

CentOS 离线安装 MySQL8_第1张图片

2. 安装 Mysql

解压

tar xvf mysql-8.0.32-1.el8.x86_64.rpm-bundle.tar 

安装 rpm 包

rpm -ivh mysql-community-common-8.0.32-1.el8.x86_64.rpm

rpm -ivh mysql-community-client-plugins-8.0.32-1.el8.x86_64.rpm

rpm -ivh mysql-community-libs-8.0.32-1.el8.x86_64.rpm 

rpm -ivh mysql-community-client-8.0.32-1.el8.x86_64.rpm

rpm -ivh mysql-community-icu-data-files-8.0.32-1.el8.x86_64.rpm 

rpm -ivh mysql-community-server-8.0.32-1.el8.x86_64.rpm

创建用户组和用户

groupadd mysql
useradd -g mysql mysql

初始化 Mysql

mysqld --initialize --console

修改权限

chown -R mysql:mysql /var/lib/mysql/

启动 mysql

systemctl start mysqld

查看初始密码

cat /var/log/mysqld.log  | grep localhost

登陆 mysql ,使用刚查看的初始密码

mysql -uroot -p

修改密码复杂度

set global validate_password_policy=LOW;
set global validate_password_length=6;

查看密码复杂度是否修改成功

SHOW VARIABLES LIKE 'validate_password%';

修改密码

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

开启远程访问

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;

二、Linux 通用包安装

1. 下载 mysql 包

https://downloads.mysql.com/archives/community/

CentOS 离线安装 MySQL8_第2张图片

2. 安装 Mysql

解压

tar xvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz -C /usr/local

重命名文件夹

cd /usr/local/
mv mysql-8.0.32-linux-glibc2.12-x86_64 mysql8

创建用户组和用户

groupadd mysql
useradd -g mysql mysql

创建 data 数据存储目录

mkdir -p /usr/local/mysql8/data

授权用户

chown -R mysql.mysql /usr/local/mysql8/

初始化数据库 , 记住初始密码

cd /usr/local/mysql8/bin
./mysqld --user=mysql --basedir=/opt/mysql/mysql8 --datadir=/opt/mysql/mysql8/data/ --initialize --lower-case-table-names=1

在这里插入图片描述

添加服务

cp -a ./support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
ln -s /usr/local/mysql8/bin/mysql /usr/bin

新建文件 my.cnf

vim /etc/my.cnf

[mysqld]
#设置 mysql 的安装目录
basedir=/usr/local/mysql8/
#设置 mysql 数据库的数据的存放目录
datadir=/usr/local/mysql8/data
# 设置客户端默认字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 设置是否区分大小写
lower_case_table_names=1
# 默认使用 mysql_native_password 插件认证 
default_authentication_plugin=mysql_native_password

# 注释 mysqld_safe 下的所有配置 系统会输出到 datadir 目录下
#[mysqld_safe]
#log-error=/var/log/mysqld.log
#pid-file=/var/run/mysqld/mysqld.pid

启动数据库服务

services mysql start

登录 mysql 并修改密码

mysql -uroot -p
# 修改密码
alter user 'root'@'localhost' identified by '123456';  
# 刷新权限
flush privileges;

开启远程访问

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;

安装遇到的问题

Linux 通用包安装过程中出现环境缺失问题,由于是内网,所以需要先将环境依赖包拷贝到内网中

/lib64/libc.so.6: version `GLIBC_XXX` not found

需要升级 glibc 到 2.28 版本,但升级过程中又出现错误

These critical programs are missing or too old: make bison compiler
Check the INSTALL file for required versions.

需要升级 gcc 和 make ,同时挂载 yum 源

注: 之前在网上查找解决方案将 gcc 升级到了 11.2.0 还是失败,原因是 gcc11.2.0 版本太高,无法编译 glibc2.28, 需要安装 gcc8.2.0
文末是网上找的 gcc 卸载教程

一、挂载 YUM 源

下载 iso 镜像并上传到服务器中

https://mirrors.aliyun.com/centos/

挂载镜像

mount CentOS-7-x86_64-DVD-1810.iso /mnt/

新建 repo 文件

mv /etc/yum.repos.d /etc/yum.repos.d.bak
mkdir /etc/yum.repos.d
cd /etc/yum.repos.d
vim media.repo

[yum]
name=CentOS7
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7

重新加载 yum 源

yum clean all

二、升级 GCC

下载 gcc 安装包

https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.gz

解压

tar -zvxf gcc-8.2.0.tar.gz -C /usr/local

查看所需依赖及版本信息

cd /usr/local/gcc-8.2.0
vim ./contrib/download_prerequisites

CentOS 离线安装 MySQL8_第3张图片

下载这四个依赖包

http://www.mirrorservice.org/sites/sourceware.org/pub/gcc/infrastructure/

下载完成后将依赖包放在指定目录下并解压

cd /usr/local/gcc-8.2.0
tar -xf gmp-6.1.0.tar.bz2
tar -xf mpfr-3.1.4.tar.bz2
tar -xf mpc-1.0.3.tar.gz
tar -xf isl-0.18.tar.bz2  

建立软连接

ln -sf gmp-6.1.0 gmp
ln -sf mpfr-3.1.4 mpfr 
ln -sf mpc-1.0.3 mpc
ln -sf isl-0.18 isl

安装 gcc , 大约需要两个小时

mkdir build
cd build
../configure --prefix=/usr/local/gcc-8.2.0 --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j 2
make install

更新软连接

yum -y remove gcc g++
ln -s /usr/local/gcc-8.2.0/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc-8.2.0/bin/g++ /usr/bin/g++

查看版本号

gcc -v
g++ -v

三、升级 make

下载 make 安装包

http://ftp.gnu.org/gnu/make/

解压

tar -xzvf make-4.2.tar.gz

安装 make

cd make-4.2
./configure
make
make install

更新软连接

rm -rf /usr/bin/make
cp ./make /usr/bin/

查看版本号

make -v

四、升级 glibc

下载 glibc 安装包

https://mirror.bjtu.edu.cn/gnu/libc/

解压

tar -xf glibc-2.28.tar.xz -C /usr/local

安装 glibc , 大约需要半个小时

cd /usr/local/glibc-2.28/
mkdir build
cd build/
yum install -y bison
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make -j 2
make install

五、安装 libstdc++.so.6

查看是否包含 GLIBC_XXX 版本

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

下载高版本动态库 libstdc++.so.6.0.26

该博主提供免费下载链接【 https://blog.csdn.net/weixin_43227196/article/details/110946066 】

新建软连接

cd /usr/lib64
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s libstdc++.so.6.0.26 libstdc++.so.6

查看是否包含 GLIBC_XXX 版本

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

扩展:卸载 GCC

通过编译源码的方式安装之后,卸载是比较麻烦的,需要手动删除安装的每个文件。如果在编译时,通过 ../configure --prefix=XXXX 指定了安装目录比较简单,直接删除那一整个目录即可。没有指定直接安装在默认目录 /usr/local 下,需要使用特殊方法。

1.重新编译源码,但这次需要加上指定目录,比如使用临时目录 /tmp/gcc

../configure --prefix=/tmp/gcc  --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilib

2.通过遍历这个临时目录下的文件,删除对应在/usr/local下的文件

find /tmp/gcc -type f | sed -e s,/tmp/gcc,, | (while read F; do rm -f "$F"; done)

3.遍历临时目录下的目录,并删除对应的空目录

find /tmp/gcc -depth -type d -not -empty | sed -e s,/tmp/gcc,, | (while read F; do rmdir -p --ignore-fail-on-non-empty "$F"; done)

你可能感兴趣的:(OS,centos,linux,mysql)