mysql 在Linux下 "无法远程却可以本地访问" 或 "无法本地却可以远程访问"

如果你很着急,你可以跳过上边,直接看第6点“最后的总结”
1、mysql的访问权限都在 mysql.user 表中记录。其中 "host" 列代表了访问权限,"%"表示可以"任意"访问,"localhost"或"127.0.0.1"或"机器名 "表示可以本地访问
2、有人认为"%"是任意访问权,这种说法在某些情况下会失效。比如如下情况:

这种情况下,你执行 "mysql -umysql -p12345" 是连不上数据库的,这是因为如上情况存在匿名用户,登陆时未指定host,则默认为本地"localhost",且又找不到 -umysql -hlocalhost 的用户,但是存在 -hlocalhost 的匿名用户,于是就忽略了你输入的 -umysql,按照匿名用户登陆。因此,使用上图上最后一行,空着密码," mysql -umysql"便可以登陆。

3、按照第2点推测,-umysql -h192.168.1.xxx -p12345 是可以找到的(上图倒数第二行),因此远程是可以访问的。
4、如果本地可以访问,但远程不可以访问,且你的用户的 "host"一列为"%",那检查一下你的防火墙,Ubuntu下使用 ufw stop,Fedora下使用 service firewalld stop
5、如果你修改了user表中的某些值,但是依然不生效,那是因为你修改完后没有重启mysql。Ubuntu 下使用 /etc/init.d/mysql restart,Fedora下使用 service mysqld restart


6、最后的总结
    在Linux下,本地访问使用"Unix 套接字文件",不经由TCP网络,对应的-h为localhost或127.0.0.1;远程访问使用TCP,对应的-h为具体的IP地址。添加用户时,为了本地与远程都可以访问数据库,最好添加两项,host分别为"%"和"localhost",这样可以避免本地访问默认成匿名访问:



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值