## 改表法 可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库 里的 "user"(远程数据库的名称) 表里的 "host" 项,从"localhost"改称"%"。 ```sql mysql -u root -pvmwaremysql>use mysql; mysql>update user set host = ’%’ where user = ’root’; mysql>select host, user from user; mysql>FLUSH PRIVILEGES; ``` ## 授权法 例如,你想myuser(远程连接的用户名)使用mypassword(远程连接的密码)从任何主机连接到mysql服务器的话: `GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’%’IDENTIFIED BY ’mypassword’ WI TH GRANT OPTION;` 如果你想允许用户myuser(远程连接的用户名)从ip为192.168.1.6(你测试电脑上的IP)的主机连接到mysql服务器,并使用 mypassword(远程连接的密码)作为密码: `GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’192.168.1.6’IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;` >在mysql控制台执行命令中的 'root'@'%' 可以这样理解: root是用户名,%是主机名或IP地址,这里的%代表任意主机或IP地址,你也可替换成任意其它用户名或指定唯一的IP地址;'MyPassword' 是给授权用户指定的登录数据库的密码;另外需要说明一点的是我这里的都是授权所有权限,可以指定部分权限。 >不放心的话可以在mysql控制台执行 select host, user from user; 检查一下用户表里的内容 修改步骤: - d:\mysql\bin\>mysql -h localhost -u root //这样应该可以进入MySQL服务器 - mysql>GRANT ALL PRIVILEGES ON *.* TO ’root’@’%’WITH GRANT OPTION //赋予任何主机访问数据的权限 - mysql>FLUSH PRIVILEGES //修改生效 - mysql>EXIT //退出MySQL服务器 这个时候还没结束呢,一般的服务器上安装的都有防火墙之类的东西,也需要我们开启3306端口才能用了 在linux下要开启防火墙 打开3306 端口,编辑这个文件vim /etc/sysconfig/iptables 输入: `-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT` 保存后在控制台输入 /etc/rc.d/init.d/iptables restart 重启防火墙