[转帖]远程连接MySQL数据库_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2345 | 回复: 0   主题: [转帖]远程连接MySQL数据库        下一篇 
zhsgood
注册用户
等级:列兵
经验:102
发帖:70
精华:0
注册:2011-11-28
状态:离线
发送短消息息给zhsgood 加好友    发送短消息息给zhsgood 发消息
发表于: IP:您无权察看 2014-12-31 9:53:15 | [全部帖] [楼主帖] 楼主

按照网上的教程学习一些MySQL相关的东西,但是在连接数据数据库的时候,总是提示类似如下错误:

<pre>ERROR 1130 (HY000): Host 'xxxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server


在Eclipse中也是提示比较奇怪的类似的错误。因为我平时学习,开发相关的软件和系统都是安装在虚拟机中,所以感觉应该是远程连接的问题。查看了虚拟机的远程端口已经打开:

[root@shitouer.cn ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:6381
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:6380
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:6379


网络也处于监听正常状态:

[root@shitouer.cn ~]# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2793/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1964/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2043/master


问题应该是服务器MySQL远程连接需要授权的问题。网上查了一下,确实是,有两种方法解决:
先看下mysql中user表中数据:

mysql> select user, host, password from user;
+--------+-----------+-------------------------------------------+
| user | host | password |
+--------+-----------+-------------------------------------------+
| root | localhost | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| root | slave1 | |
| root | 127.0.0.1 | |
| | localhost | |
| | slave1 | |
| noroot | % | *FD571203974BA9AFE270FE62151AE967ECA5E0AA |
+--------+-----------+-------------------------------------------+


root用户只能在localhost上登录。

6 rows in set (0.00 sec)


1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称”%” (未测试 不想这么搞)

mysql>update user set host = '%' where user = 'root';


2. 授权法。例如,你想noroot使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'noroot'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;


如果你想允许用户noroot从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
grant all PRIVILEGES on mydatabase.mytables to user@remotehost identified by password


下面逐一分析所有的参数:

all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如select, insert, update, delete, create, drop等,具体权限间用“,”半角逗号分隔。
mydatabase.mytables 表示上面的权限是针对于哪个表的,mydatabase指的是数据库,后面跟 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。
user表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。
remotehost 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。
password为用户的密码。
执行了上面的语句后,再执行下面的语句,方可立即生效。 > flush privileges;

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论