zoukankan      html  css  js  c++  java
  • MySQL远程连接问题解决方法

    问题:Host 'XXX' is not allowed to connect to this MySQL server.

    原因分析:

    1.登录到mysql:
    在开始目录下管理员身份运行【MySQL 5.7 Command Line Client】
    Enter password: ********
    输入密码:xxxxxx
    2.查看user表:
    mysql> use mysql;
    mysql> select host,user from user;
    +-----------+---------------+
    | host | user |
    +-----------+---------------+
    | localhost | root |
    | localhost | mysql.session |
    | localhost | mysql.sys |
    +-----------+---------------+
    3 rows in set (0.00 sec)

    user表中host、user字段标识了可以访问数据库的主机和用户。当前的数据就表示只能本地主机localhost通过root用户访问。
    而通过ip等远程连接不允许连接。

    解决方法:

    为了让数据库支持远程主机访问,有两种方法可以开启远程访问功能。

    第一种(改表法):
    修改user表中的host字段值,将localhost修改成安装mysql数据库的ip地址。或者直接修改成%。%表示所有主机都可以通过root用户访问数据库。
    mysql> update user set host= '%' where user = 'root';
    Query OK, 0 rows affected (0.00 sec)
    Rows matched: 1 Changed: 0 Warnings: 0

    mysql> select host ,user from user;
    +-----------+---------------+
    | host | user |
    +-----------+---------------+
    | % | root |
    | localhost | mysql.session |
    | localhost | mysql.sys |
    +-----------+---------------+
    3 rows in set (0.00 sec)

    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)


    第二种(授权法):
    如果你想root使用mypassword从任何主机连接到mysql服务器的话。
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

    如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

    输入命令mysql> flush privileges;
    回车使刚才的修改生效,再次远程连接数据库成功。

    附注:

    window 防火墙务必要开放MySQL连接的端口(默认3306)。

     
  • 相关阅读:
    [zz]redhat6.0无法识别ntfs分区的解决方法
    使用ftp搭建yum源问题解决
    [zz]搭建centos6.0本地yum源(32位)
    JAVA传统线程技术
    JAVA判断字符串是否为数字
    java之异常
    随便记两笔Java中的反射
    【转】单例模式完全解析
    java.lang.Enum
    文件搜索
  • 原文地址:https://www.cnblogs.com/johsan/p/10361354.html
Copyright © 2011-2022 走看看