zoukankan      html  css  js  c++  java
  • 新部署的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)

    这样就解决了!

  • 相关阅读:
    关于jQuery动态多次绑定的问题及解决
    零基础英文盲打的建议
    29道Java简答题
    Redis分布式锁的实现(纯文字)
    小程序三级联动(动态获取数据)
    sql中按in中的ID进行排序输出
    layui中对表格操作按钮集的判断
    Linq改进
    C#前台直接调用后台数据时,<p>或双引号出现转义的问题
    sql 中sum函数返回null的解决方案
  • 原文地址:https://www.cnblogs.com/McQueen1987/p/3836839.html
Copyright © 2011-2022 走看看