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  #报错日志存放路径

注意:

记得把存放MySQL数据文件的这个文件夹下文件设置权限,否则后面启动服务的时候,可能会报错启动不了MySQL服务。 

sudo chmod 777 /data/mysql/*

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

        登录成功后使用下面的SQL语句修改密码:

alter user 'root'@'localhost' identified by '123456';

        或者使用下面的SQL语句也可以修改密码: 

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

  • 13
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值