解决办法总结:
1、确定远程机器的防火墙关闭,或在防火墙允许3306端口号(服务器)2、确定数据库允许远程访问(本地)
3、通过语句grant all privileges on *.* to 'root'@'%' identified by '123456'。
一 在防火墙允许3306端口:
1 进入iptables.
2 在22端口上面加:-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
增加3306端口。
3 >service iptables restart
//重启
完成
==================================================================================================================================
二 数据库允许远程访问:
使用Navicat for MySQl访问远程mysql数据库,出现报错,显示“2003- Can't connect MySQL Server on 'localhost'(10038)“。
其原因是:远程3306端口未对外开放
解决办法:
首先远程连接服务器,点击“开始”-“管理工具”-“高级安全Windows防火墙”。
在打开的窗口中,左边选中“入站规则”,右边点击“新规则”来新建一个入站规则。
在“规则类型”中选择“端口”,然后下一步。
选中“特定本地端口”,输入3306,然后下一步。
选中“允许连接”,然后下一步。
这一步默认都选中就行,,然后下一步。
最后输入新增的入站规则名称,随便填,自己明白即可。
完成后可以在入站规则列表中可以看到新增的入站规则。
==================================================================================================================================
三 grant
1、> MySQL -uroot -p
>password
2、>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION
//任何主机访问数据的权限
例如,你想user使用password从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%'IDENTIFIED BY 'password' WITH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用password作为密码
GRANT ALL PRIVILEGES ON *.* TO 'user'@'192.168.1.3'IDENTIFIED BY 'password' WITH GRANT OPTION;
3、>FLUSH PRIVILEGES
//修改生效
4、mysql>EXIT
5、打开3306端口开放
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
6、让其生效
flush privileges;
完美