ubuntu系统qt程序连接mysql数据库


本文分为两步,第一步是安装mysql,第二步是QT程序连接mysql。
使用都系统是ubuntu18.04;
qt版本是5.11.2;
mysql版本是5.7.24。

在ubuntu18.04系统下安装mysql

sudo apt-get install mysql-server
sudo apt-get isntall mysql-client
sudo apt-get install libmysqlclient-dev

测试mysql是否安装成功

sudo netstat -tap | grep mysql

配置mysql

sudo mysql_secure_installation

里面设置内容较多,可以都选为默认值。

登录mysql

sudo mysql -uroot -p

回车后输入密码。sudo一定要有,不然会提示权限不够的错误。

在Ubuntu系统下,应用程序一般不具有root权限,因此在程序中不能用root帐号登录数据库,需要创建普通用户。
使用root帐号在命令行登录数据库后,执行如下命令:

CREATE DATABASE test;
GRANT ALL PRIVILEGES ON test.* TO testuser@localhost IDENTIFIED BY "12345678"; 

创建了一个 密码为"12345678"的testuser用户,他只可以在本地登录,只可以访问test数据库。
这样你新建的程序就能用这个帐号访问数据库了。

使用qt连接数据库

在使用ubuntu系统下使用qt连接mysql数据库时出现如下错误:

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL QMYSQL3 QODBC 

这说明qt支持mysql,但是驱动没有配置好,这个驱动就是libqsqlmysql.so文件,qt安装完成后,/qt安装目录/Qt5.11.2/5.11.2/gcc_64/plugins/sqldrivers这个目录下面默认会有一个libqsqlmysql.so,但这个是不能用的,因为它依赖都库在qt安装过程中被升级了,所以需要自己编译。

在 /qt安装目录/Qt5.11.2/5.11.2/Src/qtbase/src/plugins/sqldrivers/mysql 目录下执行

qmake /qt安装目录/Qt5.11.2/5.11.2/gcc_64/bin/qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/x86_64-linux-gnu/ -lmysqlclient" mysql.pro

有可能会提示找不到configure.pri, 这是因为qt自身文件命名的问题,真实的文件名是config.pri,改了就好。

然后执行make命令进行编译。

make

编译时可能后提示缺少-lssl,-lmysqlclient-r等。
ssl可以通过安装解决

sudo apt-get install openssl
sudo apt-get install libssl-dev

-lmysqlclient_r缺少的问题可以通过建立软链接解决

ln -s libmysqlclient.so libmysqlclient_r.so

编译完成后,在/Qt安装目录/Qt5.11.2/5.11.2/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers/ 目录下会出现libqsqlmysql.so.debug和 libqsqlmysql.so两个文件,把它们拷贝到 /Qt5.11.2/5.11.2/gcc_64/plugins/sqldrivers覆盖原文件。

此时,运行qt程序,发现可以连接数据库了。


版权声明:本文为iamqianrenzhan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。