Linux编译安装Mysql笔记

1.Mysql介绍

MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),它基于SQL(Structured Query Language)进行操作。MySQL是由瑞典MySQL AB公司开发的,后来被Sun Microsystems收购,最终成为Oracle公司的产品。由于其性能高、可靠性好、易使用和灵活性强等特点,MySQL在Web应用中尤为流行。

以下是MySQL的一些关键特性:

  1. 开源:MySQL的社区版是一个开源免费的数据库,适合个人和企业使用。

  2. 关系型数据库:MySQL使用表格来存储数据,表之间可以通过关联键建立关系。

  3. 多用户多线程:支持多用户并发访问,提供高性能的数据处理能力。

  4. 跨平台:可以在多种操作系统上运行,包括Linux、Windows、macOS等。

  5. 存储引擎:支持多种存储引擎,如InnoDB(支持事务处理和外键)、MyISAM(提供高速存储和检索)等。

  6. SQL语言:使用标准的SQL语言进行数据查询和管理。

  7. 安全性:提供安全功能,如用户认证、访问控制、加密连接等。

  8. 复制:支持数据复制,可以配置主从复制来提高数据的可用性和冗余。

  9. 分区:支持数据分区,可以提高大表的管理效率和查询性能。

  10. 触发器、存储过程和函数:支持复杂的数据操作和自动化任务。

  11. 持久性和崩溃恢复:具有事务日志和崩溃恢复功能,确保数据的持久性和一致性。

  12. 性能优化:提供查询缓存、索引、优化器等性能优化工具。

  13. 易于管理:提供命令行工具和图形用户界面(如phpMyAdmin)来管理数据库。

MySQL适用于各种应用场景,从小型应用到大型企业级应用,都可以见到MySQL的身影。它的高可用性、可扩展性和灵活性使其成为许多开发者和数据库管理员的首选数据库之一。

2.Linux编译安装mysql的难点

在Linux上编译安装MySQL可能会遇到一些难点和常见问题,以下是一些主要的挑战和相应的解决方案:

  • 依赖问题:编译MySQL需要安装一系列的依赖包,如cmakencurses-developenssl-devellibarchivegccg++等。缺少这些依赖会导致编译失败。

  • 编译选项:使用cmake进行编译配置时,需要正确设置编译选项,如指定安装路径、数据目录、字符集等。如果配置不正确,可能会导致编译失败或功能不完整。

  • 权限问题:编译安装过程中,需要创建专门的用户和组(通常是mysql),并确保数据目录和文件的权限设置正确。权限设置不当可能会导致服务启动失败。

  • 初始化问题:MySQL的初始化步骤是编译安装过程中的关键一环,需要确保初始化脚本正确执行。初始化失败可能会导致数据库无法启动。

  • 配置文件:需要正确配置my.cnfmy.ini文件,设置端口、字符集、数据目录等。配置错误可能会导致服务无法启动或运行不正常。

  • 环境变量:需要配置环境变量,以便在任何目录下都能方便地访问MySQL的命令行工具和其他二进制文件。

  • Boost库:对于MySQL 5.7及以上版本,编译前需要安装Boost库。如果没有正确安装Boost库,编译时会报错。

  • 错误处理:编译过程中可能会遇到各种错误,需要根据错误信息进行相应的排查和处理。常见的错误包括缺少依赖、编译器配置错误、文件权限问题等。

  • 二进制兼容性:确保下载的MySQL源码与你的操作系统版本和架构兼容。不兼容的版本可能会导致编译失败。

  • 服务启动:编译安装完成后,需要启动MySQL服务,并设置开机自启动。这可能需要创建和配置服务脚本。

解决这些问题通常需要一定的Linux系统知识和编译经验。以下是我在操作过程中的一些总结,希望能对大家有所帮助

3.准备工作

3.1 安装cmake

tar -zxvf cmake-3.8.0.tar.gz
cd cmake-3.8.0
./bootstrap
gmake
gmake install

3.2 安装boost_1_59_0

tar -zxvf boost_1_59_0.tar.gz
cd boost_1_59_0
./bootstrap.sh
./b2
./b2 install

3.3.创建用户、配置目录

添加mysql用户和所属组
/usr/sbin/groupadd mysql
/usr/sbin/useradd  -g mysql mysql
创建mysql安装目录和数据目录
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data
修改mysql目录所有者
chown -R mysql:mysql /usr/local/mysql

4.安装mysql

tar -zxvf mysql-5.7.14.tar.gz
cd mysql-5.7.14
以下复制到文本中
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data  -DDOWNLOAD_BOOST=1  -DWITH_BOOST=/usr/local/src/boost_1_59_0 -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock  -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1  -DWITHOUT_PARTITION_STORAGE_ENGINE=1  -DWITH_FAST_MUTEXES=1  -DWITH_ZLIB=bundled -DENABLED_LOCAL_INFILE=1  -DWITH_READLINE=1  -DWITH_EMBEDDED_SERVER=1 -DWITH_DEBUG=0
make
make install

错误时处理

#mysql安装失败重新编译时,需要清除旧的对象文件和缓存信息
make clean
rm -f CMakeCache.txt
rm -rf /etc/my.cnf

5.配置mysql并初始化数据库

配置文件:
cp /usr/local/mysql/support-files/my-default.cnf  /etc/my.cnf
初始化数据库
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
启动mysql数据库
/usr/local/mysql/bin/mysqld_safe -defaults-file=/etc/my.cnf -basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data -user=mysql & ./--mysqld_safe --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql &
查看是否启动
ps -ef | grep mysqld
建立软链接:
ln -s /usr/local/mysql/bin/mysql    /usr/bin

6. 修改初始化密码

mysql  -u root  -p
Set password = password('xxx');
Alter user 'root'@'localhost' password expire never;
grant all privileges on *.* to root@'%' identified by 'xxx';
grant all privileges on *.* to 'root'@'%' identified by 'xxx' with grant option;
Flush privileges;

7.开机启动

touch /usr/lib/systemd/system/mysql.service
设置内容
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false

8.操作命令

systemctl start mysql
systemctl stop mysql
systemctl restart mysql
systemctl disable mysql
systemctl enable mysql
systemctl status mysql

9.最后

感谢大家,请大家多多支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025台球展,2025河南台球及配套设施展览会3月举办

阳春三月,年度招商季,壹肆柒中国国际台球产业博览会助力全国台球企业拓市场; 2025中国(郑州)国际台球产业博览会(壹肆柒台球展) The 2025 China (Zhengzhou) International Billiards Industry…

C++:采用模板封装顺序表,栈,队列

1.顺序表&#xff1a; list.hpp #ifndef LIST_HPP #define LIST_HPP #include <iostream>using namespace std;template <class L>class Seqlist { private:L *ptr;L size;L len0;public:void init(L n){//堆区申请空间&#xff08;大小为n&#xff09;this->…

博主回归!数据结构篇启动

目录 1>>闲话 2>>数据结构前言 3>>复杂度的概念 4>>时间复杂度 5>>大O渐进表示法 6>>总结 1>>闲话 家人们好久不见&#xff0c;小编军训终于是结束了&#xff0c;大一事情太多了&#xff0c;这几天没时间健身&#xff0c;没时间…

2024.9.26 作业 +思维导图

一、作业 1、什么是虚函数&#xff1f;什么是纯虚函数 虚函数&#xff1a;函数前加关键字virtual&#xff0c;就定义为虚函数&#xff0c;虚函数能够被子类中相同函数名的函数重写 纯虚函数&#xff1a;把虚函数的函数体去掉然后加0&#xff1b;就能定义出一个纯虚函数。 2、基…

el-table+el-form实现表单校验和解决不垂直居中导致的问题

el-tableel-form实现表单校验 1.实现el-table的表单校验 关键点123 2.解决不垂直居中导致的问题 问题效果图 解决方案 .item-align-center {display: inline-flex; }

数据定义语言CREATE的应用

新书速览|SQL Server 2022从入门到精通&#xff1a;视频教学超值版_sql server 2022 出版社-CSDN博客 《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) SQL Se…

IGZO基底无电容DRAM单元前景看好

1.DRAM技术简介 DRAM&#xff08;Dynamic Random Access Memory&#xff0c;动态随机存取存储器&#xff09;是一种用于计算机和其他电子设备中的主存储器类型&#xff0c;其主要由存储单元阵列构成&#xff0c;而每一个存储单元由一个电容器和一个晶体管组成&#xff0c;如图…

EasyAR自定义相机RTSP视频流(CustomCamera)

EasyAR可以使用视频源作为输入源&#xff0c;官方给出了示例和文档&#xff0c;但是对于大部分Unity开发人员来说看了文档还是一头雾水。 在Android Studio中将custom-camera.jar添加libs中&#xff0c;就可以查看源代码了 分析其源代码&#xff0c;主要是ExternalCameraSampl…

AI数字人直播爆火,数字人虚拟主播成品牌闲时直播最佳选择!

近年来&#xff0c;随着互联网的普及和发展&#xff0c;电商和直播平台在我国迅速崛起。根据中国网络信息中心的数据显示&#xff0c;我国直播用户7.5亿&#xff0c;使用率已经超过70%&#xff0c;直播已经成为企业重要的营销和销售通道。 一、在经历了几年的爆发式增长后&…

日期类的实现- 计算日期之间相差多少天-解决单参数构造

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 这里有坑&#xff0c;这里有坑&#xff0c;这里有坑 首选我们直接上代码&#xff0c;因…

Unity场景内画车道线(根据五阶曲线系数)

之前做过使用Dreamteck Splines插件构建车道线之前需求是给定车道线的点位&#xff0c;根据点位来进行构建。 由于AI识别出来的点位不线性&#xff0c;画出来的车道线经常是歪七扭八&#xff0c;所以使用五阶曲线系数进行构建。 使用在线图形计算器进行测试构建&#xff0c;公式…

【C++】STL标准模板库容器set

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C ⚙️操作环境:Visual Studio 2022 目录 &#x1f4cc;关联式容器set(集合)简介 &#x1f4cc;set(集合)的使用 &#x1f38f;set(集合)的模板参数列表 &#x1f38f;set(集合)的构造函数 &#x1f38f;set(集合)的迭代…

Vue 项目实战4-无缝轮播图

养成好习惯&#xff0c;先赞后看&#xff0c;感谢对作者大大的支持 一、话不多说&#xff0c;直接上效果图&#xff1a; 完整视频展示链接如下&#xff1a; https://item.taobao.com/item.htm?ftt&id833405684191 二、实现思路 HTML结构 文档头部设置&#xff1a;定义…

C# 委托(Delegate)二

一.委托的多播&#xff08;Multicasting of a Delegate&#xff09;&#xff1a; 委托对象&#xff0c;使用 "" 运算符进行合并&#xff0c;一个合并委托调用它所合并的两个委托。使用"-" 运算符从合并的委托中移除组件委托。 注&#xff1a;只有相同类型…

C语言编译和链接详解(通俗易懂,深入本质)

我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为可执行程序(Executable Program)。在 Windows 下,可执行程序的后缀有.exe和.com(其中.exe比较常见);在类 UNIX 系统(Linux、Mac OS 等)下,可执行程序没有特定的后缀,系统根据文件的头部信息来判…

小小扑克牌算法

1.定义一个扑克牌类Card&#xff1a; package democard; public class Card {public String suit;//表示花色public int rank;//表示牌点数Overridepublic String toString() {return "{"suit rank"}";}//实例方法&#xff0c;初始化牌的点数和花色public…

Redis篇(初识Redis)

目录 一、数据库 二、NoSQL 三、认识Redis 三、关系数据库与非关系数据库对比 1. 结构化与非结构化 2. 关联和非关联 3. 查询方式 4. 事务 5. 存储方式 6. 扩展性 7. 总结 7.1. 图形梳理 7.2. 表格梳理 7.3. 优缺点 关系型数据库 非关系型数据库 四、再次认识R…

word中的表格全部设置宽度100%

1、背景 我们用工具将数据库或其他的数据导出成word时&#xff0c;表格有的会大于100%&#xff0c;超过了边界。word没有提供全局修改的方法。如果我们想改成100%。 一种方式是通过宏&#xff0c;全局改。一种是手动改。 2、宏修改 如果表格多&#xff0c;可以通过这种方式。…

【Qt】前后端交互---DataCenter类

设计目的 前后端交互系统中&#xff0c;创建并使用数据核心类的目的就是让该类作为客户端的数据中心&#xff0c;也就是说其负责管理客户端的所有数据与服务器的网络通信。 数据持久化 初始化数据文件 该函数设计的目的就是用于检查所需要的文件和目录是否存在&#xff0c;如…

You are not allowed to push code to this project

原因1 用户权限不够。 具体查看用户权限路径&#xff1a; 原因2 vscode之前都能提交代码&#xff0c;但是突然就提交不上了。 表现为:前端代码能拉取&#xff0c;但是不能提交。使用idea进行前端代码的提交&#xff0c;完全没问题。 解决方案&#xff1a;修改TortoiseG…