前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux环境编译安装Mysql8.0

linux环境编译安装Mysql8.0

原创
作者头像
炒香菇的书呆子
发布2024-07-23 23:57:20
1400
发布2024-07-23 23:57:20
举报
文章被收录于专栏:香菇带你学Linux

0.写在安装前面

本文以BClinux for euler 21.10(redhat/centos可以参考)为例。在本地内网(Linux主机无法连接互联网,能连接公网最好,不能也没关系)编译安装。

经过多次尝试,多次重装主机发现,目前Bclinux for openeuler不能安装mysql8的最新版本(centos7.x,centos8.x也不行)。

所以本次安装的mysql8的版本为mysql8.0.20

安装前请先确认自己的操作系统版本.主机规格等是否符合要求。mysql的最小要求配置要求为2核2G(如果同时运行其他程序则需要更高配置),安装至少需要给mysql预留30G空间

我的配置如下

代码语言:shell
复制
# 系统信息如下
[root@localhost ~]# cat /etc/os-release 
NAME="BigCloud Enterprise Linux"
VERSION="21.10 (LTS-SP2)"
ID="bclinux"
VERSION_ID="21.10"
PRETTY_NAME="BigCloud Enterprise Linux For Euler 21.10 LTS"
ANSI_COLOR="0;31"
## 主机内存
[root@localhost ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:             15           0          14           0           0          14
Swap:             7           0           7

请检查系统是否安装了gcc5.3及以上版本,cmake3.75以上版本

安装前需要先删除mariadb相关内容,尤其要删除/etc/my.cnf文件,mysql启动时会默认加载该配置文件,导致在安装参数里的设置无效,会默认加载原系统自带的mariadb目录,引发一系列的错误

请仔细查看mysql的cmake预编译参数以及正确正确的mysql源码包

1. 准备操作

1.1 卸载已经安装的数据库

检查linux是否安装了mariadb和mysql数据库,新系统可能会自带mariadb数据库,mariadb数据库是MySQL的分支

当一个系统已经安装了MariaDB时,直接尝试安装MySQL可能会导致冲突

包依赖冲突:MariaDB和MySQL的某些文件可能具有相同的名称或路径,这会导致包管理器无法正确处理依赖关系。 服务冲突:两个数据库服务可能尝试监听相同的端口(通常是3306),这会导致服务启动失败或不稳定。 配置冲突:MariaDB和MySQL的配置文件可能位于相同的位置,比如/etc/my.cnf,这会使得配置混乱。

代码语言:shell
复制
# 检查是否安装了mariadb
yum list installed | grep mariadb*
# 卸载mariadb
yum remove mariadb*
# 检查是否安装了mysql
yum list installed | grep mysql*
# 卸载mysql
yum remove mysql*

执行过程如下

代码语言:shell
复制
[root@localhost ~]# yum list installed | grep mariadb*
mariadb-connector-c.x86_64                        3.0.6-7.oe1                                @anaconda
[root@localhost ~]# yum remove mariadb*
依赖关系解决。
=====================================================================================================
 Package                                             Architecture                           Version                                          Repository                                 Size
=====================================================================================================
移除:
 mariadb-connector-c                                 x86_64                                 3.0.6-7.oe1                                      @anaconda                                 414 k
移除依赖的软件包:
 rsyslog-relp                                        x86_64                                 8.2006.0-6.oe1                                   @anaconda                                  63 k
 rsyslog-help                                        noarch                                 8.2006.0-6.oe1                                   @anaconda                                 7.0 M

事务概要
=====================================================================================================
移除  9 软件包
将会释放空间:14 M
确定吗?[y/N]: Y
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                                                              1/1 
  运行脚本: rsyslog-relp-8.2006.0-6.oe1.x86_64                                                                                                                                           1/1 
  删除    : rsyslog-relp-8.2006.0-6.oe1.x86_64                                                                                                                                           1/9                                                                                             9/9 
已移除:
  libestr-0.1.11-1.oe1.x86_64        libfastjson-0.99.8-3.oe1.x86_64   libnet-1.2-1.oe1.x86_64              librelp-1.2.16-3.oe1.x86_64          mariadb-connector-c-3.0.6-7.oe1.x86_64  
  net-snmp-libs-1:5.9-3.oe1.x86_64   rsyslog-8.2006.0-6.oe1.x86_64     rsyslog-help-8.2006.0-6.oe1.noarch   rsyslog-relp-8.2006.0-6.oe1.x86_64  
完毕!
[root@localhost ~]# yum list installed | grep mysql*
[root@localhost ~]# yum remove mysql*
未找到匹配的参数: mysql*
没有软件包需要移除。
依赖关系解决。
无需任何处理。
完毕!

2. 配置yum源

注释:若Linux主机可以访问公网,则只需要配置好公网repo源即可,若无法连接公网,则需要配置好本地repo源。不同类型用户可能需求不一样。这里默认大家使用本地iso搭建镜像yum源。

其余情况请参考文章(已经足够详细)yum源配置,这一篇就够了!(包括本地,网络,本地共享yum源)

当服务器无法访问公网或者所需要依赖无法在公网获取,我们可以通过

使用挂载本地iso镜像来获取我们需要的rpm包和依赖

1.2.1本机单机yum源配置

此处以挂载BClinux for openeuler 21.10镜像为例,每个人操作系统型号不同,请选择自己需要的版本

切记选择来源安全可靠的镜像下载

将下载好后的镜像上传到/mnt

代码语言:bash
复制
[root@localhost mnt]# ls
BCLinux-for-Euler-21.10-everything-x86_64.iso

/mnt目录下创建文件夹 BClinux

代码语言:bash
复制
[root@localhost mnt]# mkdir BClinux

然后输入下面命令进行挂载

代码语言:shell
复制
mount -o loop /mnt/BCLinux-for-Euler-21.10-everything-x86_64.iso /mnt/BClinux[root@localhost mnt]# mount -o loop /mnt/BCLinux-for-Euler-21.10-everything-x86_64.iso /mnt/BClinux
mount: /mnt/BClinux: WARNING: source write-protected, mounted read-only.

1.2.2 repo文件配置

进入/etc/yum.repos.d/目录,

将之前的repo文件进行备份

代码语言:shell
复制
# 进入repo配置文件
[root@localhost mnt]# cd /etc/yum.repos.d/
# 将原来的repo文件进行备份
[root@localhost yum.repos.d]# mv * *.bak

然后创建新的repo源,输入以下命令

代码语言:shell
复制
# 复制下面的脚本输入
[root@localhost yum.repos.d]# echo "
> [local]
> name=bendiyum
> baseurl=file:///mnt/BClinux/
> enabled=1
> gpgcheck=0" > local.repo

## 执行
yum clean all
yum makecache
yum repolist

配置完成

代码语言:bash
复制
[root@localhost yum.repos.d]# yum makecache
bendiyum                                                            473 MB/s |  14 MB     00:00    
上次元数据过期检查:0:00:02 前,执行于 2024年03月28日 星期四 00时28分50秒。
元数据缓存已建立。
[root@localhost yum.repos.d]# yum repolist
仓库标识                                          仓库名称
local                                             bendiyum

尝试使用yum

代码语言:shell
复制
yum install -y tree

本地yum源配置完成

3. 安装依赖

3.1 依赖包安装

译安装MySQL 8.0通常需要一些依赖包,这些依赖包确保编译过程中所需的工具和库都可用。

安装的依赖最低版本要求

gccgcc-c++ 用于编译C和C++代码。‌ cmake 用于构建MySQL的源代码。‌ bison 用于解析MySQL的语法。‌ perl 和相关的Perl模块,‌如 perl-Module-Build, perl-Module-Pluggable, perl-Pod-Escapes, perl-Pod-Simple, perl-libs, perl-version,‌这些是Perl的开发和运行时依赖。‌ libaio 用于异步I/O操作。‌ ncurses-devel 用于支持字符界面用户交互。‌ opensslopenssl-devel 用于SSL/TLS支持。‌ zlib-devel 用于数据压缩和解压缩。‌ flex 用于生成扫描器程序。‌

代码语言:shell
复制
# 一键安装
[root@localhost ~]# yum -y install lrzsz curlcmake telnet wget tar vim unzip zip gcc gcc-c++  openssl-devel perl ncurses-devel bison-devel libaio libaio-devel libtirpc-devel rpcsvc-proto-devel rpcgen libtirpc-devel rpcgen

若提示没有某个安装包,可以在https://www.rpmfind.net/linux/网站查找对应的安装包下载下来手动安装

代码语言:shell
复制
# 执行过程
[root@localhost yum.repos.d]# yum -y install lrzsz curl telnet wget tar vim unzip zip gcc gcc-c++ gcc-devel openssl-devel perl ncurses-devel bison-devel libaio libaio-devel libtirpc-devel rpcsvc-proto-devel rpcgen libtirpc-devel rpcgen
上次元数据过期检查:0:00:43 前,执行于 2024年03月28日 星期四 00时30分48秒。
软件包 curl-7.71.1-7.oe1.x86_64 已安装。
软件包 wget-1.20.3-3.oe1.x86_64 已安装。
软件包 tar-2:1.32-2.oe1.x86_64 已安装。
软件包 vim-enhanced-2:8.2-1.oe1.x86_64 已安装。
软件包 unzip-6.0-45.oe1.x86_64 已安装。
软件包 zip-3.0-26.oe1.x86_64 已安装。
软件包 gcc-7.3.0-20210605.39.oe1.x86_64 已安装。
软件包 gcc-c++-7.3.0-20210605.39.oe1.x86_64 已安装。
未找到匹配的参数: gcc-devel
软件包 openssl-devel-1:1.1.1f-10.oe1.x86_64 已安装。
软件包 perl-4:5.28.3-6.oe1.x86_64 已安装。
软件包 libaio-0.3.112-1.oe1.x86_64 已安装。
错误:没有任何匹配: gcc-devel
[root@localhost yum.repos.d]# yum -y install lrzsz curl telnet wget tar vim unzip zip gcc gcc-c++  openssl-devel perl ncurses-devel bison-devel libaio libaio-devel libtirpc-devel rpcsvc-proto-devel rpcgen libtirpc-devel rpcgen
上次元数据过期检查:0:01:24 前,执行于 2024年03月28日 星期四 00时30分48秒。
软件包 curl-7.71.1-7.oe1.x86_64 已安装。
软件包 wget-1.20.3-3.oe1.x86_64 已安装。
软件包 tar-2:1.32-2.oe1.x86_64 已安装。
软件包 vim-enhanced-2:8.2-1.oe1.x86_64 已安装。
软件包 unzip-6.0-45.oe1.x86_64 已安装。
软件包 zip-3.0-26.oe1.x86_64 已安装。
软件包 gcc-7.3.0-20210605.39.oe1.x86_64 已安装。
软件包 gcc-c++-7.3.0-20210605.39.oe1.x86_64 已安装。
软件包 openssl-devel-1:1.1.1f-10.oe1.x86_64 已安装。
软件包 perl-4:5.28.3-6.oe1.x86_64 已安装。
软件包 libaio-0.3.112-1.oe1.x86_64 已安装。
依赖关系解决。
====================================================================================================
 Package                    Architecture   Version                         Repository          Size
====================================================================================================
安装:
 bison-devel                x86_64         3.6.4-2.oe1                     everything          37 k
 libaio-devel               x86_64         0.3.112-1.oe1                   baseos              10 k
 libtirpc-devel             x86_64         1.2.6-1.oe1                     everything         134 k
 lrzsz                      x86_64         0.12.20-46.oe1                  baseos              82 k
 ncurses-devel              x86_64         6.2-2.oe1                       update             644 k
 rpcgen                     x86_64         1.4.2-1.oe1                     everything          44 k
 rpcsvc-proto-devel         x86_64         1.4.2-1.oe1                     everything          29 k
 telnet                     x86_64         1:0.17-76.oe1                   baseos              64 k
升级:
 cpp                        x86_64         7.3.0-2020033101.49.oe1         update             8.1 M
 curl                       x86_64         7.71.1-31.oe1.bclinux           update             128 k
 gcc                        x86_64         7.3.0-2020033101.49.oe1         update              13 M
 gcc-c++                    x86_64         7.3.0-2020033101.49.oe1         update             8.8 M
 libcurl                    x86_64         7.71.1-31.oe1.bclinux           update             250 k
 libgomp                    x86_64         7.3.0-2020033101.49.oe1         update             131 k
 libstdc++                  x86_64         7.3.0-2020033101.49.oe1         update             403 k
 libstdc++-devel            x86_64         7.3.0-2020033101.49.oe1         update             1.1 M
 ncurses                    x86_64         6.2-2.oe1                       update             922 k
 ncurses-base               noarch         6.2-2.oe1                       update              53 k
 ncurses-libs               x86_64         6.2-2.oe1                       update             283 k
 openssl                    x86_64         1:1.1.1t-11.oe1.bclinux         extras             445 k
 openssl-devel              x86_64         1:1.1.1t-11.oe1.bclinux         extras             1.7 M
 openssl-libs               x86_64         1:1.1.1t-11.oe1.bclinux         extras             1.3 M
 unzip                      x86_64         6.0-46.oe1                      update             121 k
 vim-common                 x86_64         2:8.2-22.oe1                    update             6.8 M
 vim-enhanced               x86_64         2:8.2-22.oe1                    update             1.4 M
安装弱的依赖:
 openssl-pkcs11             x86_64         0.4.10-1.oe1                    baseos              58 k

事务概要
====================================================================================================
安装   9 软件包
升级  17 软件包

总下载:46 M

上述执行过程显示错误:没有任何匹配: gcc-devel

https://www.rpmfind.net/linux/查找gcc-devel对应版本安装包

若没有找到对应操作系统的rpm包。可以使用Centos/Ubuntu对应的包

下载后上传到本机,进行安装

代码语言:shell
复制
sudo yum install -y gcc-devel

3.2 gcc和cmake3安装

安装mysql8需要gcc5.3及以上版本,cmake3.5.1以上版本

如果升级gcc版本,可以查看本文:Linux环境下gcc编译安装

代码语言:shell
复制
# 检查gcc版本
[root@localhost ~]# gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/7.3.0/lto-wrapper
目标:x86_64-linux-gnu
线程模型:posix
gcc 版本 7.3.0 (GCC) 
# 如果gcc版本已经达到5.3以上,跳过下面的步骤,否则需要升级gcc
# 列出sgcc有哪些源可以用
[root@localhost ~]# yum list|grep gcc
gcc.x86_64                                              7.3.0-2020033101.49.oe1                            @update   
gcc-c++.x86_64                                          7.3.0-2020033101.49.oe1                            @update   
# 安装gcc7.3.0
yum install -y gcc
[root@localhost ~]# yum install -y gcc
上次元数据过期检查:2:41:09 前,执行于 2024年07月12日 星期五 13时36分41秒。
软件包 gcc-7.3.0-2020033101.49.oe1.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!

升级cmake

代码语言:shell
复制
# 检查cmake3版本
[root@localhost ~]# cmake3 --version
cmake version 3.16.5
CMake suite maintained and supported by Kitware (kitware.com/cmake).
# 如果cmake3版本已经达到3.75以上,跳过下面的步骤,否则需要升级cmake3
# 列出有哪些源可以用
[root@localhost ~]# yum list | grep cmake
cmake.x86_64                                            3.16.5-5.oe1                                       @baseos   
cmake-data.noarch                                       3.16.5-5.oe1                                       @baseos   
cmake-filesystem.x86_64                                 3.16.5-5.oe1                                       @baseos   
cmake-help.noarch                                       3.16.5-5.oe1                                       @baseos   
cmake-rpm-macros.noarch                                 3.16.5-5.oe1                                       @baseos   
cmake-gui.x86_64                                        3.16.5-5.oe1                                       everything

在上述查找本地yum源发现cmake最高版本为3.16,我们不需要下载cmake对应源码进行编译安装

如果需要编译安装cmake,可以参考本篇文章:Linux环境下cmake编译安装

4. 主机操作配置

4.1 关闭防火墙

代码语言:shell
复制
# 查看防火墙是状态
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2024-07-12 13:26:09 CST; 3h 15min ago
     Docs: man:firewalld(1)
 Main PID: 1137 (firewalld)
    Tasks: 2
   Memory: 36.7M
   CGroup: /system.slice/firewalld.service
           └─1137 /usr/bin/python3 /usr/sbin/firewalld --nofork --nopid
# 关闭防火墙
[root@localhost ~]# systemctl stop firewalld
#取消开机自启动
[root@localhost ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

4.2 关闭selinux

代码语言:shell
复制
[root@localhost ~]# sed -i 's/SELINUX\=enforcing/SELINUX\=disabled/g' /etc/selinux/config
## 重启后生效

5. 安装mysql

经过多次尝试,多次重装主机发现,目前Bclinux for openeuler不能安装mysql8的最新版本(centos7.x,centos8.x也不行)。

所以本次安装的mysql8的版本为mysql8.0.20

5.1 下载并解压mysql源码

mysql8.0下载地址:https://downloads.mysql.com/archives/community/

选择不登录下载

将源码上传到Linux服务器的/soft目录

在本地上传文件到Linux主机,可以通过使用lrzsz

关于如何上传本地文件到Linux主机,可以参考如下文章:关于如何上传本地文件到Linux主机

登录mysql用户

代码语言:shell
复制
# 进入/usr/local/src目录
[root@localhost ~]# cd /usr/local/src
# 上传mysql-8.0/mysql-boost-8.0.20.tar.gz 
# 若Linux主机可以连接公网或者通过下方方式直接在linux主机下载
[root@localhost src]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.0.20.tar.gz
# 下载完成后解压,并进入解压文件夹
[root@localhost src]# tar -xvzf mysql-boost-8.0.20.tar.gz
[root@localhost src]# cd mysql-8.0.20/
# 创建编译文件夹并进入
[root@localhost mysql-8.0.20]# mkdir build
[root@localhost mysql-8.0.20]# cd build/

tips:编译mysql-boost-8.0.20时,为什么要单独创建编译文件夹build?

答:编译过程中会产生大量的临时文件和对象文件。将这些文件与源代码分开,可以保持源代码目录的整洁,使得管理和维护变得更加容易。当你需要清理编译过程中产生的所有文件时,只需要删除这个单独的编译目录即可,而不会影响到源代码文件。

代码语言:bash
复制
# 构建编译
[root@localhost build]# cmake3 ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=0 -DWITH_BOOST=../boost

解释说明

cmake3 ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=0 -DWITH_BOOST=../boost

这段命令是用于配置和编译 MySQL 数据库的 CMake 命令。CMake 是一个跨平台的自动化构建系统,它使用配置文件(CMakeLists.txt)来生成标准的构建文件,如 Makefile 或项目文件,这些文件可以被用于编译器环境中。

下面是命令的详细解释:

cmake3 ../:这是告诉 CMake 使用当前目录的上一级目录中的 CMakeLists.txt 文件。cmake3 可能是特定系统上的 CMake 版本3的别名。 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql:设置安装目录为 /usr/local/mysql-DMYSQL_DATADIR=/data/mysql:设置 MySQL 数据库文件的存储目录为 /data/mysql-DSYSCONFDIR=/etc:设置配置文件目录为 /etc-DMYSQL_USER=mysql:设置运行 MySQL 服务的用户为 mysql-DWITH_MYISAM_STORAGE_ENGINE=1:启用 MyISAM 存储引擎。 -DWITH_INNOBASE_STORAGE_ENGINE=1:启用 InnoDB 存储引擎。 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock:设置 Unix socket 文件的路径为 /tmp/mysql.sock-DMYSQL_TCP_PORT=3306:设置 MySQL 服务监听的 TCP 端口为 3306。 -DEXTRA_CHARSETS=all:安装所有额外的字符集。 -DDEFAULT_CHARSET=utf8mb4:设置默认字符集为 utf8mb4-DDEFAULT_COLLATION=utf8mb4_general_ci:设置默认排序规则为 utf8mb4_general_ci-DWITH_DEBUG=0:禁用调试模式。 -DMYSQL_MAINTAINER_MODE=0:禁用维护者模式。 -DWITH_SYSTEMD=1:启用对 systemd 的支持。 -DDOWNLOAD_BOOST=0:不自动下载 Boost 库。 -DWITH_BOOST=../boost:指定 Boost 库的位置为当前目录的上一级目录中的 boost 文件夹。

代码语言:bash
复制
# 编译
[root@localhost build]# make -j$(nproc)
# 编译过程较长。大约10min-2h,因主机性能而异

Tips:编译指令使用-j$(nproc)的说明

在编译大型项目时,使用 make 命令的 -j 选项可以加快编译过程。-j 选项用于指定 make 同时运行的作业数。当你使用 -j$(nproc) 时,这里的 $(nproc) 是一个命令替换,它会被替换成当前系统的处理器核心数。

nproc 命令会输出当前可用的处理器核心数。因此,-j$(nproc) 实际上是在告诉 make 同时运行与你的处理器核心数相同数量的作业。

这样做的好处是可以充分利用多核处理器的并行处理能力,从而加快编译过程。如果你的系统有多个核心,使用 -j$(nproc) 可以让编译过程更加高效。

代码语言:bash
复制
# 安装Mysql
[root@localhost build]# sudo make install

安装完成

5.3 创建并使用mysql用户

首先要创建mysql用户并赋予sudo权限

代码语言:bash
复制
# 创建用户mysql并设置密码
[root@localhost bin]# useradd -m mysql
[root@localhost bin]# passwd mysql
更改用户 mysql 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
# 创建mysql数据存放文件夹并赋权给mysql
[root@localhost ~]# mkdir -p /data/mysql
[root@localhost ~]# chown -R mysql:mysql /data/mysql/
# 创建日志文件存放的目录和pid文件存放的目录,并赋权给mysql用户
[root@localhost ~]# mkdir -p /var/log/mysqld /var/run/mysqld
[root@localhost ~]# chown -R mysql:mysql /var/log/mysqld
[root@localhost ~]# chown -R mysql:mysql /var/run/mysqld

编辑/etc/my.cnf配置文件

代码语言:bash
复制
[root@localhost ~]# vi /etc/my.cnf
# 添加下面内容
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock

[mysqld_safe]
log-error=/var/log/mysqld/mysqld.log
pid-file=/var/run/mysqld/mysql.pid

赋予mysql用户sudo权限

代码语言:shell
复制
# 编辑/etc/sudoers文件
[root@localhost /]# vi /etc/sudoers
# 找到这一行 root    ALL=(ALL)       ALL
# 在下面添加一行
mysql    ALL=(ALL)       ALL
# 保存退出

测试是否已经给mysql配置sudo权限成功

代码语言:shell
复制
[root@localhost /]# su - mysql
[mysql@localhost ~]$ sudo yum install -y tree

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for mysql: 
Last metadata expiration check: 0:37:52 ago on Fri 12 Jul 2024 04:38:07 PM CST.
Package tree-1.8.0-1.oe1.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

配置环境变量,方便使用MySQL的命令

代码语言:bash
复制
[root@localhost ~]# vi /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
[root@localhost ~]# source /etc/profile
[root@localhost ~]# mysql --version  # 验证配置是否成功
mysql  Ver 8.0.20 for Linux on x86_64 (Source distribution)

6. 初始化Mysql

初始化数据库

代码语言:bash
复制
# 初始化数据库
[root@localhost ~]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql

初始化成功后会生成root账户的默认密码。将该密码复制并保存,因为后面需要使用该密码登录到MySQL中修改密码。

将MySQL生成的启动文件复制到/usr/lib/systemd/system/目录下

代码语言:bash
复制
[root@localhost ~]# cp /usr/local/src/mysql-8.0.20/build/scripts/mysqld.service /usr/lib/systemd/system/
[root@localhost ~]# chown 775 /usr/lib/systemd/system/mysqld.service

当MySQL的启动文件(如mysqld.service)被放置在/usr/lib/systemd/system/目录下时,systemd能够自动识别并管理这个服务。可以使用systemctl命令来启动、停止、重启、查看状态、设置开机自启等MySQL服务。

启动Mysql服务

代码语言:bash
复制
[root@localhost ~]# systemctl start mysqld

#查看3306端口是否已正常监听:
[root@localhost mysql]# netstat -lntp |grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      266278/mysqld       
tcp6       0      0 :::33060                :::*                    LISTEN      266278/mysqld  

使用默认密码登录MySQL,并重置密码及开放远程登录

代码语言:bash
复制
[root@localhost mysql]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.20
Copyright (c) 2000, 2020, 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> 
# 修改初始密码
mysql>  ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypasswd'; 
Query OK, 0 rows affected (0.00 sec)
# 允许远程登录
mysql> use mysql;
Database changed
mysql> update user set host ='%' where user='%';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0
#  刷新修改
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
# 退出mysql
mysql>exit
代码语言:bash
复制
# 设置mysql开机自启动
[root@localhost mysql]# systemctl enable mysqld
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.

MySQL源码编译安装已经配置完毕即可使用。

在本地Windows验证远程登录并写入数据

代码语言:sql
复制
USE mysql;
CREATE TABLE xianggu (  
    id INT PRIMARY KEY,  
    NAME VARCHAR(100),  
    age INT,  
    gender VARCHAR(10)  
);

INSERT INTO xianggu (id, NAME, age, gender) VALUES (1, '张三', 20, '男');  
INSERT INTO xianggu (id, NAME, age, gender) VALUES (2, '李四', 25, '女');  
INSERT INTO xianggu (id, NAME, age, gender) VALUES (3, '王五', 30, '男');

在Linux主机查看数据变更

代码语言:sql
复制
mysql> use mysql;
Database changed
mysql> select * from xianggu;
+----+--------+------+--------+
| id | name   | age  | gender |
+----+--------+------+--------+
|  1 | 张三   |   20 | 男     |
|  2 | 李四   |   25 | 女     |
|  3 | 王五   |   30 | 男     |
+----+--------+------+--------+
3 rows in set (0.00 sec)

7. 报错解决

7.1 预编译过程报错

CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:114 (MESSAGE):

Could not find rpcgen

Call Stack (most recent call first):

plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)

可能是没有安装成功某个依赖,手动安装即可

可能是没有安装成功某个依赖,手动安装即可

7.2 make: Makefile:166: all Error 2

代码语言:shell
复制
[ 21%] Built target ut0frags-t
[ 21%] Building CXX object router/src/harness/src/CMakeFiles/harness-archive.dir/config_option.cc.o
In file included from /soft/mysql-8.0.38/router/src/harness/src/config_option.cc:26:0:
/soft/mysql-8.0.38/router/src/harness/src/../include/mysql/harness/config_option.h:29:10: fatal error: charconv: No such file or directory
 #include <charconv>  // from_chars
          ^~~~~~~~~~
compilation terminated.
make[2]: *** [router/src/harness/src/CMakeFiles/harness-archive.dir/build.make:139: router/src/harness/src/CMakeFiles/harness-archive.dir/config_option.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:45528: router/src/harness/src/CMakeFiles/harness-archive.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 21%] Building CXX object router/src/connection_pool/src/CMakeFiles/connection_pool.dir/connection_pool_component.cc.o
[ 21%] Building CXX object libbinlogstandalone/src/CMakeFiles/binlogstandalone_static.dir/__/__/libbinlogevents/src/uuid.cpp.o
[ 21%] Linking CXX static library ../lib/libbinlogstandalone.a
[ 21%] Built target binlogstandalone_static
[ 21%] Linking CXX shared library ../../../../library_output_directory/libmysqlrouter_connection_pool.so
[ 21%] Built target connection_pool
[ 21%] Linking CXX executable ../../../../runtime_output_directory/routertest_mysql_protocol_classic_protocol_message
[ 21%] Built target routertest_mysql_protocol_classic_protocol_message
make: *** [Makefile:166: all] Error 2

编译器可能不支持 C++17或者没有正确配置以使用 C++17 标准

解决方法:

代码语言:shell
复制
## 在编译文件目录中执行
cmake -S . -B build -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON 

清理之前的编译后重新编译

代码语言:shell
复制
make clean 

我出现这个报错时安装的是mysql8.0.38.尝试很多次重装系统。最终选择安装Mysql8.0.20版本

7. 参考链接

  1. CentOS安装MySQL8
  2. MySQL——源码安装教程

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.写在安装前面
  • 1. 准备操作
    • 1.1 卸载已经安装的数据库
    • 2. 配置yum源
      • 1.2.1本机单机yum源配置
        • 1.2.2 repo文件配置
        • 3. 安装依赖
          • 3.1 依赖包安装
            • 3.2 gcc和cmake3安装
            • 4. 主机操作配置
              • 4.1 关闭防火墙
                • 4.2 关闭selinux
                • 5. 安装mysql
                  • 5.1 下载并解压mysql源码
                    • 5.3 创建并使用mysql用户
                    • 6. 初始化Mysql
                    • 7. 报错解决
                      • 7.1 预编译过程报错
                        • 7.2 make: Makefile:166: all Error 2
                        • 7. 参考链接
                        相关产品与服务
                        云数据库 MySQL
                        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档