在openEuler中安装MySQL
环境
远程工具:MobaXterm
操作系统:openEuler
MySQL:5.7.27
# 查看系统内核信息
[root@DC3-27-010 ~]# uname -a
Linux DC3-27-010 4.19.90-2003.4.0.0036.oe1.aarch64 #1 SMP Mon Mar 23 19:06:43 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux
[root@DC3-27-010 ~]# cat /proc/version
Linux version 4.19.90-2003.4.0.0036.oe1.aarch64 (abuild@obs-worker-003) (gcc version 7.3.0 (GCC)) #1 SMP Mon Mar 23 19:06:43 UTC 2020
# 查看系统版本信息
[root@DC3-27-010 ~]# cat /etc/os-release
NAME="openEuler"
VERSION="20.03 (LTS)"
ID="openEuler"
VERSION_ID="20.03"
PRETTY_NAME="openEuler 20.03 (LTS)"
ANSI_COLOR="0;31"

配置编译环境
关闭防火墙
# 停止防火墙
systemctl stop firewalld.service
# 关闭防火墙
systemctl disable firewalld.service
# 执行disable命令关闭防火墙的同时,也取消了开机自启动。
# 查看防火墙
systemctl status firewalld.service

关闭SELinux
# SElinux对服务的影响:SElinux是最全面的安全系统,若不关闭会对文件和服务有一定的限制
# 设置SELinux成为permissive模式,临时关闭SElinux。
setenforce 0
# 查看SELinux状态,确认为permissive模式。
getenforce

创建用户组和用户
# 服务器环境下,为了系统安全,通常会为进程分配单独的用户,以实现权限隔离。
# 创建的组和用户是操作系统层面的,不是数据库层面的。
# 创建mysql用户组。
groupadd mysql
# 创建mysql用户。
useradd -g mysql mysql
# 设置mysql用户密码。
passwd mysql
# 重复输入密码(根据实际需求设置密码)。

搭建数据盘
# 使用mkfs进行磁盘管理
# 查看磁盘。
ls /dev/nvme*
# 格式化磁盘。
mkfs.xfs -f /dev/nvme0n1
du -sh /dev/nvme0n1
# 创建数据目录。
mkdir /data
# 挂载磁盘到数据目录。
mount /dev/nvme0n1 /data/
df -h

创建数据目录
# 创建数据目录“/data”和进程所需的相关目录。
mkdir -p /data/mysql
cd /data/mysql
mkdir data tmp run log relaylog
# 修改数据目录“/data”的用户组和用户权限为mysql:mysql。
chown -R mysql:mysql /data
ll /

配置Yum源
配置外网Yum源
# 1.确认可以访问外网。
curl www.baidu.com
# 2.查看Yum源,如果存在外网Yum源(*.repo文件),则直接执行步骤6。
ls /etc/yum.repos.d/
# 3.备份Yum源。
cd /etc/yum.repos.d
mkdir bak
mv *.repo bak
# 4.配置外网Yum源。
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-AltArch-7.repo
# 5.查看Yum源。
ls /etc/yum.repos.d/
cat /etc/yum.repos.d/CentOS-Base.repo
# 6.使Yum源生效。
yum clean all
yum makecache
yum list



安装依赖包
# 安装依赖包。
yum -y install bison ncurses ncurses-devel libaio-devel openssl openssl-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel wget tar gcc gcc-c++ git rpcgen cmake libtirpc-devel openldap-devel openldap net-tools


安装依赖包报错时
yum -y install bison ncurses ncurses-devel libaio-devel openssl openssl-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel wget tar gcc gcc-c++ git rpcgen cmake libtirpc-devel openldap-devel openldap net-tools --nogpgcheck


升级CMake
# 若系统自带的CMake软件不能满足当前数据库版本的编译要求,则需要升级CMake版本至3.4.3或者以上,本文以升级到3.5.2版本为例。
# 下载CMake 3.5.2上传至服务器“/home”目录。
# CMake 3.5.2下载地址:https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz
# 若服务器可以访问外网,则可以直接使用wget命令下载。
cd /home
wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz --no-check-certificate

# 解压。
tar -zxvf cmake-3.5.2.tar.gz

# 进入解压后目录。
cd cmake-3.5.2
# 升级CMake。
./bootstrap


make -j 96
# -j 96参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。


make install


# 确认CMake的版本是否为3.5.2。
hash -r
/usr/local/bin/cmake --version

升级GCC
openEuler 20.03系统自带的GCC版本为7.3.0,CentOS 8.1系统自带的GCC版本为8.3.1,不需要升级。
# 下载GCC 7.3.0。
cd /home
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz --no-check-certificate
# 解压。
tar -xvf gcc-7.3.0.tar.gz
# 编译安装GCC。
cd /home/gcc-7.3.0
# 配置。
./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-bootstrap
# --prefix=PATH:指定GCC软件安装目录。默认路径“/usr”
# --mandir=PATH:指定GCC软件文档目录。默认路径“/usr/share/man”
# --infodir=PATH:指定GCC软件日志信息目录。默认路径“/usr/share/info”
# --enable-bootstrap:指定启用bootstrap方式安装。
# 如果配置报错"configure: error: no acceptable C compiler found in $PATH"
# 则执行以下命令。
yum -y reinstall gcc gcc-c++
# 编译GCC源码。
make -j 96
# 安装。
make -j 96 install
# 确认GCC的版本是否为7.3.0。
gcc -v

编译和安装
# 下载MySQL源码包
# 下载地址:https://downloads.mysql.com/archives/community/
# 若服务器可以访问网络,则通过wget命令直接下载MySQL源码。
cd /home
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.27.tar.gz --no-check-certificate

# 将mysql-boost-5.7.27.tar.gz上传至服务器“/home”目录下,并解压。
cd /home
tar -zxvf mysql-boost-5.7.27.tar.gz


# 进入“/home/mysql-5.7.27”源码文件夹,并建立一个编译目录。
cd /home/mysql-5.7.27
mkdir build

# 进入编译目录,配置MySQL。
cd build
cmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DWITH_BOOST=/home/mysql-5.7.27/boost/boost_1_59_0
# DBUILD_CONFIG:设置为mysql_release的含义是指CMake编译参数采用Mysql官方发布release版本时的编译参数。
# DCMAKE_INSTALL_PREFIX:用于指定软件的安装路径,本文安装路径为:/usr/local/mysql。文档中的安装路径只是参考,根据客户实际情况进行配置。
# DMYSQL_DATADIR:创建数据库时,数据文件存放的路径。本次安装路径为:/data/mysql/data。
# DWITH_BOOST:解压MySQL源码包后,解压文件中boost_1_59_0文件夹所在路径。例如,本文解压在“/home”目录下,则路径为:/home/mysql-5.7.27/boost/boost_1_59_0。


# 报错
# Package 'libtirpc', required by 'virtual:world', not found
yum install -y libtirpc-devel
# CMake Error at cmake/rpc.cmake:69 (MESSAGE):
# Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
# 删除build目录,重新创建
cd ..
rm -rf build
mkdir build
cd build
# 找到rpc.h文件,复制到/usr/include目录下
find / -name rpc.h
cp -a /home/mysql-5.7.27/rapid/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/windeps/sunrpc/rpc/ /usr/include/
# 再次执行
cmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DWITH_BOOST=/home/mysql-5.7.27/boost/boost_1_59_0


# 编译MySQL。
make -j 96


# 安装MySQL。
make -j 96 install


# 查看安装目录。
ls /usr/local/mysql/
# 查看数据库版本。
/usr/local/mysql/bin/mysql --version

运行
修改配置文件
# 编辑my.cnf文件。
rm -f /etc/my.cnf
echo -e "[mysqld_safe]\nlog-error=/data/mysql/log/mysql.log\npid-file=/data/mysql/run/mysqld.pid\n[mysqldump]\nquick\n[mysql]\nno-auto-rehash\n[client]\ndefault-character-set=utf8\n[mysqld]\nbasedir=/usr/local/mysql\nsocket=/data/mysql/run/mysql.sock\ntmpdir=/data/mysql/tmp\ndatadir=/data/mysql/data\ndefault_authentication_plugin=mysql_native_password\nport=3306\nuser=mysql\nlower_case_table_names=1\n" > /etc/my.cnf
# 其中文件路径(包括软件安装路径basedir、数据路径datadir等)根据实际情况修改。user=mysql是指操作系统层的用户,即创建用户组和用户中创建的用户。

# 确保my.cnf配置文件修改正确。
cat /etc/my.cnf
[root@DC3-27-010 build]# cat /etc/my.cnf
[mysqld_safe]
log-error=/data/mysql/log/mysql.log
pid-file=/data/mysql/run/mysqld.pid
[mysqldump]
quick
[mysql]
no-auto-rehash
[client]
default-character-set=utf8
[mysqld]
basedir=/usr/local/mysql
socket=/data/mysql/run/mysql.sock
tmpdir=/data/mysql/tmp
datadir=/data/mysql/data
default_authentication_plugin=mysql_native_password
port=3306
user=mysql

# 修改配置文件“/etc/my.cnf”的用户组和用户权限为mysql:mysql。
chown mysql:mysql /etc/my.cnf
ll /etc/my.cnf

MySQL加入service服务
chmod 777 /usr/local/mysql/support-files/mysql.server
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
# 修改“/etc/init.d/mysql”的用户组和用户权限为mysql:mysql
chown -R mysql:mysql /etc/init.d/mysql
ll /etc/init.d/mysql

配置环境变量
# 安装完成后,将MySQL二进制文件的路径添加到环境变量中。
echo export PATH=$PATH:/usr/local/mysql/bin >> /etc/profile
# 其中PATH中的“/usr/local/mysql/bin”路径,为MySQL软件安装目录下的bin文件的绝对路径,请根据实际情况修改。
# 使环境变量配置生效。
source /etc/profile
# 查看环境变量。
env

切换到mysql用户
su - mysql whoami

初始化数据库
mysqld --defaults-file=/etc/my.cnf --initialize
# 或者
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize
# 倒数第1行中有初始密码,请注意保存,登录mysql时会用到。

# 初始化完成后,查看数据目录下数据文件“/data/mysql/data”的用户组和用户权限为mysql:mysql(因为前面/etc/my.cnf文件中配置的操作系统用户是user=mysql)。
ll /data/mysql/data

启动数据库
启动数据库进程
service mysql start
# 或者
mysqld --defaults-file=/etc/my.cnf &
# 或者
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

查看数据库进程
ps -ef | grep mysql

查看数据库监测端口
netstat -anpt
netstat -anpt | grep mysql
netstat -anpt | grep 3306
# 如果netstat命令执行失败,则需要安装依赖包。
yum -y install net-tools

登录数据库
mysql -uroot -p -S /data/mysql/run/mysql.sock
# 或者
/usr/local/mysql/bin/mysql -uroot -p -S /data/mysql/run/mysql.sock

配置数据库帐号密码
# 文档中的用户和密码只是参考,根据客户实际情况进行配置
# 登录数据库以后,修改通过root用户登录数据库的密码
alter user 'root'@'localhost' identified by "root";
# 创建全域root用户(允许root从其他服务器访问)
create user 'root'@'%' identified by 'root';
# 进行授权
grant all privileges on *.* to 'root'@'%';
flush privileges;

退出数据库
# 执行\q或者exit退出数据库
exit

用修改后的密码重新登录数据库
mysql -uroot -p -S /data/mysql/run/mysql.sock 或者 /usr/local/mysql/bin/mysql -uroot -p -S /data/mysql/run/mysql.sock

关闭数据库
service mysql stop
# 或者
mysqladmin -uroot -proot shutdown -S /data/mysql/run/mysql.sock
# 或者
/usr/local/mysql/bin/mysqladmin -uroot -proot shutdown -S /data/mysql/run/mysql.sock
测试远程连接
使用Navicat工具测试远程连接

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




