linux(ARM架构)下的mysql安装、QT连接mysql数据库(完整版) 您所在的位置:网站首页 qt连接数据库代码 linux(ARM架构)下的mysql安装、QT连接mysql数据库(完整版)

linux(ARM架构)下的mysql安装、QT连接mysql数据库(完整版)

2023-03-23 04:15| 来源: 网络整理| 查看: 265

一、安装MYSQL之前要先换源

二、安装MYSQL

1、安装

2、安装完成

3、安装后无法登陆

3.1 原因

3.2 登陆后切换database

3.3 修改密码(注意这里账号和密码是双引号)

3.4查看一下用户

3.5 然后进行刷新使得配置生效

3.6 退出

3.7 重启

三、mysql使用测试

四、QT编译MYSQL库

1.安装依赖包

2.修改MYSQL.PRO文件

3.修改QSQLDRIVERBASE.PRI文件

4.做qmake准备,否则会出错

5. 进行qmake和编译make

6. 复制编译的库文件

五、QT连接数据库

1、测试代码

2、出现问题

3、解决问题

3.1 查看加密方式

3.2 修改加密方式和用户密码

3.3  刷新授权表

3.4 测试连接 

一、安装MYSQL之前要先换源

1.备份系统之前的源,也可以不备份,将之前的源注释掉

cp /etc/apt/sources.list /etc/apt/sources.list.bak

2.修改源文件/etc/apt/sources.list

vim /etc/apt/sources.list

将原来的内容删除,将下面的源内容粘贴上。

3.这里推荐比较好的两个国内源

3.1阿里源(arm64,速度快,推荐)

deb http://mirrors.aliyun.com/ubuntu-ports/ xenial main deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial main   deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main   deb http://mirrors.aliyun.com/ubuntu-ports/ xenial universe deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial universe deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates universe deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-updates universe   deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-security main deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-security main deb http://mirrors.aliyun.com/ubuntu-ports/ xenial-security universe deb-src http://mirrors.aliyun.com/ubuntu-ports/ xenial-security universe

3.2 华为源(arm64,速度快,二者选其一)

deb https://repo.huaweicloud.com/ubuntu-ports/ bionic main restricted universe multiverse deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic main restricted universe multiverse   deb https://repo.huaweicloud.com/ubuntu-ports/ bionic-security main restricted universe multiverse deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic-security main restricted universe multiverse   deb https://repo.huaweicloud.com/ubuntu-ports/ bionic-updates main restricted universe multiverse deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic-updates main restricted universe multiverse   deb https://repo.huaweicloud.com/ubuntu-ports/ bionic-backports main restricted universe multiverse deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic-backports main restricted universe multiverse   ## Not recommended # deb https://repo.huaweicloud.com/ubuntu-ports/ bionic-proposed main restricted universe multiverse # deb-src https://repo.huaweicloud.com/ubuntu-ports/ bionic-proposed main restricted universe multiverse

4.更新仓库

apt-get update

4.1处理报错

可能出现报错

由于没有公钥,无法验证下列签名...

以下命令解决:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5 3B4FE6ACC0B21F32

5.清除软件仓库缓存

apt-get clean

6.更新软件仓库

apt-get update

完成,可以安装MYSQL了

二、安装MYSQL 1、安装 sudo apt-get install mysql-server //服务端 sudo apt-get install mysql-client //客户端 sudo apt-get install libmysqlclient-dev //程序编译时链接的库 2、安装完成

安装完成之后dpkg命令查看状态

dpkg -l | grep mysql

输出以下信息则安装成功

ii mysql-client-5.7 5.7.39-0ubuntu0.18.04.2 arm64 MySQL database client binaries ii mysql-client-core-5.7 5.7.39-0ubuntu0.18.04.2 arm64 MySQL database core client binaries ii mysql-common 5.8+1.0.5 all MySQL database common files, e.g. /etc/mysql/my.cnf ii mysql-server 5.7.39-0ubuntu0.18.04.2 all MySQL database server (metapackage depending on the latest version) ii mysql-server-5.7 5.7.39-0ubuntu0.18.04.2 arm64 MySQL database server binaries and system database setup ii mysql-server-core-5.7 5.7.39-0ubuntu0.18.04.2 arm64 MySQL database server binaries

使用如下命令启动mysql

service mysql start

启动后使用如下命令查看状态

sudo netstat -anp | grep mysql

显示如下说明启动成功:

tcp6 0 0 :::3306 :::* LISTEN 27608/mysqld unix 2 [ ACC ] STREAM LISTENING 648125 27608/mysqld /var/run/mysqld/mysqld.sock unix 3 [ ] STREAM CONNECTED 648111 27608/mysqld

使用命令进行登陆

mysql -u root -p

输入密码,进行登陆,如果之前没有设置密码请看第3步

aaron@aaron-Raytine-PC:~$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 5.7.30-0ubuntu0.18.04.1 (Ubuntu) Copyright © 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement. mysql>

3、安装后无法登陆 3.1 原因

原因一(大部分):

你是root安装的: 在本机命令行下输入: mysql -uroot 就可以直接登录,然后修改用户名密码啥的

原因二:

使用mysql -u root -p命令但是不知道root密码是因为之前没有设置,这个时候进行环境配置,设置root密码。

1、首先,进行忽略密码登陆,打开配置文件

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

2、在最后加入skip-grant-tables

# # Read the manual, too, if you want chroot! # chroot = /var/lib/mysql/ # # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". # # ssl-ca=/etc/mysql/cacert.pem # ssl-cert=/etc/mysql/server-cert.pem # ssl-key=/etc/mysql/server-key.pem skip-grant-tables -- 插入 --

3、保存退出

4、重启以下mysql服务

sudo service mysql stop

sudo service mysql start

5、重新登陆

mysql -u mysql

进行3.2步骤,所有步骤执行完注释掉skip-grant-tables

原因三:没有把之前的mysql卸载干净

彻底删除MySQL

在删除mysql前 须要先删除一下 /var/lib/mysql 还有 /etc/mysqlubuntu

先停止mysql服务

systemctl stop mysql

须要输入如下几条命令

sudo rm /var/lib/mysql/ -R sudo rm /etc/mysql/ -R sudo apt-get autoremove mysql* --purge sudo apt-get remove apparmor

确保没有mysql的文件夹可忽略此步骤

sudo find / -name mysql

再次安装

sudo apt-get install mysql-server //服务端 sudo apt-get install mysql-client //客户端 sudo apt-get install libmysqlclient-dev //程序编译时链接的库 3.2 登陆后切换database

登录

~$ sudo mysql -u root -p Enter password:

直接回车

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.39-0ubuntu0.18.04.2 (Ubuntu) Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

换为database

mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> 3.3 修改密码(注意这里账号和密码是双引号) mysql> update user set authentication_string=PASSWORD("123456") where user="root"; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1 3.4查看一下用户 select user,host from mysql.user;

出现以下信息则配置完成

mysql> select user,host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | debian-sys-maint | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+ 4 rows in set (0.00 sec) 3.5 然后进行刷新使得配置生效 flush privileges; 3.6 退出 quit 3.7 重启 sudo service mysql restart 三、mysql使用测试

1、建立一个数据库

mysql> create database joyrun; Query OK, 1 row affected (0.00 sec)

2、查看当前数据库

mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | joyrun | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)

3、建立一个表

mysql> use joyrun Database changed mysql> create table tbl_run(id int,name varchar(5),primary key (id)); Query OK, 0 rows affected (0.01 sec)

4、查看表的结构

mysql> desc tbl_run; +-------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(5) | YES | | NULL | | +-------+------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)

5、修改字节长度

mysql> alter table tbl_run modify column name varchar(20); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc tbl_run; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)

6、现在表中不能添加中文字段,修改字符集后才可以

修改库字符集:alter database joyrun character set utf8; 修改表字符集:alter table tbl_run character set utf8; 修改字段字符集:alter table tbl_run change name name varchar(20) character set utf8;

7、增加一条数据

mysql> insert into tbl_run (id,name) values (1,'xiaoming'); Query OK, 1 row affected (0.01 sec) mysql> select * from tbl_run; +----+----------+ | id | name | +----+----------+ | 1 | xiaoming | +----+----------+ 1 row in set (0.00 sec)

四、QT编译MYSQL库 1.安装依赖包 sudo apt-get install openssl sudo apt-get install libssl-dev 2.修改MYSQL.PRO文件

该文件在qt安装目录下,src中,别找错了,qt源码目录有几个src,在我的ubuntu上,是这个路径

qt-everywhere-src-5.11.3/qt-everywhere-src-5.11.3/qtbase/src/plugins/sqldrivers

打开pro文件,将QMAKE_USE注释掉

TARGET = qsqlmysql HEADERS += $$PWD/qsql_mysql_p.h SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp #QMAKE_USE += mysql OTHER_FILES += mysql.json PLUGIN_CLASS_NAME = QMYSQLDriverPlugin include(../qsqldriverbase.pri) 3.修改QSQLDRIVERBASE.PRI文件

返回到上层目录 找到qsqldriverbase.pri文件,打开 将include(shadowed(shadowed(PWD)/qtsqldrivers-config.pri)注释掉并添加

#include($$shadowed($$PWD)/qtsqldrivers-config.pri) include($$shadowed($$PWD)/configure.pri) QT = core core-private sql-private # For QMAKE_USE in the parent projects. #include($$shadowed($$PWD)/qtsqldrivers-config.pri) include($$shadowed($$PWD)/configure.pri) PLUGIN_TYPE = sqldrivers load(qt_plugin) DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII 4.做qmake准备,否则会出错

4.1修改头文件

首先使用命令sudo apt install default-libmysqlclient-dev

第二步使用sudo apt-get install libmariadbclient-dev命令,如果是这样,那么你在linux中就应该能引入头文件

第三步,修改qsql_mysql_p.h文件,#include 修改为#include

#include #if defined (Q_OS_WIN32) #include #endif //#include #include #ifdef QT_PLUGIN #define Q_EXPORT_SQLDRIVER_MYSQL #else #define Q_EXPORT_SQLDRIVER_MYSQL Q_SQL_EXPORT #endif

此步骤不执行会出现错误

mysql/qsql_mysql.cpp:57:10: fatal error: QtSql/private/qsqldriver_p.h: No such file or directory  #include

4.2 执行

sudo apt-get install qtbase5-private-dev

此步骤不执行会出现错误

qsql_mysql.cpp:55:10: fatal error: QtSql/private/qsqldriver_p.h: No such file or directory #include

5. 进行qmake和编译make qt-everywhere-src-5.11.3/qt-everywhere-src-5.11.3/qtbase/src/plugins/sqldrivers/mysql$ (源码路径)sudo qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/x86_64-linux-gnu/ -lmysqlclient" mysql.pro

qmake生成Makefile文件

sudo make 6. 复制编译的库文件 在/Qt安装目录qt-everywhere-src-5.11.3/qt-everywhere-src-5.11.3/qtbase/src/plugins/sqldrivers/plugins/sqldrivers 一个文件

把它们拷贝到//usr/lib/aarch64-linux-gnu/qt5/plugins/sqldrivers

aarch64-linux-gnu根据linux版本不同,选择也不同

五、QT连接数据库 1、测试代码

QT连接mysql数据库测试代码如下,

qDebug()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有