百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

MySql 5.7.x 源码编译安装 100%有效无坑

bigegpt 2024-10-09 08:05 5 浏览

安装环境

安装环境Centos 7.9

内核版本Linux 3.10.0-1160.e17.x86_64 x86_64

数据库版本信息mysql5.7.34

磁盘推荐:硬盘至少大于20G,内存至少3G,SWAP3G(不然编译时可能出错)

一、安装准备

1.1卸载当前系统默认数据库

rpm -qa | grep -i mariadb        (系统默认数据库为mariadb)

rpm -e --nodeps mariadb-libs-5.5.35-3.el7.x86_64 
rpm -e --nodeps mariadb-5.5.35-3.el7.x86_64

rpm -qa | grep -i mysql              (列出mysql  rpm包)

rpm -e --nodeps perl-DBD-MySQL-4.023-5.el7.x86_64
rpm -e --nodeps qt-mysql-4.8.5-8.el7.x86_64
rpm -e --nodeps akonadi-mysql-1.9.2-4.el7.x86_64

检查无相关数据库版本忽略上述操作

1.2下载相关依赖

yum -y install gcc gcc-devel gcc-c++ gcc-c++-devel autoconf* automake* zlib* libxml*ncurses-devel ncurses libgcrypt* libtool* cmake openssl openssl-devel bisonbison-devel perl-Data-Dumper boost boost-doc boost-devel
yum install ncurses-devel (字符终端处理库)
yum install bison   (linux 下c/c++语法分析器)

1.3下载源码包文件到指定目录

官网地址(https://downloads.mysql.com/archives/community/

下载文件到本地,上载到服务器指定文件目录(无外网情况)

命令下载:wget https://downloads.mysql.com/archives/community/数据库版本(可访问外网状态)

1.4创建mysql用户及数据存放目录

groupadd mysql 
useradd -g mysql -s /sbin/nologin mysql
mkdir -pv /usr/local/mysql/conf
chown -R mysql:mysql /usr/local/mysql
mkdir -pv /data/mysql_data
chown -R mysql:mysql /data/mysql_data

1.5解压、编译安装

解压文件到指定目录
tar -zxvf mysql-boost-5.7.34.tar.gz -C /usr/local/mysql/ 
 cd /usr/local/mysql/mysql-5.7.34/
编译安装
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql_data \
-DSYSCONFDIR=/usr/local/mysql/conf \
-DMYSQL_UNIX_ADDR=/data/mysql_data/mysql.sock \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DMYSQL_USER=mysql \
-DWITH_SYSTEMD=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_DEBUG=0 \
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_SSL:STRING=system \
-DWITH_ZLIB:STRING=bundled \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=./boost
如在编译过程中出现错误信息需删除当前目录下cMakCache.txt文件,解决错误信息后重新编译
常见编译参数说明:
-DCMAKE_INSTALL_PREFIX=dir_name 基础的文件夹,对应mysqld的--basedir参数 
-DINSTALL_BINDIR=dir_name bin目录位置
 -DINSTALL_DOCDIR=dir_name 文档目录位置
-DINSTALL_DOCREADMEDIR=dir_name Readme文件位置 
-DINSTALL_INCLUDEDIR=dir_name Include目录位置 
-DINSTALL_LAYOUT=name 布局选项,包括Standalone、RPM、SRV4、DEB -DMYSQL_DATADIR=dir_name 数据存放目录 
-DSYSCONFDIR=dir_name 默认配置my.cnf目录

如编译成功最后显示信息如下

编译安装
make -j$(cat /proc/cpuinfo| grep "processor"| wc -l) && make install
-j参数后数字为CPU核数,可以通过使用cat /proc/ cpuinfo | grep processor | wc –l 进行查看使用该命令可提高编译速度
哎!试了上述编译安装方法,总是出现错误建议直接编译安装
make && make install 

编译过程中会显示编译进度如下(编译时间较长:非上班族可以开把游戏)

编译安装完成显示如下:

查看编译安装成功后文件目录显示如下

cd ../   回到上级目录
pwd
/usr/local/mysql/

配置mysql为Systemd启动文件

cd /mysql-5.7.34/
cp /scripts/mysqld.service /usr/lib/systemd/system
cat /usr/lib/systemd/system/mysqld.service
查看配置文件信息无需改动

添加环境变量

cat > /etc/profile.d/mysql.sh << EOF 
PATH=/usr/local/mysql/bin:$PATH
export PATH
EOF
source /etc/profile 使环境变量生效

二、初始化 无密码 mysql数据库

参数说明,之前版本在/usr/local/mysql/script目录下的初始化程序mysql_install_db本版本已移除,转而使用mysqld替代。

-–initialize 会生成一个随机密码(保存在~/.mysql_secret),而 -–initialize-insecure 不会生成密码。

-–datadir目标目录下不能有数据文件。

初始化命令
rm -fr /data/mysql_data/*       (必须保证当前目录是空的)
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data
应该会有警告信息,忽略它

1.启动配置

systemctl enable mysqld.service     #配置mysql服务开启自启
systemctl daemon-reload               #重新加载服务配置
systemctl start mysqld.service        #启动mysql
systemctl status mysqld.service    #查看mysql状态

查看当前后台进程

ps -ef|grep mysql

注:如上述启动过程中错误未成功启动,也可通过日志查看相关错误信息/var/log/mysqld.log

测试连接

cd /usr/local/mysql/bin/
./mysql -hlocal -uroot -p
提示输入密码直接键入 Enter 回车

更改用户密码

./mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456pijnhgfsffsa';    #修改密码
mysql> FLUSH PRIVILEGES;  #刷新权限
mysql> exit;         #退出重新登录
注:语句结束分号千万不要漏掉了

开放root 远程连接权限

(MySql-Server出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问)
mysql -uroot -p         #登录数据库,输入上述修改后的密码
use mysql;              #进入mysql数据库 
select host,user from user;     #查看当前用户权限
如下图可以看出只能本机localhost访问
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456pijnhgfsffsa' WITH GRANT OPTION;       #开放root 远程权限
mysql> FLUSH PRIVILEGES;
mysql> exit;
执行完,重新登录数据库运行上述查看用户权限SQL语句可查看修改后权限
GRANT:赋权命令
ALL PRIVILEGES:当前用户的所有权限
ON:介词
*.*:当前用户对所有数据库和表的相应操作权限
TO:介词
‘root’@’%’:权限赋给root用户,所有ip都能连接
IDENTIFIED BY ‘123456pijnhgfsffsa’:连接时输入密码,密码为123456pijnhgfsffsa
WITH GRANT OPTION:允许级联赋权

三、卸载

#停用服务
systemctl stop mysqld.service
#先执行此,才能禁用服务
systemctl daemon-reload
在开机时禁用一个服务
systemctl disable mysqld.service
#删除环境变量文件
rm /etc/profile.d/mysql.sh
#删除systemd启动文件mysqld.service
rm /usr/lib/systemd/system/mysqld.service
#删除安装目录
rm -rf /usr/local/mysql
#删除数据文件(可选)
rm -rf /data/mysql_data/*
盛年不重来,一日难再晨。及时当勉励,岁月不待人。

此情此景必须吟诗一首:盛年不重来,一日难再晨。及时当勉励,岁月不待人。加油打工人!

相关推荐

最全的MySQL总结,助你向阿里“开炮”(面试题+笔记+思维图)

前言作为一名编程人员,对MySQL一定不会陌生,尤其是互联网行业,对MySQL的使用是比较多的。对于求职者来说,MySQL又是面试中一定会问到的重点,很多人拥有大厂梦,却因为MySQL败下阵来。实际上...

Redis数据库从入门到精通(redis数据库设计)

目录一、常见的非关系型数据库NOSQL分类二、了解Redis三、Redis的单节点安装教程四、Redis的常用命令1、Help帮助命令2、SET命令3、过期命令4、查找键命令5、操作键命令6、GET命...

netcore 急速接入第三方登录,不看后悔

新年新气象,趁着新年的喜庆,肝了十来天,终于发了第一版,希望大家喜欢。如果有不喜欢看文字的童鞋,可以直接看下面的地址体验一下:https://oauthlogin.net/前言此次带来得这个小项目是...

精选 30 个 C++ 面试题(含解析)(c++面试题和答案汇总)

大家好,我是柠檬哥,专注编程知识分享。欢迎关注@程序员柠檬橙,编程路上不迷路,私信发送以下关键字获取编程资源:发送1024打包下载10个G编程资源学习资料发送001获取阿里大神LeetCode...

Oracle 12c系列(一)|多租户容器数据库

作者杨禹航出品沃趣技术Oracle12.1发布至今已有多年,但国内Oracle12C的用户并不多,随着12.2在去年的发布,选择安装Oracle12c的客户量明显增加,在接下来的几年中,Or...

flutter系列之:UI layout简介(flutter-ui-nice)

简介对于一个前端框架来说,除了各个组件之外,最重要的就是将这些组件进行连接的布局了。布局的英文名叫做layout,就是用来描述如何将组件进行摆放的一个约束。在flutter中,基本上所有的对象都是wi...

Flutter 分页功能表格控件(flutter 列表)

老孟导读:前2天有读者问到是否有带分页功能的表格控件,今天分页功能的表格控件详细解析来来。PaginatedDataTablePaginatedDataTable是一个带分页功能的DataTable,...

Flutter | 使用BottomNavigationBar快速构建底部导航

平时我们在使用app时经常会看到底部导航栏,而在flutter中它的实现也较为简单.需要用到的组件:BottomNavigationBar导航栏的主体BottomNavigationBarI...

Android中的数据库和本地存储在Flutter中是怎样实现的

如何使用SharedPreferences?在Android中,你可以使用SharedPreferencesAPI来存储少量的键值对。在Flutter中,使用Shared_Pref...

Flet,一个Flutter应用的实用Python库!

▼Flet:用Python轻松构建跨平台应用!在纷繁复杂的Python框架中,Flet宛如一缕清风,为开发者带来极致的跨平台应用开发体验。它用最简单的Python代码,帮你实现移动端、桌面端...

flutter系列之:做一个图像滤镜(flutter photo)

简介很多时候,我们需要一些特效功能,比如给图片做个滤镜什么的,如果是h5页面,那么我们可以很容易的通过css滤镜来实现这个功能。那么如果在flutter中,如果要实现这样的滤镜功能应该怎么处理呢?一起...

flutter软件开发笔记20-flutter web开发

flutterweb开发优势比较多,采用统一的语言,就能开发不同类型的软件,在web开发中,特别是后台式软件中,相比传统的html5开发,更高效,有点像c++编程的方式,把web设计出来了。一...

Flutter实战-请求封装(五)之设置抓包Proxy

用了两年的flutter,有了一些心得,不虚头巴脑,只求实战有用,以供学习或使用flutter的小伙伴参考,学习尚浅,如有不正确的地方还望各路大神指正,以免误人子弟,在此拜谢~(原创不易,转发请标注来...

为什么不在 Flutter 中使用全局变量来管理状态

我相信没有人用全局变量来管理Flutter应用程序的状态。毫无疑问,我们的Flutter应用程序需要状态管理包或Flutter的基本小部件(例如InheritedWidget或St...

Flutter 攻略(Dart基本数据类型,变量 整理 2)

代码运行从main方法开始voidmain(){print("hellodart");}变量与常量var声明变量未初始化变量为nullvarc;//未初始化print(c)...