zoukankan      html  css  js  c++  java
  • window下利用navicat访问Linux下的mariadb数据库

    1.再Linux上成功安装mariadb数据库后,不管是在dos(敲命令mysql -h192.168.136.8 -uroot -p)下或者是navicat(创建连接)下连接mariadb数据库,会报错:

     Can't get hostname for your address

    2.在vim /etc/my.cnf文件下,添加

    [mysqld]

    skip-name-resolve

    解释:连不上mariadb数据库的原因是由于mysql对连接的客户端进行DNS反向解析。

    ①有2种解决办法:
       第一种:把client的ip写在mysql服务器的/etc/hosts文件里,随便给个名字就可以了。
       第二种:在 my.cnf 中加入 –skip-name-resolve 。
       对于第一种方法比较笨,也不实用,那么 skip-name-resolve 选项可以禁用dns解析,但是,这样不能在mysql的授权表中使用主机名了,只能使用IP。
    ②我理解mysql是这样来处理客户端解析过程的,
      当mysql的client连过来的时候,服务器会主动去查client的域名。
      首先查找 /etc/hosts 文件,搜索域名和IP的对应关系。
      如果hosts文件没有,则查找DNS设置,如果没有设置DNS服务器,会立刻返回失败,就相当于mysql设置了skip-name-resolve参数,如果设置了DNS服务器,

      就进行反向解析,直到timeout。

      ③所谓反向解析是这样的:
      mysql接收到连接请求后,获得的是客户端的ip,为了更好的匹配mysql.user里的权限记录(某些是用hostname定义的)。
      如果mysql服务器设置了dns服务器,并且客户端ip在dns上并没有相应的hostname,那么这个过程很慢,导致连接等待。
      添加skip-name-resolve以后就跳过着一个过程了。

    3.一般情况下,应该就能连上mariadb数据库了。如果上述方案还是不行的话,那么就可能是你的数据的权限没有分配,执行以下命令:


    登录Linux的mariadb数据库,使用mysql -uroot -p //这样应该可以进入MySQL服务器

    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION //赋予任何主机访问数据的权限

    mysql>FLUSH PRIVILEGES //修改生效

    mysql>EXIT //退出MySQL服务器

  • 相关阅读:
    Smart Client Architecture and Design Guide
    Duwamish密码分析篇, Part 3
    庆贺发文100篇
    .Net Distributed Application Design Guide
    New Introduction to ASP.NET 2.0 Web Parts Framework
    SPS toplevel Site Collection Administrators and Owners
    来自Ingo Rammer先生的Email关于《Advanced .Net Remoting》
    The newsletter published by Ingo Rammer
    深度探索.Net Remoting基础架构
    信道、接收器、接收链和信道接受提供程序
  • 原文地址:https://www.cnblogs.com/jpfss/p/10128112.html
Copyright © 2011-2022 走看看