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

MySQL-Front连接远端的MYSQL
    用MySQL-Front连接远端的MYSQL就会有些问题。大多提示1045错误:"Access denied for user duan@192.168.0.104,请检查用户名和口令".怎么回事呢?
  
    首先让我们看一下远端MYSQL的用户表
  
  mysql> select host,user
  -> from user;
  +---------------+------+
  | host | user |
  +---------------+------+
  | localhost | root |
  +---------------+------+
  5 rows in set (0.00 sec)
    由此我们可以看到root用户仅允许本地(localhost)登录,如果要远程登录该mysql服务器的话,就需要新建一个普通权限的用户,新建用户使用如下命令:
  
    mysql> grant select,update,insert,delete on mas.* to duan@localhost identified by "123456";

或GRANT ALL PRIVILEGES ON *.* to duan@localhost identified by "123456";  
    这句命令的意思是:新建用户duan,并且只允许该用户在本地(localhost)登录,密码是123456,并且赋予它对mas库中所有表select,update,insert的权限。我们在这有一个mas库,所以用mas.*代表mas库下的所有表。如果要对所有的表,包括mysql库的表都有操作权限则可以替换成“*.*”.
  
    现在该duan用户,已经可以登录mysql了,但是也还是只能本地登录。若要duan用户可以远程登录mysql,则还需要如下命令:
  
    mysql> update user set host = '%' where user = 'duan';

【也可以直接GRANT ALL PRIVILEGES ON *.* to duan@'%' identified by "123456";】  
    现在我们再查看mysql的管理库:
  
  mysql> select host,user
  -> from user;
  +-----------+------+
  | host | user |
  +-----------+------+
  | % | duan |
  | localhost | root |
  +-----------+------+
  5 rows in set (0.00 sec)
  然后重启mysql: root@# service mysql restart

   通过以上操作,我们知道其实用root用户也可以远程登录mysql的,就是把root的host字段改成%即可,但是强烈不建议如此做,否则会带来严重的安全风险。
  
    好了,我们可以连接我们的远端mysql了,在MySQL-Front上新建连接,输入连接名,远端的Linux的IP地址,输入用户名duan和密码123456,选择连接端口,mysql默认的是3306,OK,连接成功了。
撤销已经赋予权限的用户的权限:
revoke all on *.* from duan@%;