在服务器上面我们经常需要去使用mysql,有些童鞋刚刚配置好了服务器,想在本地的一些图形化软件去连接mysql得到更直观的表格显示,此时很可能不允许连接,为了探究为什么连接失败,在这里我会对mysql里的mysql数据库的user表进行分析,相信看完之后,大致的权限以及主机的连接问题,都会迎刃而解

  1.问题分析

  基本每个mysql都会有名为mysql的数据库,里面存放的是mysql的核心东西,其中user表里面就有mysql连接的用户信息,里面的字段有如下

    1.Host    (允许连接的主机,%代表全部主机可以连接)

    2.User    (连接的用户名)

    3.password  (连接的密码,密码用mysql自带的password函数加密)

    4.Select_priv   (是否允许查询,Y表示允许,N表示拒绝)

    5.Alter_priv  (是否允许插入数据,Y表示允许,N表示拒绝)

  剩下都是一堆权限,和Select_priv的设置一样,其实组合起来就很容易理解了,处在host地址的用户User可以通过密码password访问数据库对应的权限。

  举个粟子:例如有以下记录(省略部分权限字段)

+------+-------------------------------------------+--------------+-------------+

| user | password | Host | Select_priv |
+------+-------------------------------------------+--------------+-------------+
| root | *B16BCB720468FF0ED1F0A3A179FFDC66F044CC5C | localhost | Y |

 

  ip地址在localhost的用户root可以通过password函数加密之后密码*B16BCB720468FF0ED1..为访问数据库,并可以使用Select_priv权限 。

  相信看到这里你已经明白了为什么,怎么不能连接mysql呢?其实就是你的条件没有符合user表里的记录,只要符合 用户名(user),密码(password),主机地址(Host),你就能访问数据库,至于权限,那就得看后面对应的字段。

  至于多条记录之间同一个用户是取交集还是取最新一条,我还没测试过,我出问题的时候查询数据库是有以下记录。

 +------+-------------------------------------------+--------------+-------------+

| user | password | Host | Select_priv |
+------+-------------------------------------------+--------------+-------------+
| root | *B16BCB720468FF0ED1F0A3A179FFDC66F044CC5C | % | Y |
| root |  | localhost  | N|

   那时候远程访问需要密码,但是可以全部权限可以访问,但是在本地用命令行mysql -uroot -p密码 连数据库输了密码就错,一狠心不输入密码,居然可以了,但是什么权限都没有。一查数据库看到上面的数据顿时知道出什么事了...

  最后一条记录localhost限制了访问权限,之后我一样在本地访问,但是指定了一下ip地址,让mysql认为我是127.0.0.1,就可以访问全部权限了...

  2.解决问题

  相信看到很多人就知道怎么做了,如果要远程访问数据库,只需要把拥有全部权限的root账号对应的记录的Host字段改为%就可以了。在我这里数据库显示是这样子(忽略若干权限...一般root账户如果后面Select_priv为Y,其他一般都全为Y)。

mysql> select user,Host,password,Select_priv from user;

+------+--------------+-------------------------------------------+-------------+
| user | Host | password | Select_priv |
+------+--------------+-------------------------------------------+-------------+
| root | localhost | *B16BCB720468FF0ED1F0A3A179FFDC66F044CC5C | Y |
| root | iz289q95684z | | Y |
| root | 127.0.0.1 | | Y |
| root | ::1 | | Y |
| | localhost | | N |
| | iz289q95684z | | N |
+------+--------------+-------------------------------------------+-------------+

  只要把第一条记录改为的Host改为%就好了

  以下是命令:  

update user  set Host = '%' where Host = 'localhost' & user = 'root';
flush privileges;

  以上第一条命令为修改允许访问的主机地址

  第二条命令为刷新权限

  只要执行上面的两条命令就能远程访问服务器。当然啦,具体情况具体分析,可能你本地的数据库记录和我的不同,那么你只需要按着上面的介绍去调整就好了,最后别忘了执行flush privileges刷新一下。

  3.特殊情况

  如果你还是没有解决问题,远程连接还是连接不上,那么很有可能是你的mysql配置文件绑定了本地,你可以找到本地的mysql配置文件去进行修改,mysql配置文件叫my.cnf,如果找不到路径可以用locate my.cnf去查找,在我这里就是/etc/mysql/my.cnf。在里面你会看到一系列的mysql配置信息,找到里面的bind-address,这个就是万恶之源。把他注释掉(在前面加#)再重启mysql就OK了。

    万恶的mysql,终于看到连接成功页面了。。。

详解mysql如何配置远程链接,解决各种连接问题的更多相关文章

  1. 详解MySQL中concat函数的用法(连接字符串)

    MySQL中concat函数 使用方法: CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意: 如果所有参数均为非二进制 ...

  2. MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!

    MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!2017年06月15日 19:59:44 蓝色-鸢尾 阅读数:2062版权声明:本文为博主原创文章,如需转 ...

  3. [深入学习Web安全](5)详解MySQL注射

    [深入学习Web安全](5)详解MySQL注射 0x00 目录 0x00 目录 0x01 MySQL注射的简单介绍 0x02 对于information_schema库的研究 0x03 注射第一步—— ...

  4. Mysql常用show命令,show variables like xxx 详解,mysql运行时参数

    MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法. 详细: http://dev.mysql.com/doc/ ...

  5. SQL Server 2008 允许远程链接 解决方法

    用户在使用SQL Server 2008远程链接时,可能会弹出如下对话框: 在链接SQL服务器时发生网络链接错误或特定实例错误.SQL服务器不存在或者链接不成功.请验证用户名是否正确或SQL服务器是否 ...

  6. 详解MySQL索引

    原文链接详解MySQL索引 索引介绍 索引是帮助MySQL高效获取数据的数据结构.在数据之外,数据库系统还维护着一个用来查找数据的数据结构,这些数据结构指向着特定的数据,可以实现高级的查找算法. 本文 ...

  7. MySQL数据类型 int(M) 表示什么意思?详解mysql int类型的长度值问题

    MySQL 数据类型中的 integer types 有点奇怪.你可能会见到诸如:int(3).int(4).int(8) 之类的 int 数据类型.刚接触 MySQL 的时候,我还以为 int(3) ...

  8. MySQL存储过程详解 mysql 存储过程

    原文地址:MySQL存储过程详解  mysql 存储过程作者:王者佳暮 mysql存储过程详解 1.     存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储 ...

  9. 【文章阅读】详解MySQL数据类型

    详解MySQL数据类型 - 五月的仓颉 - 博客园 http://www.cnblogs.com/xrq730/p/8446246.html 注:对于MySQL的数据类型做了详细的讲解,这是我看过的最 ...

随机推荐

  1. HTML基础标签

    [HTML写法标签][HTML字体段落标签][锚点][有序无序列表][表格] 一.HTML写法标签:双标签:<标签名>内容</标签名>单标签:<标签名 内容/> 二 ...

  2. Redis初识

    安装与使用 Redis-x64-3.2.100:服务端 + 客户端 redis-3.2.5:源代码 Redis Desktop Manager - v0.8.8:客户端(基于Qt5的跨平台Redis桌 ...

  3. 通过Java代码实现对数据库的数据进行操作:增删改查

    在写代码之前,依然是引用mysql数据库的jar包文件:右键项目-构建路径-设置构建路径-库-添加外部JAR 在数据库中我们已经建立好一个表xs :分别有xuehao  xingming    xue ...

  4. axis2+struts拦截地址冲突问题

    axis2和struts在整合过程中,struts会把axis的地址也拦截了,默认当成一个action处理, 会因为找不到action而报错: <!-- struts配置 --> < ...

  5. mysql can't create threads in threadpool

    最近,我们在券商端的mysql运行一段时间后,发生mysql can't create threads in threadpool,如下所示: 据官网一个报告显示,目测是一个bug,内存紧张导致,那天 ...

  6. Struts2框架深入详解版

    一.认识Struts2 1. 什么是Web框架? 1.1  模型1 1.2  模型2 和MVC 1.3   Web框架的诞生 2. Struts1 到Struts2 2.1 其他 Web框架 2.2 ...

  7. 禁止backspace键(退格键),但输入文本框时不禁止(兼容IE)

    Ext实现方式: Ext.getDoc().on('keydown',function(e){      if(e.getKey() == 8 && e.getTarget().typ ...

  8. VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式

    [1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...

  9. Titanium.App.Properties 对象

    Titanium.App.Properties是用来管理键值对数据的一个很方便的对象.在保存数据的时候,在Ti.App.Properties.setString相对应的Key的值中设置你要保存的值即可 ...

  10. 基于ARM处理器的反汇编器软件简单设计及实现

    写在前面 2012年写的毕业设计,仅供参考 反汇编的目的 缺乏某些必要的说明资料的情况下, 想获得某些软件系统的源代码.设计思想及理念, 以便复制, 改造.移植和发展: 从源码上对软件的可靠性和安全性 ...