今天遇到一个问题,
访问我本地
MySql时没有问题,但是要远程连到另一个机器上的MySql的服务器时,怎么样,都连不上,我远程想建立一个Navicat 的mysql连接时,也报了“1033-host '
123.12.12.124' is not allowed to connect to this
MySql server”的错,网上看了下,说的是远程的MySQL的服务器有问题,解决办法,自己总结了下:
方法一:
1、先查看服务器ip所在机器的防火墙是否有阻止MYSQL端口,默认是3306,确保防火墙是允许3306端口进行访问。
2、在本机上,首先以 root 帐户登陆 MySQL
在 Windows 主机中点击开始菜单,运行,输入“cmd”,进入控制台,MySQL 的 bin 目录下,然后输入下面的命令。
在 Linux 主机中在命令提示行下输入下面的命令
>mysql -u root -p spaqgl
spaqgl为 数据库名。
2)创建远程登陆用户并授权
>Grant
all
privileges
on
dis.*
to
'root'@'123.12.12.124'
identified
by
'123456'
with
grant
option;
上面的语句表示将 dis 数据库的所有权限授权给 ted 这个用户,允许 root用户在 123.12.12.124 这个 IP 进行远程登陆,并设置 root 用户的密码为 123456
下面逐一分析所有的参数:
all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select, insert ,update ,delete ,create,drop 等,具体权限间用“,”半角逗号分隔。dis.* 表示上面的权限是针对于哪个的,disc 指的是数据库,后面的 * 表示对于所有的表,对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。
root表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。
123.12.12.124 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。
执行完上面这一句命令后,再执行:flush privileges; 命令,然后,再打开MYSQL的命令行客户端,进入mysql 数据库:
mysql> use mysql
Database changed
mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| % | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-----------+------+-------------------------------------------+
行到如上结果时,表明,别的主机可以远程访问你本机的MYSQL数据了
方法二:进入本机上的MYSQL数据库,
更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%,这样,其它远程机器就可以访问你本地的MySQL数据库了
--转自