zoukankan      html  css  js  c++  java
  • [mysql]设置Ubuntu上的MySQL可以远程访问

    今天在win10上用django连接安装在Ubuntu上的MySQL上,始终提示错误(can not connect mysql),但是在Ubuntu上访问是没有问题的。于是开始查找原因:

    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服务器,使用grant命令分配权限

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

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

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

    3 . 本文提供了三种方法来解决授权问题:

      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' WITH 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

      使修改生效,就可以了

      3、另外一种方法:

      在安装mysql的机器上运行:

      1)

    d:mysqlin>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身份登录啦。

      如果经过上面的操作,还不能解决问题,那可能就是服务器的安全设置问题,是不是ip安全策略或防火墙没有开启3306的例外。

  • 相关阅读:
    ASP.NET Core API ---状态码
    ASP.NET Core ---日志
    UnitOfWork知多少 【转】
    ASP.NET Core 2.1 源码学习之 Options[3]:IOptionsMonitor 【转】
    ASP.NET Core 2.1 源码学习之 Options[2]:IOptions 【转】
    ASP.NET Core 2.1 源码学习之 Options[1]:Configure 【转】
    深入理解net core中的依赖注入、Singleton、Scoped、Transient(四)【转】
    sonarqube插件开发(三) 调试插件
    sonarqube插件开发(二) 开发插件
    sonarqube插件开发(一) 环境搭建
  • 原文地址:https://www.cnblogs.com/tianhangzhang/p/5455422.html
Copyright © 2011-2022 走看看