日期:2014-05-16  浏览次数:20406 次

navicate 无法远程访问mysql数据库,设置用户

?办公电脑访问项目组服务器上mysql数据库,出现错误,无法连接上,机器is not allowed to 访问。



解决方法:

到服务器上,通过navicate在mysql上添加一个用户,并进行相关授权。否则只能看到部分数据库。添加远程用户如下“10.3.2.24”或者“10.3.2.%”,主机设置成"localhost"就是本地用户。

?

?

下面有一些很重要的知识补充:

?

让我们来提问这些问题,同时看一些利用GRANT 语句设置MySQL用户账号的例子。?

1. 谁可以进行连接,从哪里连接。?

您可以允许用户在特定的主机或涉及范围很宽的一组主机中进行连接。在一个极端,如果知道用户将仅从那个主机中进行连接,则可限定对单个主机的访问:?

?

GRANT ALL ON samp_db.* TO boris@localhost IDENTFIEDBY "ruby"

GRANT ALL ON samp_db.* TO fred@ares.mars.net IDENTFIEDBY "quartz"


(符号samp_db.* 含义是“在samp_db 数据库中的所有表”)在另一个极端,您可能会有一个用户max,他周游世界并需要能够从世界各地的主机中进行连接。在这种情况下,无论他从哪里连接您都将允许:?

?

GRANT ALL ON samp_db.* TO max@% IDENTFIEDBY "diamond"

?

‘%’字符起通配符的作用,与LIKE模式匹配的含义相同,在上个语句中,它的意思是“任何主机”。如果您根本不给出主机名部分,则它与指定“ %”的含义相同。因此,max和max@%是等价的。这是设置一个用户最容易的方法,但安全性最小。?

要想采取妥协的办法,可允许用户在一组有限的主机中进行连接。例如,要使mary 从snake.net 域的任何主机中进行连接,可使用%.snake.net 主机说明符:?

?

GRANT ALL ON samp_db.* TO mary@%.snake.net IDENTFIEDBY "topaz"

?

该用户标识符的主机部分可用IP 地址而不是主机名给出(如果愿意的话)。可以指定一个直接的IP 地址或包含模式字符的地址。同样,自MySQL3.23 起,可以用一个网络掩码来指定IP 号,网络掩码表明了用于该网络号的二进制位数:?

?

GRANT ALL ON samp_db.* TO joe@192.168.0.3 IDENTIFIEDBY "water"

GRANT ALL ON samp_db.* TO ardis@192.168.128.% IDENTIFIEDBY "snow"

GRANT ALL ON samp_db.* TO rex@192.168.128.0/17 IDENTIFIEDBY "ice"


第一条语句指明用户可进行连接的特定的主机。第二条语句指定129.168.128 Class C 子网的IP 模式。在第三条语句中, 192.168.128.0/17 指定一个17 位二进制的网络号,并将任何主机与其IP 地址的前17 个二进制位中的192.168.128.0/17 进行匹配。?

如果MySQL抱怨您指定的用户值,则可能需要使用引号(但对用户名和主机名分别加引号):

?

GRANT ALL ON samp_db.president TO "my friend"@"boa.snake.net"