当前位置: > Ubuntu >

ubuntu下mysql远程连接和访问慢的解决方法

时间:2015-05-01 22:49来源:linux.it.net.cn 作者:IT

转载1:今天公司的网络做了调整,造成原本连接很快的mysql服务器,连接速度奇慢。以前几十毫秒的连接现在完成一次要近5秒钟,在排除了网络问题后,只有从mysql下手。原来每次访问db,mysql就会试图去解析来访问的机器的domain name,如果这时解析不料,等一段时间会失败,数据才能被取过来。解决方法如下:
修改 my.cnf
[mysqld]
skip-name-resolve #Don’t resolve hostnames 
重启,问题解决。

转载2:最近,web后台管理服务器速度挺慢,一开始以为是apache瓶颈的问题,因为发现大量的搜索引擎老是爬过来,于是在防火墙上过滤掉了google、baidu等搜索引擎,没有什么好转的迹象。于是不用apache连接数据库,只测试整数、浮点运算,发现速度很快。因此,开始怀疑是数据库服务器上mysql的问题,但从本地测试mysql,查看连接数又一切正常。接着以为是两台服务器间网络连接的问题,先是修改两台机器上防火墙的设置,无效。开始从网上搜索,发现有人提到“ DNS的反向解谐。在my.cnf中设置:skip-name-resolve就OK了。发现这种连接慢的问题一般都是服务程序设置了DNS反向解析造成的。sshd,ftpd都是如此。教训。 ” 
于是想起来10.11为了设置view,将主dns由windows更换为linux,没有设置后台服务器的反向解析,于是赶紧设上,至此,问题解决。好多问题都是环环相扣的阿。
注:修改后不能使用localhost进行连接。如果要本地连接的话使用127.0.0.1
如:mysql -h 127.0.0.1 -uroot -p
jsp连接的话:http://127.0.0.1:3306/......省
同时修改数据库用户表对应的host为127.0.0.1


Redhat 的server ssh到Ubuntu Server的时候速度很慢,要等大约5秒才提示输入密码
解决办法
修改
I used a rather quick, easy solution - add "UseDNS no" to the end of /etc/ssh/sshd_config. This blocks reverse DNS lookups entirely.

转载3:团队开发为了方便需要统一mysql,局域网内用专门的电脑作为mysql服务器。

mysql默认是不允许远程连接的,因为有很大的安全隐患。。所以我们需要手动开启。

ubuntu下mysql -u root -p 输入密码进入mysql控制台

创建远程登陆用户并授权

<!--more-->

grant all PRIVILEGES on dbname.table to user@ipaddress′ identified by ‘password′;

最简单的  GRANT ALL PRIVILEGES ON *.* TO root@"%"IDENTIFIED BY 'password' WITH                                     GRANT OPTION;

逐一分析所有的参数:

all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。

dbname.* 表示上面的权限是针对于哪个表的,dbname指的是数据库,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。

user表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。

ipaddress表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。

 password为用户的密码。

执行完毕记得重启apache:sudo /etc/init.d/apache2 restart


远程访问的问题解决了,但是发现在局域网使用速度都会很慢,这个按理说不应该。

最终google到了解决办法:

MySQL在处理新的线程连接请求时,会尝试进行DNS解析,如果在host cache和Hosts里找不到,处理起来就会很慢,因此最直接简便的方法就是禁用该反向解析功能,可以通过修改MySQL的配置文件实现,Linux下是my.cnf文件,windows下是my.ini文件,在配置文件[mysqld]下新增如下一行代码:

skip-name-resolve

然后重启MySQL服务,再次连接发现已是秒连了。这个方案的不足之处就是,以后在使用grant对用户进行授权时只能使用IP格式,而不能使用主机名称了。

通过修改系统hosts文件也可以实现,举例来说,我想解决192.168.1.100远程连接MySQL服务器缓慢的问题,只需要在MySQL库所在服务器的hosts文件中新增一条记录如下:

192.168.1.100 test.com

保存退出,再次远程连接该MySQL库,同样很快。之所以说绝,是因为这样设置,你添加记录的192.168.1.100远程连接速度变快了,其他主机连接速度跟之前一样慢。该方法同样可以解决ssh远程连接某主机响应很慢的问题,原理一样。

 

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容