为什么mysql服务器的连接地址位置_详解mysql如何配置远程链接,解决各种连接问题...

在服务器上面我们经常需要去使用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';

flushprivileges;

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

第二条命令为刷新权限

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

3.特殊情况

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

a6640f9de92ef516496b0a257a864ec9.png

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

95c2060cdadeb641aa10ef9c831bdbf3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值