远程使用数据库

来源:互联网 发布:国网网络大学考试烦人 编辑:程序博客网 时间:2024/06/09 16:52

一:问题起源:我在做一个项目,代码使用svn存放在服务器端了。在写代码的时候,需要用到数据库,而我不想登录到服务器写代码,所以我更改了配置文件,使连接的是服务器的数据库。

但是很不幸,当我登录的时候显示:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'192.168.1.105'


问题解决:
第一步:问题提示是该数据库拒绝被192.168.1.105的root用户访问,所以我先利用:
grant all privileges on *.* to 'root'@'192.168.1.105';
然后利用
flush privileges;
刷新授权表单,并利用:
show grants;
来显示授权用户。(我当时的情况是虽然没有显示我的授权信息,但是成功连接上了数据库)

第二步:把mac地址和ip地址绑定,这样防止下次分配ip地址的时候因为变换导致得重新执行第一步。
因为我是osx系统,进入用户偏好设置->网络->wifi->高级->tcp/ip
更改DHCP分配为手动分配。
然后就是填写相关信息了。

二:问题起源:昨天设置完上面的东西后,能够访问数据库。但是今天使用调试自己写的控制器的时候,结果得到的返回信息是connect refuse。
然后用一个专门测试远程连接数据库的页面试了一下,结果是:


后来在网上找了很多资料,其中有一份很全的:http://www.2cto.com/database/201204/127400.html(虽然没能解决我的问题)
后来问黄老师,黄老师说可能是防火墙问题。然后设置了一下防火墙:
ssh zengzhuomin@192.168.1.3       (登陆服务器)

vim /etc/sysconfig/iptables                    (更改防火墙配置文件)


增加了一行:-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙)


添加好之后防火墙规则如下所示:
###################################### 
# Firewall configuration written by system-config-firewall 
# Manual customization of this file is not recommended. 
*filter 
:INPUT ACCEPT [0:0] 
:FORWARD ACCEPT [0:0] 
:OUTPUT ACCEPT [0:0] 
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT 
-A INPUT -j REJECT –reject-with icmp-host-prohibited 
-A FORWARD -j REJECT –reject-with icmp-host-prohibited 
COMMIT 

#####################################


/etc/init.d/iptables restart            #最后重启防火墙使配置生效


然后就好使了~~赞赞的~


如果还有什么不明白,可以问一下万能的度娘。

0 0
原创粉丝点击