首页 > 代码库 > 新部署的linux web服务器error Host ‘*.*.*.*’ is not allowed to connect to this MySQL server

新部署的linux web服务器error Host ‘*.*.*.*’ is not allowed to connect to this MySQL server

     最近上头交给我个任务,把WINDOWS平台下开发的网站,部署在LINUX环境上。

把mysql安装好了,所有表单都导入没问题,然后代码都放在tomcat下的webapps文件夹下了,主页

面可以正常显示,但有两个问题:

  1. 用户登录或注册的时候总是提示:Connecting to 192.168.2.109……(linux server的ip);
  2. 查看Tomcat  log文件catalina.out里有一堆

[WARN][2014-07-09 21:28:58,706][org.hibernate.engine.jdbc.spi.SqlExceptionHelper]SQL Error: 1146, SQLState: 42S02

[ERROR][2014-07-09 21:28:58,707][org.hibernate.engine.jdbc.spi.SqlExceptionHelper]Table ‘bjxt.T_DEADLINE‘ doesn‘t exist

[WARN][2014-07-09 21:28:59,302][org.hibernate.engine.jdbc.spi.SqlExceptionHelper]SQL Error: 1146, SQLState: 42S02

[ERROR][2014-07-09 21:28:59,302][org.hibernate.engine.jdbc.spi.SqlExceptionHelper]Table ‘bjxt.T_DEADLINE‘ doesn‘t exist

……

本文就主要讨论这两个问题。

 

第一个问题:

Connecting to 192.168.2.109……表明连接后端有问题,可能是tomcat出了问题,也可能是

mysql问题导致一直处在连接状态。我做了以下事情:

1先关闭防火墙,再测试,发现情况依旧,证明不是端口问题

#/etc/init.d/iptable stop                   //关闭防火墙

#/etc/init.d/iptable restart                //重启防火墙

2修改网站的配置文件localhost为192.168.2.109或127.0.0.1分别测试,无果。证明不是前

端ip问题,判断应该是后端的问题。

3检查tomcat连接状态,重启tomcat;

4检查端口监听状态,3306监听正常;

5开始排查mysql的问题:删除mysql中默认的和多余的用户,避免干扰,问题依然存在。

6查看mysql的log文件,发现如果通过客户端工具连接Linux下的MySQL数据库出现以下错误:

Host ‘192.168.2.109‘ is not allowed to connect to this MySQL server:

 

    我从terminal用同样的用户名密码登录mysql可以,通过tomcat用这个用户名密码登录却

说Host ‘192.168.2.109‘ is not allowed to connect to this MySQL server!

    推断应该是tomcat访问mysql是通过3306端口,和外部机器访问mysql一样,而terminal

访问mysql是服务器内部访问,不需要走3306端口,所以访问mysql如同本地访问,也不需要

特殊权限。

 

总结分析,应该是mysql默认不允许任何访问,需要mysql开放相应权限:

 

给用户可访问权限,具体步骤如下:

1.在Linux本机下访问mysql数据库

[root@mail ~]# mysql -u 你的用户名 -p 你的密码

//连接上数据库后,为本机用户授予权限,使其可以访问mysql
mysql->grant all on *.* to ‘root‘@‘192.168.2.109‘ identified by ‘123456‘;

//意思是ip为192.168.2.109的用户可以通过root用户远程连接数据库中所有表了。

 

 

第二个问题:

    报错说找不到bjxt.T_DEADLINE这个表,查看数据表以后发现,bjxt库下有t_deadline

这个表单。后来修改了MySQL的配置文件将大小写敏感去掉,问题解决。

步骤如下:

  1. 先进入my.cnf文件修改mysql配置信息:

 

编辑/etc/my.cnf文件,在[mysqld]节下添加 lower_case_table_names=1 参数

(备注:为0时大小写敏感,为1时大小写不敏感,默认为0)

这样就解决了!