首页 > 数据库 >MySQL源码编译安装

MySQL源码编译安装

时间:2022-11-30 18:45:41浏览次数:59  
标签:bin -- MySQL 编译 源码 usr mysql local

MySQL源码编译安装

Linux环境:CentOS 7.6

MySQL版本:MySQL 5.7.37

安装路径:/usr/local/mysql

1. 创建相关目录

# 创建用户
useradd -s /sbin/nologin mysql
# 创建安装目录并进入
cd /usr/local
mkdir mysql
cd mysql
# 创建数据存放目录
mkdir data

2. 下载依赖库

yum -y install initscripts wget libaio ncurses ncurses-devel bison gcc gcc-c++ openssl openssl-devel

3. 升级gcc和g++

yum install -y centos-release-scl-rh 
yum install -y centos-release-scl 
# 安装gcc7 
yum install devtoolset-7-gcc.x86_64
yum install devtoolset-7-gcc-c++.x86_64
# 启用
scl enable devtoolset-7 bash
# 查看版本
gcc --version
g++ --version

# 防止失效方法1:修改软连接(推荐)
mv /usr/bin/gcc /usr/bin/gcc4.8.5
ln -s  /opt/rh/devtoolset-7/root/usr/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++4.8.5
ln -s /opt/rh/devtoolset-7/root/usr/bin/g++ /usr/bin/g++
mv /usr/bin/cc /usr/bin/cc4.8.5
ln -s /opt/rh/devtoolset-7/root/usr/bin/cc /usr/bin/cc
mv /usr/bin/c++ /usr/bin/c++4.8.5
ln -s /opt/rh/devtoolset-7/root/usr/bin/c++ /usr/bin/c++

# 防止失效方法2:修改环境变量
echo "source /opt/rh/devtoolset-7/enable" >>/etc/profile

4. 安装最新版cmake

# 下载
wget -c https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2.tar.gz
# 解压
tar zxvf cmake-3.20.2.tar.gz
# 进入解压目录
cd cmake-3.20.2
# 构建
./bootstrap
# 编译
gmake
# 安装
gmake install
# 链接 目的是添加到环境变量中
ln -s /usr/local/bin/cmake /usr/bin/cmake

5. 下载MySQL源码并解压

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.37.tar.gz

tar -zxvf mysql-boost-5.7.37.tar.gz

6. 构建、编译、安装

cd /usr/local/mysql/mysql-5.7.37

cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost
make && make install

7. 更改配置文件

7.1. 打开配置文件

vim /etc/my.cnf

7.2. 写入如下内容

[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
pid-file = /usr/local/mysql/data/mysql.pid
socket = /tmp/mysql.sock

log_error = /usr/local/mysql/data/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /usr/local/mysql/data/mysql-slow.log

8. 修改用户权限

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

9. 初始化MySQL

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

10. 复制相关文件

cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysql

11. 配置环境变量

11.1. 打开环境变量文件

vim /etc/profile

11.2. 修改PATH属性,并保存退出

export MYSQL_HOME=/usr/local/mysql/
export PATH=${MYSQL_HOME}/bin:${MYSQL_HOME}/lib:$PATH

11.3. 使环境变量生效

source /etc/profile

12. 在vscode中进行构建

按下Ctrl + ,,选择workspace,在左侧选择extension,再选中Cmake,找到Configuration Args,添加以下参数:

-DDOWNLOAD_BOOST=1
-DWITH_BOOST=/usr/local/mysql/mysql-5.7.37/boost/boost_1_59_0/

随后在vscode底栏中点击build即可构建

13. 调试配置

.vscode文件夹中创建launch.json文件,内容如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "MySQL-debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "/usr/local/mysql/bin/mysqld",
            "args": ["--user=mysql --datadir=/usr/local/mysql/data"],
            "stopAtEntry": true,
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "gdb",
            "miDebuggerArgs": "gdb",
            "linux": {
                "MIMode": "gdb",
                "miDebuggerPath": "/usr/bin/gdb"
            },
            "logging": {
                "moduleLoad": false,
                "engineLogging": false,
                "trace": false
            },
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "cwd": "${workspaceFolder}",
        }
    ]
}

14. 虚拟机开放端口

14.1. 查看3306端口状态

firewall-cmd --zone=public --query-port=3306/tcp

如果输出no,则需要开放端口

14.2. 开放端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent 

14.3. 防火墙重载

firewall-cmd --reload

15. 修改连接权限

use mysql;
update user set Host='%' where User='root';
flush privileges;

标签:bin,--,MySQL,编译,源码,usr,mysql,local
From: https://www.cnblogs.com/AnkleBreaker-ZHX/p/16939405.html

相关文章

  • MySql存储过程
    定义存储过程格式:createprocedure存储过程名(参数)begin...select要返回的内容;end;1定义一个简单的存储过程createproceduretest()begin select*fr......
  • MySQL ERROR 1227 (42000)错误处理
    在还原数据库的时候,遇到以下报错:ERROR1227(42000)atline18:Accessdenied;youneed(atleastoneof)theSUPER,SYSTEM_VARIABLES_ADMINorSESSION_VARIABLES......
  • MySQL高级SQL语句(二)
    表连接查询MYSQL数据库中的三种连接innerjoin(内连接):只返回两个表中联结字段相等的行(有交集的值)leftjoin(左连接):返回包括左表中的所有记录和右表中联结字段相等的......
  • MySQL数据库--存储过程
    简介MysQL数据库存储过程是一组为了完成特定功能的SQL语句的集合 存储过程这个功能是从5.0版本才开始支持的,它可以加快数据库的处理速度,增强数据库在实际应用中的灵活......
  • 计算机视觉的常用测试数据集和源码
    以下是computervision:algorithmandapplication计算机视觉算法与应用这本书中附录里的关于计算机视觉的一些测试数据集和源码站点,整理了下,加了点中文注解。ComputerVision......
  • MYSQL高级语句二
    一、VIEW(视图)1、概念可以被当作是虚拟表或存储查询视图跟表格的不同是,表格中有实际储存资料,而视图是建立在表格之上的一个架构,它本身并不实际储存资料。临时表在用户......
  • datax-web同步mysql数据中文乱码问题
    在同步数据的时候中文乱码首先看看俩数据库字符集是否相同是不是utf8如果确认没有问题之后打开刚才的任务在连接mysql的后面加上 ?useUnicode=true&characterEncoding=u......
  • 搞清楚Spring事件机制后:Spring的源码看起来简单多了
    Spring框架已然是Javaeee开发领域的霸主,无论是使用SpringBoot还是SpringCloud,都离不开Spring框架。作为Java开发者,无论是面试求职还是日常开发,就必须得熟练掌握、运用Sprin......
  • mysql设置了时区,但时间还是utc时间
    最近项目部署后,使用时发现某个时间字段保存的是utc时间,分享一下一步步排除的步骤。第一步前端:前端用的是vue和elementPlus的组件,使用了date-picker这个组件,发现提......
  • php版学生成绩管理系统源码(文末有下载方式)
    大家好, 我是程序猿零壹。给大家分享一款学生成绩管理系统,该系统使用php+mysql开发,是一款用于管理课程信息、老师信息、学生信息及成绩的系统,包含最基础的增删改查,可以作......