Linux源码编译安装MySQL + Qt连接MySQL

一、准备工作

1. 编译环境:

银河麒麟V10 + 飞腾D2000 CPU

2. 下载MySQL源码

        这里编译的是5.7.44版本,带Boost库,这是官网的下载地址:MySQL :: Download MySQL Community Server (Archived Versions)

 3. 解压压缩包

tar -zxvf mysql-boost-5.7.44.tar.gz

4. 安装所依赖的库

1)、安装CMake编译环境,有CMake则不用安装

sudo apt-get install cmake

2)、安装gcc和g++

sudo apt-get install gcc
sudo apt-get install g++

3)、安装其他依赖

// OpenSSL
sudo apt-get install libssl-dev
// Curses
sudo apt-get install libncurses-dev
// PkgConfig
sudo apt-get install pkg-config


二、编译安装

1. cmake预编译

        执行cmake 命令进行预编译,配置安装路径:

sudo cmake -DCMAKE_INSTALL_PREFIX=/usr/local/MySQL -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/源码路径/boost

DCMAKE_INSTALL_PREFIX 是MySQL想要安装的路径,我这里安装的是

DWITH_BOOST 是下载源码路径下的boost文件夹

2. 进行编译

        编译大概需要半个小时左右

sudo make -j8

3. 安装

sudo make install


三、配置MySQL

1. 编辑配置文件

        配置文件在 /etc/mysql 这个路径下

cd /etc/mysql   #进入配置文件目录
cp my.cnf my.cnf.back # 以防万一先备份

        编辑my.cnf配置文件,在其中添加下面的内容:

[client]
port        = 3306   #端口
socket      = /tmp/mysql.sock   #MYSQL Socket通信文件位置

[mysqld]
port        = 3306  #端口 
socket      = /tmp/mysql.sock  #MYSQL Socket通信文件位置
user = mysql    #用户
basedir = /usr/local/MySQL/ #mysql源码安装位置
datadir = /data/mysql/   #mysql数据存放位置
pid-file = /data/mysql/mysql.pid  #进程文件存放路径

log-error = /data/mysql/mysql-error.log  #报错日志存放路径

2. 创建新用户

        创建MySQL数据文件夹

mkdir -p /data/mysql

        创建mysql用户

useradd -s /sbin/nologin mysql

        授权数据存放路径可写权限 

chown mysql . /data/mysql/
chown -R mysql. /data/mysql/

3. 初始化MySQL

        进入安装路径下的bin目录

cd /usr/local/MySQL/bin/

        使用“--initialize”初始化命令执行后,会生成一个随机密码,用来之后登录MySQL,在输出的最后一行(如:root@localhost:AUCd3=fhb8f5)。需要记录下来,登录MySQL之后再修改密码,如果使用 --initialize-insecure初始化,这样默认密码为空。

./mysqld --initialize --user=mysql --basedir=/usr/local/MySQL/ --datadir=/data/mysql/

--user=mysql                                 #<---用户

--basedir=/usr/local/MySQL          #<---数据库安装路径

--datadir=/data/mysql/                   #<---数据库文件路径

4. 拷贝启动脚本

        将启动脚本拷贝到/etc/init.d目录下,命名为mysqld

// 进入开启mysql执行文件的目录
cd /usr/local/MySQL/support-files
// 把开启执行文件拷贝到/etc/init.d目录下面
cp mysql.server /etc/init.d/mysqld

5. 启动

        使用下面的命令直接启动MySQL服务:

/etc/init.d/mysqld start

        启动后会占用3306端口,使用下面命令检查3306端口,判断服务是否开启:

netstat -nltp

        也可以用下面的命令查询MySQL是否启动:

ps -ef | grep mysql

6. 配置环境变量

        使用echo $PATH命令查询当前的环境变量。

        添加MySQL的路径到环境变量中:

echo “export PATH=/usr/local/MySQL/bin:$PATH” >> /etc/profile

        使用下面命令保存,使环境变量生效:

source /etc/profile

7. 登录MySQL

        使用下面的命令登录MySQL,密码就是初始化时生成的随机密码:

mysql -u root -p AUCd3=fhb8f5

        如果忘记上面的随机密码的话,在my.cnf配置文件中添加一行:

skip-grant-tables

        然后重启服务器,这样再次登录时就不需要密码:

// 重启MySQL服务器
systemctl restart mysqld

        登录成功后使用下面的命令修改密码:

update mysql.user set authentication_string ='123456' where user="root";

        使用quit退出MySQL。


三、Qt连接MySQL数据库

1. 编译QMySQL驱动

        由于在QT5的版本中移除了MySQL数据库驱动libqsqlmysql.so,因此我们需要重新编译QT源码中的MySQL驱动,以生成libqsqlmysql.so。

        首先需要你安装的Qt版本的源码,可以在官网选择自己的版本下载:Index of /archive/qt

        找到源码中QMySQL驱动的源码,在Qt源码路径下的qtbase/src/plugins/sqldrivers/mysql,进入路径下后可以看到有这几个源码文件。

        使用Qt打开其中的mysql.pro工程文件,并按照下面这样修改mysql.pro文件,添加的两个路径为安装的MySQL下的Include路径和lib路径:

        修改完后,点击编译即可,编译后生成的库的路径是qtbase/plugins/sqldrivers/,可以看到下面有编译后生成的libqsqlmysql.so库文件。

        把这个库文件复制到Qt的安装路径下的/plugins/sqldrivers/,并把MySQL安装路径下的lib文件夹里的libmysqlclient.so相关的3个库文件都复制到/usr/lib文件夹下。否则Qt调用MySQL的时候,会报QSqlDatabase: QMYSQL driver not loaded错误。因为libqsqlmysql.so这个库依赖于libmysqlclient.so这个库,不加到/usr/lib路径下的话可能会找不到。

2. 测试QT连接MySQL数据库

        最后使用Qt代码连接MySQL测试,Qt连接MySQL需要先在pro文件中加上:

QT += sql

        引用头文件<QSqlDatabase>,并用下面的代码查询当前Qt支持的数据库驱动:

qDebug() << QSqlDatabase::drivers();
//再次查看QT支持的数据库驱动,可以看到已经支持MySQL了!
("QSQLITE", "QMYSQL", "QMYSQL3")

        使用下面的代码连接数据库:

// 测试数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");// 设置数据库连接参数
db.setHostName("127.0.0.1");
db.setDatabaseName("demo");
db.setUserName("root");
db.setPassword("123456");// 尝试连接数据库
if (db.open())
{qDebug() << "Connected to database"; 
}
else
{qDebug() << "Failed to connect to database:" << db.lastError().text();
}QSqlQuery query;
query.exec("SELECT * FROM student");
while (query.next())
{QString value = query.value(0).toString();// 处理查询结果qDebug() << value;
}
db.close(); //关闭数据库

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

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

相关文章

Python内置方法串讲:类型转化与实用技巧

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、类型转化&#xff1a;从A到B的魔法 二、实用技巧&#xff1a;避免类型错误 三、总结 一…

Datawhale团队第十一期录取名单!

Datawhale团队 公示&#xff1a;Datawhale团队成员 Datawhale成立五年了&#xff0c;从一开始的12个人&#xff0c;学习互助&#xff0c;到提议成立开源组织&#xff0c;做更多开源的事情&#xff0c;帮助更多学习者&#xff0c;也促使我们更好地成长。于是有了我们的使命&…

一年前的Java作业,模拟游戏玩家战斗

说明&#xff1a;一年前写的作业&#xff0c;感觉挺有意思的&#xff0c;将源码分享给大家。 刚开始看题也觉得很难&#xff0c;不过写着写着思路更加清晰&#xff0c;发现也没有想象中的那么难。 一、作业题目描述&#xff1a; 题目&#xff1a;模拟游戏玩家战斗 1.1 基础功…

假象和谎言

原创 | 刘教链 隔夜BTC&#xff08;比特币&#xff09;徘徊在69k一线。5.25教链内参报告&#xff0c;《BTC ETF持仓即将超越中本聪》。ETH ETF的尘嚣逐渐散去&#xff0c;复归于平静。戏刚唱了个开头&#xff0c;结尾还留着悬念。4000刀之于ETH看来是个关键阻力位&#xff0c;最…

element ui 的密码输入框点击显示隐藏密码时,图标随之改变

场景图&#xff1a; 原理&#xff1a; 通过修改el-input框的type属性&#xff0c;来设置显示或者隐藏。从而改变图标地址。 <el-input class"passwordinput" :type"pwdObj.pwdType" ref"pwdInput" placeholder"密码"v-model"…

Vue热更新出现内存溢出

Vue热更新出现内存溢出 vue-cli2遇到此问题的解决办法&#xff1a;vue-cli3遇到此问题的解决办法&#xff1a;方法一&#xff08;已测试ok&#xff09;方法二&#xff08;未尝试&#xff09; 开发项目有一段时间了&#xff0c;随着项目越来越大&#xff0c;打包的时间也相应的变…

若依微服务实现分布式事务

一、基本介绍 1、什么是分布式事务 指一次大的操作由不同的小操作组成的&#xff0c;这些小的操作分布在不同的服务器上&#xff0c;分布式事务需要保证这些小操作要么全部成功&#xff0c;要么全部失败。从本质上来说&#xff0c;分布式事务就是为了保证不同数据库的数据一致…

ssm137基于SSM框架的微博系统+vue

微博系统网站的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就…

家用洗地机哪个品牌好?家用洗地机排行榜前十名

随着洗地机逐渐进入大众视野&#xff0c;这种集吸、拖、洗功能于一体的清洁工具&#xff0c;凭借其高效便捷的特点&#xff0c;成为家庭清洁的新宠。洗地机不仅能够减少地面清洁时间&#xff0c;节省体力&#xff0c;还能提高清洁效果。然而&#xff0c;面对琳琅满目的洗地机品…

Web会话管理

一、会话管理的概念&#xff1a; 在人机交互时&#xff0c;会话管理是保持用户的整个会话活动的互动与计算机系统跟踪过程会话管理分类: 桌面会话管理、浏览器会话管理、Web服务器的会话管理。 二、为什么需要会话管理&#xff1f; HTTP是一种无状态协议&#xff0c;一次请…

java项目之智能家居系统源码(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的智能家居系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于Springboot的智能家居系…

【高校科研前沿】湖北工业大学为第一署名单位在《Science》发表Letters文章:应对青藏高原河流泥沙激增

文章简介 论文名称&#xff1a;Combating sediment surge in Tibetan rivers&#xff08;应对青藏高原河流泥沙激增&#xff09; 相关作者及单位&#xff1a;杨洪教授&#xff08;英国雷丁大学&#xff09;&刘德富教授&#xff08;湖北工业大学&#xff09;&Julian R…

huggingface 笔记:聊天模型

1 构建聊天 聊天模型继续聊天。传递一个对话历史给它们&#xff0c;可以简短到一个用户消息&#xff0c;然后模型会通过添加其响应来继续对话一般来说&#xff0c;更大的聊天模型除了需要更多内存外&#xff0c;运行速度也会更慢首先&#xff0c;构建一个聊天&#xff1a; ch…

灵动微单片机洗衣机方案——【软硬件开发支持】

RAMSUN英尚以洗衣机洗涤主驱电机为例&#xff0c;主驱电机和多电机控制首选MM32SPIN0280.灵动微电子能够提供完整的软硬件开发支持&#xff0c;目前方案已经在主流家电厂出货。 洗衣机方案 皮带洗衣机 DD直驱洗衣机 波轮洗衣机 Mini壁挂和桌面洗衣机 洗涤烘干双变频方案 热泵烘…

uniapp - 文章模块页面

在上一篇文章中&#xff0c;创建了一个空白的文章模块页面。在这一篇文章&#xff0c;让我们来向页面中填充内容。 目录 页面效果涉及uniapp组件1.view2.swiper3.scroll-view4.属性解读1) class"style1 style2 .."2) circular单属性无赋值3) :autoplay"autoplay…

信息标记形式 (XML, JSON, YAML)

文章目录 &#x1f5a5;️介绍&#x1f5a5;️三种形式&#x1f3f7;️XML (Extensible Markup Language)&#x1f516;规范&#x1f516;注释&#x1f516;举例&#x1f516;其他 &#x1f3f7;️JSON (JavaScript Object Notation)&#x1f516;规范&#x1f516;注释&#x…

存内计算从浮点运算优化对数据经济的提升

本篇文章将介绍存内计算技术对于数据经济的提升&#xff0c;我们将从提出问题、解答问题与阐述应用三个方面进行展开介绍&#xff0c;并引入浮点存算、等新兴存算技术进行简要介绍。 一.数据经济&存内计算&#xff0c;结合是否可行&#xff1f; 数据经济与存内计算&#…

浅说线性DP(上)

前言 在说线性dp之前&#xff0c;我们先来聊一聊动态规划是啥&#xff1f; 动态规划到底是啥&#xff1f; 动态规划是普及组内容中最难的一个部分&#xff0c;也是每年几乎必考的内容。它对思维的要求极高&#xff0c;它和图论、数据结构不同的地方在于它没有一个标准的数学…

mysql 01 linux 上安装mysql服务端

01.linux安装 MySQL的大部分安装包都包含了服务器程序和客户端程序&#xff0c;不过在Linux下使用RPM包时会有单独的服 务器RPM包和客户端RPM包&#xff0c;需要分别安装。 1.查看是否已经安装了MySQL rpm -qa | grep mysql如果什么都没有&#xff0c;就是还没有装过MySQL …

基于Pytorch框架的深度学习RegNet神经网络二十五种宝石识别分类系统源码

第一步&#xff1a;准备数据 25种宝石数据&#xff0c;总共800张&#xff1a; { "0": "Alexandrite","1": "Almandine","2": "Benitoite","3": "Beryl Golden","4": "Carne…