最近上头交给我个任务,把WINDOWS平台下开发的网站,部署在LINUX环境上。
把mysql安装好了,所有表单都导入没问题,然后代码都放在tomcat下的webapps文件夹下了,主页
面可以正常显示,但有两个问题:
- 用户登录或注册的时候总是提示:Connecting to 192.168.2.109……(linux server的ip);
- 查看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数据库
[[email protected] ~]# 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的配置文件将大小写敏感去掉,问题解决。
步骤如下:
- 先进入my.cnf文件修改mysql配置信息:
编辑/etc/my.cnf文件,在[mysqld]节下添加 lower_case_table_names=1 参数
(备注:为0时大小写敏感,为1时大小写不敏感,默认为0)
这样就解决了!
新部署的linux web服务器error Host ‘*.*.*.*’ is not allowed to connect to this MySQL server