您的位置:首页 > 数据库 > MySQL

MySQL远程访问设置

2010-09-15 09:47 405 查看
1. 3306端口是不是没有打开?

使用nestat命令查看3306端口状态:

~# netstat -an | grep 3306

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

从结果可以看出3306端口只是在IP 127.0.0.1上监听,所以拒绝了其他IP的访问。

解决方法:修改/etc/mysql/my.cnf文件。打开文件,找到下面内容:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1

把上面这一行注释掉或者把127.0.0.1换成合适的IP,建议注释掉。

重新启动后,重新使用netstat检测:

~# netstat -an | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN

2. 问题解决了吗?

现在使用下面命令测试:

~# mysql -h 10.1.1.2 -u root -p
Enter password:
ERROR 1130 (00000): Host 'B0324-Desktop.local' is not allowed to connect to this MySQL server

结果出乎意料,还是不行。

解决方法:原来还需要把用户权限分配各远程用户。

登录到mysql服务器,使用grant命令分配权限

mysql> grant all on database_name.* to user_name@'%' identified by 'user_password';

其中database_name、user_name和user_password根据实际情况设置。

完成后使用mysql命令连接,提示成功,为了确保正确可以再远程登陆测试一下。

注意这个用户不存在就会创建

==============================

MySQL数据库不允许从远程访问怎么办?本文提供了三种解决方法:
  1、改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
  mysql -u root -pvmwaremysql>use mysql;
  mysql>update user set host = '%' where user = 'root';
  mysql>select host, user from user;
  2、授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WI
  TH GRANT OPTION;
  如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY
  'mypassword' WITH GRANT OPTION;
  我用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>FLUSH RIVILEGES
  使修改生效,就可以了
  另外一种方法:
  在安装mysql的机器上运行:
  1、d:/mysql/bin/>mysql -h localhost -u root
  //这样应该可以进入MySQL服务器
  2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION
  //赋予任何主机访问数据的权限
  3、mysql>FLUSH PRIVILEGES
  //修改生效
  4、mysql>EXIT
  //退出MySQL服务器
  这样就可以在其它任何的主机上以root身份登录啦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: