由于默认mysql的用户是没有开启远程访问的权限的,因此当客户端跟mysql数据库不在同一台服务器上时,客户端将无法正常访问mysql服务器,需要开启mysql的远程访问权限才能正常访问mysql服务器。

主要有两种方法,改表法和授权法。

  • 改表法

    1
    2
    mysql> USE MYSQL;   
    mysql> UPDATE USER SET host = '%' WHERE user = 'root';
  • 授权法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    mysql> USE MYSQL;  
    # 赋予任何主机访问以及修改所有数据的权限
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION
    # 例如,你想root用户使用root从任何主机连接到mysql服务器的话。
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    # 如果你想允许用户root从ip为192.168.1.123的主机连接到mysql服务器,并使用root作为密码
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.123'IDENTIFIED BY 'root' WITH GRANT OPTION;
    # 修改生效
    mysql> FLUSH PRIVILEGES

本人建议采用授权法。