MySQL远程登录及数据库性能调优

之前整理过一篇Qt下数据库编程基础 :最近在进行单元测试,所以把遇到的一些问题整理出来,主要是关于数据库的

1.远程连接数据库

连接语句是:
mysql -h 192.168.xx.xx(IP地址) -P 3306(端口) -u remoteuser(登录用户名) -p(按回车输入密码)。
在远程连接之前首先要在远端配置一下,我使用的是添加授权用户的方法:
在5.7版本下的命令
下面是允许任意ip地址进行连接,用户名:remoteuser,密码:password:
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘remoteuser’@’%‘IDENTIFIED BY ‘password’ WITH GRANT OPTION;
下面是指定ip为192.168.10.33的主机才能连接到mysql服务器:
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@‘192.168.10.33’IDENTIFIED BY ‘password’ WITH GRANT OPTION;
使授权生效:
mysql>FLUSH PRIVILEGES
可以参考这篇讲远程连接数据库的文章
这些都做好之后还要注意一点防火墙相关的问题,我把MySQL布在了Linux系统上,刚开始的时候试了重启数据库都提示无法连接,后来发现是自己的防火墙没有设置,下面是防火墙的设置:
sudo ufw allow 3306 (允许外部访问3306端口)
sudo ufw enable(开启防火墙)
sudo ufw default deny(禁止外部访问)
sudo ufw status(查看防火墙状态)
之后再连接就可以了。
在mac系统下,需要先创建用户然后再授权,见这篇文章:mac开启mysql远程连接
CREATE USER ‘username’@’%’ IDENTIFIED BY ‘password’;
grant all privileges on *.* to ‘username’@’%’ with grant option;
然后重启mysql服务即可

在8.0版本下的操作(允许任意主机对remoteuser进行远程访问):

create user 'remoteuser'@'%' identified by 'password';
grant all on*.*to 'remoteuser'@'%';
flush privileges;

2.插入数据速度优化

用Qt编写的插入接口是用的QSqlTableModel,每插入一条数据就进行一次提交,刚开始的时候觉得不会有太大问题,但测试的时候发现插入一条数据大概要40ms的样子,这样显然是不够的,于是查了资料,说是要用事务,于是改成先transaction后commit,插入数据也换成了用SQL语句的方法,发现速度并没有快多少,于是又查了数据库相关的资料,详见这篇文章,发现由于用的是InnoDB引擎,默认是会autocommit的,所以速度才没什么提升,所以在配置文件里加了一句autocommit = 0。速度马上就提上去了。但是我发现autocommit设为0之后,qt的commit函数就不起作用了。我使用的是Qt5.10,测试下来好像这里的transaction和commit对本地数据库还是起作用的,但对远程连接数据库就不起作用了,不知道是不是哪里做的不对,最后还是执行的语句set autocommit=0,可以正常使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼马行天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值