有关mysql远程连接总结

1,远程连接与本地连接不同。本地连接因为不受网速等因素的影响,处理速度比较快,所以一般操作数据库的方式都是采用短连接的形式,也就是连接-操作-关闭。但是远程连接经过测试发现,连接远程服务器上的数据库耗时比较长,但是实际操作数据库用时不般不受太大的影响。所以,远程操作的方式采用长连接形式,也就是连接-操作。。。。。。-操作-关闭,详细一点,就是开始的时候连接,中间执行若干操作,只有关闭软件的时候才关闭数据库。

2,既然远程用长连接形式,有人会说中间连接断开了怎么办?其中有一个解决的办法,mysql的C  API 提供了一个函数mysql_ping(&msyqlconnect),可以将这个函数放到程序中的适当的位置,定期的检查数据库连接是否断开,若断开了,这个函数会自动进行连接。但是用这个函数有个前提:在使用mysql_real_connect连接数据库之后,再使用mysql_options( &mysql, MYSQL_OPT_RECONNECT, … ) 来设置为自动重连。这样当mysql连接丢失的时候,使用mysql_ping能够自动重连数据库。如果是在mysql 5.1.6之前,那么则应在每次执行完real_connect 之后执行mysql_options( &mysql, MYSQL_OPT_RECONNECT, … ) ,如果是mysql 5.1.6+,则在connect之前执行一次就够了。

我的具体实现代码是:

//数据库连接

int DataBaseOperator::connect(CString address,CString username,CString password,CString port,CString database)

{

  if (mysql_real_connect(&mysqlConnect,address,username,password,database,atoi(port),NULL,0))

  {

    char value = 1;

    mysql_options(&mysqlConnect, MYSQL_OPT_RECONNECT, &value);

   return 1;

  }

  else

   {

    return 0;

  }

}

可以另起一个定时器:

加入下面这句:

mysql_ping(&oper.mysqlConnect);

3,即然采用长连接,当时我们希望这个连接的时间越长越好。除了用mysql_ping()之外,我们最好设置一下mysql数据库的连接超时时长。

下面文字摘自http://blog.chinaunix.net/uid-26758020-id-3307042.html

在Mysql的默认设置中,如果一个数据库连接超过8小时没有使用(闲置8小时,即

28800s),mysql server将主动断开这条连接,后续在该连接上进行的查询操作都将失败,将

出现:error 2006 (MySQL server has gone away)!。

查看mysql server超时时间:

msyql> show global variables like ‘%timeout%‘;

设置mysql server超时时间(以秒为单位):

msyql> set global wait_timeout=10;

msyql> set global interactive_timeout=10;

时间: 2024-10-11 16:39:31

有关mysql远程连接总结的相关文章

Linux开启mysql远程连接

Linux开启mysql远程连接的设置步骤 . mysql远程连接linuxserviceserveruserMysql默认root用户只能本地访问,不能远程连接管理mysql数据库,Linux如何开启mysql远程连接?设置步骤如下: 1.GRANT命令创建远程连接mysql授权用户test mysql -u root -p mysql>GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY 'test' WITH GRAN

mysql 远程连接速度慢的解决方案

PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的 MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS系统下)或MY.CNF(UNIX或LINUX系统下)文件的[mysqld]下加入 skip-name-resolve这一句.连接mysql速度慢的解决方法. 2台服务器,一台跑iis+php,一台跑mysql,和以往一样配置好环境,测试页面一切OK 跑 应用的时候发现php访问mysql速度很慢,

[转]阿里云配置mysql远程连接

[转]阿里云配置mysql远程连接 默认是不能用客户端远程连接的,阿里云提供的help.docx里面做了设置说明,mysql密码默认存放在/alidata/account.log 首先登录: mysql -u root -h localhost -p use mysql                #打开mysql数据库 #将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip update user set host='%' where user='root'

[转]MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'(111) 的问题

装了个navicat ,然后去连接mysql服务器,一直连不上,一开始以为是防火墙问题,后来防火墙都关闭, iptable服务关闭,还是不行,网上查了下:主要是因为设置了bind_address=127.0.0.1 原文引用: 问题描述: 从一台linux远程连接另一台linux上的MySQL, 出现ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.85'(111)错误. [mysql@vvmvcs0 ~]$ my

【转载】mysql 远程连接速度慢的解决方案

原文地址:http://blog.163.com/[email protected]/blog/static/16674283420110224207826/ PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的 MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS系统下)或MY.CNF(UNIX或LINUX系统下)文件的[mysqld]下加入 skip-name-resolve这一句.连接mysql

mysql 远程连接超时解决办法

设置mysql远程连接root权限 在远程连接mysql的时候应该都碰到过,root用户无法远程连接mysql,只可以本地连,对外拒绝连接. 需要建立一个允许远程登录的数据库帐户,这样才可以进行在远程操作数据库. 方法如下: 默认情况下MYSQL数据库的系统数据库mysql系统表user内用户权限只提供localhost本机登陆: 需要更改权限才能实现远程连接MYSQL数据库. 可以通过以下方式来确认: root#mysql -h localhost -uroot -p Enter passwo

Navicat for mysql 远程连接 mySql数据库10061、1045错误问题 (转)

远程使用Navicat for mysql 客户端软件连接 mySql数据时,连接出现 2003-Can’t connect to MySQL on ’192.168.1.2’(10061)错误时,是由于MySQL不准许远程连接. 修改方法如下: 1:在服务端MySQL文件夹下找到my.ini文件.修改bind-address=127.0.0.1 为 bind-address=0.0.0.0 (在MySQL 5的my.ini中未发现此项) 2:重新启动MySQL服务. 测试连接情况: 如果没有给

mysql 远程连接

4.现在如果用你电脑上的终端进行MySQL连接时,有可能出现如下错误: MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'(111) 的问题 解决方法:修改云主机上的/etc/mysql/my.cnf 文件,注释掉 bind_address=127.0.0.1.这句ok.

linux下mysql远程连接配置和启动重启关闭

linux mysql远程连接 远程使用Navicat for mysql 客户端软件连接 mySql数据时,连接出现Can’t connect to MySQL on ’192.168.1.99’(10061)错误时,是由于MySQL不准许远程连接.修改方法如下: 1:在服务端MySQL/my.ini文件 或者/etc/mysql/my.cnf .修改bind-address=127.0.0.1 为 bind-address=0.0.0.0 2:重新启动MySQL服务.测试连接情况: 如果没有

阿里云配置mysql远程连接

默认是不能用客户端远程连接的,阿里云提供的help.docx里面做了设置说明,mysql密码默认存放在/alidata/account.log 首先登录: mysql -u root -h localhost -p use mysql                #打开mysql数据库 #将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip update user set host='%' where user='root' and host='localho