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