由于项目需要,现记录一下在mysql安装以及使用中出现的问题;
具体要求是:
- 阿里云服务器 ubuntu 18.04安装mysql server
- 本地ubuntu 20.04 安装QT以及mysql client
- 树莓派 linux 安装QT以及mysql client
- 本地ubuntu使用root权限操作数据库
- 树莓派linux 使用r/w权限操作数据库
aliyun 安装mysql
阿里云使用的是ubuntu 18.04,所以直接使用命令行安装
sudo apt-get install mysql-server
sudo apt-get install mysql-client
首次安装mysql 服务端,没有跳出设置界面,不知道登录名称与密码,在默认文件中可以查看
输入指令 sudo cat /etc/mysql/debian.cnf
跳出1
2
3
4
5
6
7
8
9
10
11[client]
host = localhost
user = ****此处字符串是用户名****
password = ****此处字符串是密码****
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = ****此处字符串是用户名****
password = ****此处字符串是密码****
socket = /var/run/mysqld/mysqld.sock
接下来使用mysql -u ***此处字符串是用户名*** -p
指令可以登录
登录完成之后,需要创建用户
CREATE USER '用户名'@'登录IP' IDENTIFIED BY '密码';
创建用户之后还需要给用户赋予权限
grant select,insert on *.* to '用户名'@'登录IP' identified by '密码';
由于需要远程连接数据库,以下是新建一个远程连接用户的指令,%
代表任意IP
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
grant select,insert on *.* to '用户名'@'%' identified by '密码';
如果你需要将数据库的保存地址修改为其他地址,请参考链接,
请注意,不要修此blog中的文件路径,本人在修改路径之后,mysql无法运行,InnoDB一直报错。
在创建完用户之后,需要设置阿里云防火墙,打开默认的3306端口,并且需要设置配置文件,本人的配置文件在/etc/mysql/mysql.conf.d/mysqld.cnf
中,屏蔽blind—address
到此为止阿里云端的mysql配置完成。
本地命令行安装QT以及mysql
安装QT
sudo apt-get install qt5-default qtcreator
安装mysql
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libqt5sql5-mysql # 此命令是安装QT的mysql支持
不需要什么配置,可以直接使用阿里云上创建的远程登录用户名以及密码进行登录。
本节介绍的安装方式比较简单,因为本人不记得了,可以百度查看比较详细的安装步骤。
下载源码安装QT以及mysql
安装qt
说实话这个我忘记了
安装mysql
由于是使用源码安装的qt,所以在安装mysql 驱动的时候就不能使用命令行直接安装了,会不起作用;
正确的方式是编译mysql的源码,生成驱动并进行安装
QT使用mysql
测试QT是否支持mysql
在安装完成之后,可以先测试以下,是否支持mysql
在.pro
文件中添加sql
,如下
QT += core gui sql
在main.c
中添加以下代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#include "mainwindow.h"
#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QStringList>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << driver;
w.show();
return a.exec();
}
点击运行,可以在应用输出栏看到1
2
3
4
5
6Available drivers:
"QSQLITE"
"QMYSQL"
"QMYSQL3"
"QTDS"
"QTDS7"
其中有"QMYSQL"
代表当前QT环境支持mysql。
连接mysql
代码如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 添加MySql数据库
QSqlDatabase test_database=QSqlDatabase::addDatabase("QMYSQL");
// 连接数据库
test_database.setHostName("localhost"); // 数据库服务器IP,数据库支持远程连接,这里localhost是本地数据库
test_database.setUserName("root"); // 设置数据库用户名
test_database.setPassword("你自己设置的密码"); // 设置密码
test_database.setDatabaseName("你自己设置的数据库名"); // 设置数据库名,使用哪个数据库,数据库要本来就存在
test_database.open();
if(test_database.open())
{
qDebug()<<"open database success";
}
else
{
qDebug()<<test_database.lastError().text();
QMessageBox::warning(this,"错误","error open database because : "+test_database.lastError().text());
}
}