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(); //关闭数据库

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springcloud-服务拆分与远程调用

一 微服务 1.1简单了解 SpringCloud SpringCloud是目前国内使用最广泛的微服务框架。官网地址&#xff1a;Spring Cloud。 SpringCloud集成了各种微服务功能组件&#xff0c;并基于SpringBoot实现了这些组件的自动装配&#xff0c;从而提供了良好的开箱即用体验&#xff1a…

ChatGPT自然科学应用,R语言lavaan结构方程模型、copula函数

R语言lavaan结构方程模型&#xff08;SEM&#xff09; 结构方程模型&#xff08;Sructural Equation Modeling&#xff0c;SEM&#xff09;是分析系统内变量间的相互关系的利器&#xff0c;可通过图形化方式清晰展示系统中多变量因果关系网&#xff0c;具有强大的数据分析功能和…

大模型部署_书生浦语大模型 _作业2

本节课可以让同学们实践 4 个主要内容&#xff0c;分别是&#xff1a; 1、部署 InternLM2-Chat-1.8B 模型进行智能对话 1.1安装依赖库&#xff1a; pip install huggingface-hub0.17.3 pip install transformers4.34 pip install psutil5.9.8 pip install accelerate0.24.1…

微软为团队推出了 Copilot

微软希望使其生成式人工智能品牌对团队更有用&#xff0c;特别是跨公司和大型企业组织的团队。 在年度 Build 开发者大会上&#xff0c;微软宣布推出 Team Copilot&#xff0c;这是其 Copilot 系列生成式 AI 技术的最新扩展。 与微软之前的 Copilot 品牌产品不同&#xff0c;…

炸裂!AI五分钟模仿爆款IP故事,涨粉速度太绝了!

‍ ‍大家好&#xff0c;我是向阳。 今天我要分享一个利用AI技术模仿爆款账号的小技巧&#xff0c;帮助大家迅速增加粉丝。这个方法简单实用&#xff0c;尤其适用于副业和本地生活领域。接下来&#xff0c;我将为大家详细讲解操作步骤。让我们开始吧。 副业赚钱&#xff1a;模…

本地开发正常 线上CI/CD构建项目过程报错文件未能正确引用

问题快照 原因分析&#xff1a; 一般遇到这样的错误就是 文件路径或者文件名称未能正确匹配 或者文件不存在 会报这样的错误 以为很好解决 但这次 都排查 了 就是 没发现原因 不管怎么说还是要感谢 GPT的能力(分析问题的能力) 先上图 当我看到 第四步的时候 我立马 去仓库里查…

Go Redis 实现邮件群发

一、安装 go get github.com/go-redis/redis/v8二、邮箱服务配置,以QQ邮箱为例 三、示例代码 package mainimport ("context""fmt"redis "github.com/go-redis/redis/v8""gopkg.in/gomail.v2""gopkg.in/ini.v1"&quo…

怎样查看JavaScript中没有输出结果的数组值?

在JavaScript中&#xff0c;可以方便地定义和使用数组&#xff0c;对于已经定义的数组&#xff0c;怎样查看其值呢&#xff1f; 看下面的示例&#xff0c;并运行它。 上面的示例中&#xff0c;标签不完整&#xff0c;请补充完整再试运行。你知道少了什么标签么&#xff1f; 注…

SEC批准以太坊ETF了吗?

原创 | 刘教链 隔夜BTC击穿了5日均线&#xff0c;回落至67k一线。凌晨传来美SEC批准以太坊ETF的消息&#xff0c;但是ETH上下插针&#xff0c;杵在3.8k&#xff0c;微微下跌。定睛仔细一看&#xff0c;SEC批准了&#xff0c;但又没完全批准&#xff0c;这特么是薛定谔的批准哈&…

本地部署 MiniCPM-Llama3-V 2.5

本地部署 MiniCPM-Llama3-V 2.5 0. 引言1. 性能评估2. 典型示例3. 本地部署4. 运行 WebUI Demo5. vLLM 部署 0. 引言 MiniCPM-Llama3-V 2.5 是 MiniCPM-V 系列的最新版本模型&#xff0c;基于 SigLip-400M 和 Llama3-8B-Instruct 构建&#xff0c;共 8B 参数量&#xff0c;相较…

AWS迁移与传输之AMS/MGN

AWS Application Migration Service&#xff08;AWS Application Migration Service简称为AWS MGN&#xff0c;MGN是migration的缩写。&#xff09;是一项全面的迁移服务&#xff0c;旨在帮助企业将其本地服务器和虚拟机迁移到云端&#xff0c;包括AWS和VMware Cloud on AWS。 …

【pyspark速成专家】11_Spark性能调优方法2

目录 ​编辑 二&#xff0c;Spark任务UI监控 三&#xff0c;Spark调优案例 二&#xff0c;Spark任务UI监控 Spark任务启动后&#xff0c;可以在浏览器中输入 http://localhost:4040/ 进入到spark web UI 监控界面。 该界面中可以从多个维度以直观的方式非常细粒度地查看Spa…

防止浏览器缓存了静态的配置等文件(例如外部的config.js 等文件)

防止浏览器缓存了静态的配置文件 前言1、在script引入的时候添加随机数1.1、引入js文件1.2、引入css文件2、通过html文件的<meta>设置防止缓存3、使用HTTP响应头:前言 在实际开发中浏览器的缓存问题一直是一个很让人头疼的问题,尤其是我们打包时候防止的静态配置文件c…

Linux线程:管理与控制

一、引言 随着计算机硬件技术的飞速发展&#xff0c;尤其是多核CPU的普及&#xff0c;多线程编程已成为充分利用系统资源、提高程序并发性和响应速度的关键技术。 多线程编程允许一个程序中同时运行多个线程&#xff0c;每个线程可以独立地执行不同的任务。这种并行处理的方式…

计算机操作系统体系结构

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天给大家讲讲操作系统。 当今的操作系统趋向于越来越复杂&#xff0c;因为它们提供许多服务&#xff0c;并支持各种硬件和软件资源&#xff08;请参见“操作系统思想&#xff1a;尽量保持简单”&#xff0…

Dynadot API调整一览

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

DISCO: Disentangled Control for Realistic Human Dance Generation

NTU&Microsoft CVPR24https://github.com/Wangt-CN/DisCo 问题引入 提高human motion transfer模型的泛化性&#xff1b;给出 f , g f,g f,g作为参考图片的前背景&#xff0c;然后给出单个pose p p t pp_t ppt​或者pose序列 p { p 1 , p 2 , ⋯ , p T } p \{p_1,p_2…

撤销最近一次的提交,使用git revert 和 git reset的区别

文章目录 工作区 暂存区 本地仓库 远程仓库需求&#xff1a;已推送到远程仓库&#xff0c;想要撤销操作git revert &#xff08;添加新的提交来“反做”之前的更改&#xff0c;云端会残留上次的提交记录&#xff09;git reset&#xff08;相当于覆盖上次的提交&#xff09;1.--…

HIGT:用于全景切片图像分析的层次交互图-Transformer

文章目录 HIGT: Hierarchical Interaction Graph-Transformer for Whole Slide Image Analysis摘要方法实验结果 HIGT: Hierarchical Interaction Graph-Transformer for Whole Slide Image Analysis 摘要 在计算病理学领域&#xff0c;全景切片图像&#xff08;WSIs&#xf…

JavaEE-Spring Controller(服务器控制以及Controller的实现和配置)

Spring Controller 服务器控制 响应架构 Spring Boot 内集成了 Tomcat 服务器&#xff0c;也可以外接 Tomcat 服务器。通过控制层接收浏览器的 URL 请求进行操作并返回数据。 底层和浏览器的信息交互仍旧由 servlet 完成&#xff0c;服务器整体架构如下&#xff1a; Server&…