本文分为两步,第一步是安装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程序,发现可以连接数据库了。