鲲鹏社区 软件 MySQL_5.7
MySQL 5.7
关系型数据库
开发语言:C/C++

软件介绍

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


编译环境和要求

本文以MySQL 5.7版本进行描述。

1.      准备云服务器

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

表1-1 云服务器信息

名称

说明

规格

16vCPUs | 64GB | kc1.4xlarge.4

镜像

CentOS 7.6 64bit with ARMCentOS Linux release 7.6.1810

公网IP

申请弹性公网IP地址,带宽为5 Mbit/s

私有IP

192.168.0.166

系统盘

40GB

2.      预置条件

华为云使用的镜像中已经具备本前置条件。

l   基于新安装的CentOS Linux release 7.6.1810系统环境进行描述。

l   系统安装时选择了Development Tools套件,如所示。

选择Development Tools套件


下载MySQL源码

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

下载MySQL源码


下载并安装依赖包

1.      步骤一:安装依赖包

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

yum install bison* ncurses*

yum install -y bzip2 wget

2.      步骤二:升级gcc版本至5.3或者以上

本文档以7.3版本为例。

安装gcc7.3

a.         下载gcc7.3

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

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

cd /home

tar -xvf gcc-7.3.0.tar.gz

3.      下载islgmpmpcmpfr

a.         下载gmp 6.1.0isl 0.16.1mpc 1.0.3mpfr 3.1.4

下载地址为:https://gcc.gnu.org/pub/gcc/infrastructure/

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

c.         在“gcc-7.3.0”目录下,检查gcc的依赖包是否已下载和安装,如果没有,会自动下载和安装。

./contrib/download_prerequisites

4.      编译安装gcc

a.         编译gcc

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

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 -j16

b.         执行安装。

make install

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

cd /usr/lib64

ll |grep libstdc++.so

查询结果如所示。

查询“libstdc++.so”所在位置

d.         确定软连接存在,如图所示。

ll |grep libstdc++.so.6.0.24

确定软连接存在


e.         查看版本,如图所示。

gcc -v

查看gcc版本


编译安装

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

解压后生成“mysql-5.7.22”文件夹。

tar -zvxf mysql-boost-5.7.22.tar.gz

2.      下载补丁文件,并放置到“mysql-5.7.22”路径下。

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

3.      进入目录并打补丁。

cd mysql-5.7.22

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

4.      在解压后的源码包路径“mysql-5.7.22”下,创建“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.22/boost/boost_1_59_0

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

chmod +x cmake.sh

./cmake.sh

6.      MySQL源码路径下运行make -j16,等待编译完成。

make -j16

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


配置MySQL

1.      创建“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”中的文件路径,如图所示。

vim /etc/my.cnf

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


运行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环境。

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

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

mysql -uroot p

4.      修改密码。

下述命令中的“mypassword”需要根据实际修改成要配置的密码。

SET PASSWORD = PASSWORD('mypassword');

UPDATE mysql.user SET authentication_string =PASSWORD('123456') WHERE User='mysql';

GRANT ALL PRIVILEGES ON *.* TO mysql@localhost IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO mysql@"%" IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

5.      使用新的密码重新登录。

下述命令中的“mypassword”需要根据实际修改成要配置的密码。

mysql -uroot pmypassword


常见问题

问题一:启动MySQL服务时提示log文件不存在

问题描述:

启动MySQL时,提示如图所示。

提示log文件不存在

解决方法:

在“/etc/my.cnf”下配置正确的log路径,如图所示,并赋予“mysql”用户及用户组权限。

配置log路径

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

问题描述:

启动MySQL时,提示如图所示。

提示更新错误

解决方法:

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

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

chown -R mysql:mysql /data

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

ps -ef | grep mysqld

kill -9 进程号

软件下载

源码下载立即下载