生态社区

适配知识库

服务器V10 SP1 MySQL安装

发布时间:2021-07-26    浏览次数:1356次    作者:湖南省计算产业生态创新中心 (长沙)

服务器MySQL安装

一、软件介绍

MySQL是一个关系型数据库管理系统。

二、环境要求

本文以MySQL 5.7.32版本,基于新安装的麒麟软件服务器系统V10版本环境进行描述。

准备的服务器要求如表1-1所示。

表1-1 服务器信息

名称

说明

CPU

64cores   Phytium,FT-2000+/64 64bit

内核

Linux-4.19.90-17.ky10.aarch64-aarch64-with-kylin-10-Tercel

内存

64GB

硬盘

480GB


三、配置编译环境

步骤一:检查cmake是否安装

检查是否安装。

rpm -qa |grep cmake

如果未安装,需要安装:

wget https://cmake.org/files/v3.12/cmake-3.12.1.tar.gz

tar -xvf cmake-3.12.1.tar.gz

cd cmake-3.12.1

./bootstrap

gmake

gmake install

步骤二:安装依赖包

执行以下命令安装依赖包:

yum install bison* ncurses*

yum install -y bzip2 wget

在线安装openssl-devel

yum -y install openssl-devel

离线安装openssl-devel:

wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz

tar zxf openssl-1.0.2h.tar.gz

cd openssl-1.0.2h
./config shared zlib

make depend

make
make install

 

安装rpcgen

wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz

tar xf rpcsvc-proto-1.4.tar.gz

cd rpcsvc-proto-1.4

./configure

make

make install

步骤三:升级gcc版本至5.3或者以上

1.检查gcc的版本

gcc --version

(可选)安装gcc7.3。

本文档以7.3版本为例。

2.当版本不满足要求时,需要安装gcc

下载gcc7.3。

下载地址:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

1)将“gcc-7.3.0.tar.gz”放置于“/home”目录下,并解压安装。

cd /home

tar -xvf gcc-7.3.0.tar.gz

3.下载isl、gmp、mpc、mpfr

1)在“gcc-7.3.0”目录下,检查gcc的依赖包是否已下载和安装。

./contrib/download_prerequisites

2)(可选)根据需要,下载“gmp-6.1.0.tar.bz2”、“isl-0.16.1.tar.bz2”、“mpc-1.0.3.tar.gz”或“mpfr-3.1.4.tar.bz2”。

在步骤3.1中检查到存在上述依赖包未下载安装时,请根据需要执行相应的命令下载。

wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2

wget https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2

wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz

wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2

3)将安装包放置于“/home/gcc-7.3.0”目录下。

4.编译安装gcc

1)编译gcc。

“-j”参数可利用多核CPU加快编译速度,在本示例中,使用的是16核CPU,所以此处为“-j64”。

可通过下述命令查询CPU核数:

cat /proc/cpuinfo| grep "processor"| wc -l

cd /home/gcc-7.3.0

mkdir gcc-build-7.3.0

cd gcc-build-7.3.0

../configure --enable-checking=release --enable-language=c,c++ --disable-multilib --prefix=/usr

make -j64

2)执行安装。

make install

3)确定“libstdc++.so”是在“/usr/lib64”目录下。

cd /usr/lib64

ll |grep libstdc++.so

查询结果如图1-2所示。

图1-2 查询“libstdc++.so”所在位置

4)确定软连接存在,如图1-3所示。

ll |grep libstdc++.so.6.0.24

undefined

图1-3 确定软连接存在

5)查看版本,如图1-4所示。

gcc --version


图1-4 查看gcc版本

 

四、下载源码

在“https://dev.mysql.com/downloads/mysql/5.7.html#downloads”下载MySQL源码包,如图1-5所示,并上传至服务器。

须知

下载MySQL源码包时,如果版本为“5.x.x”,则必须为5.7.27以上,如果版本为“8.x.x”,则必须为8.0.17以上。否则需要安装补丁,补丁的安装请参见本文档“编译安装”中的描述。


说明:

由于系统为ARM架构,故需要下载源码编译安装

select Operating System 选项和Select OS Version选项必须与图片一致

选择mysql-boost-xxx版本

图1-5 下载MySQL源码

五、编译安装

1.进入下载的源码包所在的目录,解压缩源码包

解压后生成“mysql-5.7.x”文件夹,具体版本号以实际为准。

tar -zvxf mysql-boost-5.7.x.tar.gz

2.(可选)安装补丁

MySQL源码包版本为“5.x.x”,则必须为5.7.27以上,版本为“8.x.x”,则必须为8.0.17以上。否则需要安装补丁。

1)下载补丁文件,并放置到“mysql-5.7.x”路径下。

补丁下载路径:https://bugs.mysql.com/file.php?id=28180&bug_id=94699

2)进入目录并打补丁。

cd mysql-5.7.XX

patch -p1 < 0001-Bug-94699-Mysql-deadlock-and-bugcheck-on-aarch64.patch

3.在解压后的源码包路径“mysql-5.7.x”下,创建“cmake.sh

vim cmake.sh

文件内容如下,其中,“DWITH_BOOST”的取值请根据实际的boost路径修改。

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/mysql/mysql-5.7.32/boost/boost_1_59_0

说明:-DCMAKE_INSTALL_PREFIX=/usr/local/mysql     安装路径

-DMYSQL_DATADIR=/data/data       数据存储路径

-DWITH_BOOST=/mysql/mysql-5.7.32/boost/boost_1_59_0   根据实际的boost路径修改

4.给“cmake.sh”赋以权限并运行,等待运行完成

chmod +x cmake.sh

./cmake.sh

执行完后注意是否成功,成功后会生成Makefile文件

在执行./cmake.sh时会自动下载“boost_1_59_0.tar.gz” ,若出现超时报错的情况,可手工下载,并将文件放置到“cmake.sh”配置文件中“DWITH_BOOST”指定对应的路径下。

wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

若在预编译时出现依赖包不全的情况,可自行查阅资料安装依赖包,并重新预编译。重新预编译前,需要执行rm -f CMakeCache.txt删“CMakeCache.txt文件。”

5.在MySQL源码路径下运行make -j64,等待编译完成

“-j”参数可利用多核CPU加快编译速度,在本示例中,使用的是64核CPU,所以此处为“-j64”。

可通过下述命令查询CPU核数:

cat /proc/cpuinfo| grep "processor"| wc -l

make -j64

6.运行make install,等待安装过程结束

 

六、配置MySQL

1.创建“mysql”用户及用户组

查看系统中是否存在mysql用户和组:以下是存在

若不存在则创建:

groupadd mysql

useradd -g mysql mysql

2.修改“/usr/local/mysql”(安装路径)权限

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

3.进入安装路径,创建“data”、“log”、“run”文件夹,执行初始化配置脚本,生成初始的数据库和表

注意:执行下述命令后,会产生初始随机密码,需要记录。

cd /usr/local/mysql

mkdir -p /data/log /data/data /data/run

bin/mysqld --initialize --basedir=/usr/local/mysql --datadir=/data/data --user=mysql

4.创建“mysql.log”和“mysql.pid”文件,赋予“mysql”用户及用户组权限

其中,创建的“mysql.log”和“mysql.pid”文件是空文件,创建后保存退出即可。

vi /data/log/mysql.log

vi /data/run/mysql.pid

chown -R mysql:mysql /data

5.修改“my.cnf”中的文件路径

如图所示(注意:若/usr/local/mysql下有my.cnf则默认此文件为配置文件需要修改此路径下的my.cnf,若没有则为/etc/my.cnf)

vim /etc/my.cnf

注意:

skip-grant-tables 不要写(此为忘记密码时所用)

文件中配置的路径一定要与自己环境一致,否则启动会报错

运行MySQL

1.启动MySQL服务

cp support-files/mysql.server /etc/init.d/mysql

chkconfig mysql on              (设置开机自启)

service mysql start               (启动)

2.将以下内容添加进环境变量,并使之生效

a.编辑文件并添加内容。

vim ~/.bash_profile

添加的内容如下:

export PATH=/usr/local/mysql/bin:$PATH

添加环境变量后如图所示。

b.使环境变量生效。

source ~/.bash_profile

3.建立套接字软链接,接入MySQL环境

需要输入的密码为配置MySQL时产生的初始密码,请留意初始密码包含了特殊字符。

ln -s /data/data/mysql.sock /tmp/mysql.sock

mysql -uroot -p

如果忘记初始密码,可参见问题三:忘记MySQL的初始密码设置密码并重新连接。

 

常见问题

问题一:启动MySQL服务提示“ERROR! The server quit without updating PID file”

解决方法:

1)首先检查my.cnf文件中的所有路径是否正确

2)MySQL安装及“data/log/run”路径未赋予用户及用户组正确权限,请使用以下命令赋权。

chown -R mysql:mysql /usr/local/mysql

chown -R mysql:mysql /data

3)查看是否已有mysql进程在运行,kill掉后再尝试。

ps -ef | grep mysqld

kill -9 进程号

问题二:忘记MySQL的初始密码

问题描述:

在连接MySQL时,忘记初始密码。

解决方法:

修改在my.cnf配置文件中加上skip-grant-tables ,重启服务

输入mysql -uroot -p

显示输入密码,不输入直接按回车键进入mysql

回显内容如下,请按照说明操作:

[root@mysql]# mysql -uroot -p
Enter password:    //
直接按回车键
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.28 Source distribution
 
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
 
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> UPDATE mysql.user SET authentication_string=PASSWORD('password') where USER='root'; 
              //在此处更改密码,password设置为实际要配置的密码
mysql> flush privileges; 
       //刷新权限
mysql> exit
                               //退出MySQL
[root@ecs mysql]# mysql -uroot -p
Enter password:                      //此处输入设置的密码

 

撤销补丁:

patch -R pn < patch_file