阿里云有活动,白嫖了一年的新加坡轻量级服务器,有点卡,有时候要开梯子
白嫖300元优惠券
目录
- 1 安装启动Mysql服务
- 2 更改连接权限
- 2.1 Navicat连接报错1698 -Access denied for user 'root'@''
- 3 qt连接云服务器数据库
1 安装启动Mysql服务
我使用finalshell连接到了我的服务器,首先安装Mysql服务,运行这两条命令
sudo apt update
sudo apt install mysql-server
sudo service mysql start
启动mysql服务
mysql -u root -p
输入密码后就进入mysql了
2 更改连接权限
阿里云这里添加防火墙规则,开放3306端口
关闭linux的防火墙
ps -ef|grep firewalld
查看防火墙
systemctl stop firewalld
关闭防火墙
在目录找到这个文件,windows是my.ini文件,打开修改bind-address = 0.0.0.0
更改mysql的配置文件
show databases;
查看所有的数据库
然后use mysql;
进入mysql数据库
show tables;
显示表,其中user表里是存放了权限
select user,host from user;
进入user表
update user set host = '%' where user = 'root';
更新权限
flush privileges;
刷新数据库,这样就完成了,通过了网络访问了数据库
2.1 Navicat连接报错1698 -Access denied for user ‘root’@‘’
此时navicat报错,查询是新建mysql时没有设置密码
找了好多更改密码的,但是mysql8.0删除了一些东西导致无法使用,最终找到以下语句
ALTER USER USER() IDENTIFIED BY '123456';
添加成功,123456就是我们数据库的密码,navicat连接是也是用的这个密码,连接成功
直接把book的三个表复制到服务器上的mysql
3 qt连接云服务器数据库
在编译器里边能够连接到数据库,但是打包出来的单独程序还是连接不到数据库。
打包程序跑通数据库
void sqlmange::init()
{// 打开数据库// 使用 QMYSQ 数据库驱动m_db = QSqlDatabase::addDatabase("QMYSQL");// 设置数据库名称// 数据库名为 my_databasem_db.setDatabaseName("book");// 设置数据库用户名和密码// 用户名为 root,密码为 123456m_db.setUserName("root");m_db.setPassword("xxx");// 设置数据库服务器地址// 服务器地址为 localhostm_db.setHostName("xxx");m_db.setPort(3306);// 打开数据库// 并输出打开结果到调试信息bool ret = m_db.open();if(ret){QMessageBox::information(nullptr,"信息","连接数据库成功");}else{QMessageBox::information(nullptr,"信息","连接数据库失败");}qDebug() <<"数据库连接:"+ m_db.open();
}