欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

ubuntu10.10下mysql远程连接和访问慢的解决方法

程序员文章站 2022-06-16 11:49:54
...

修改 my.cnf [mysqld] skip-name-resolve #Don’t resolve hostnames 重启,问题解决。 于是想起来10.11为了设置view,将主dns由windows更换为linux,没有设置后台服务器的反向解析,于是赶紧设上,至此,问题解决。好多问题都是环环相扣的阿。 注:修改后不


修改 my.cnf
[mysqld]
skip-name-resolve #Don’t resolve hostnames
重启,问题解决。


于是想起来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.

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

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

创建远程登陆用户并授权

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远程连接某主机响应很慢的问题,原理一样。