MySQL主机
  • [MySQL主机]MySQL主机127.0.0.1与localhost区别总结
  • [MySQL主机]搭建mysql服务器
  • 阿里云服务器入口
    180天免费用腾讯云服务器马上领取
    您当前位置:狗鱼MySQL教程 >> MySQL主机 >> MySQL主机127.0.0.1与localhost区别总结
    MySQL主机127.0.0.1与localhost区别总结
    更新日期: 2018年05月12日 来源: 本站原创 作者: 佚名 阅读:
    上一篇没有了 下一篇:搭建mysql服务器
    Mysql主机127.0.0.1与localhost区别总结

    可能有很多朋友都会碰到一个问题不知道127.0.0.1与localhost有什么区别,但是有的时间会发现使用localhost连接不了,但是改成127.0.0.1即可了连接了,那么他们会有什么区别呢,下面我给大家介绍。

    1. mysql -h 127.0.0.1 的时候,使用TCP/IP连接, mysql server 认为该连接来自于127.0.0.1或者是"localhost.localdomain"

    2. mysql -h localhost 的时候,是不使用TCP/IP连接的,而使用Unix socket;此时,mysql server则认为该client是来自"localhost"

    3. mysql权限管理中的"localhost"有特定含义:

    注意:虽然两者连接方式有区别,但当localhost 为默认的127.0.0.1时,两种连接方式使用的权限记录都是以下的1.row的记录(因为记录在前,先被匹配)

    [sql] view plain copy
    *************************** 1. row ***************************  
                     Host: localhost  
                     User: root  
    ......  
    *************************** 2. row ***************************  
                     Host: 127.0.0.1  
                     User: root  
    证明:
    [sql] view plain copy
    shell> mysql -h 127.0.0.1  
    mysql> status;  
    Current user:           root@localhost  
    SSL:                    Not in use  
    Current pager:          stdout  
    Using outfile:          ''  
    Using delimiter:        ;  
    Server version:         5.1.33-log Source distribution  
    Protocol version:       10  
    Connection:             127.0.0.1 via TCP/IP  
    shell> mysql -h locahostmysql> status;  
    Current user:           root@localhost  
    SSL:                    Not in use  
    Current pager:          stdout  
    Using outfile:          ''  
    Using delimiter:        ;  
    Server version:         5.1.33-log Source distribution  
    Protocol version:       10  
    Connection:             Localhost via UNIX socket  

    发现问题

    昨天在帮同事编译安装Linux环境时,遇到一个问题:
    WEB服务器是apache,数据库是MySQL。
    于是写了一个测试连接数据库的PHP页面:
    [php] view plain copy
    $mysql = mysql_connect('localhost','root','');  

    打开 http://localhost/test.php 测试
    提示:Can’t connect to local MySQL server through socket...
    检查环境正常

    以为是数据库没有启动,于是查看一下进程,MySQL在进程里,重启了一下MySQL.
    使用mysql -u root -p 可以进入MySQL操作界面
    直接使用/usr/local/php5/bin/php /web/test.php执行可以连上数据库
    apache也重启了,一样无效
    疑点:为何网页执行失败,命令执行却成功

    这下就郁闷了,使用php命令直接执行就成功,通过网页执行就失败。难道是apache导致?网上搜索了大堆资料也没找到解决方案,重新编译安装apache问题依旧。

    把localhost改成127.0.0.1成功
    把localhost改成127.0.0.1后竟然连接成功了,开始陷入思考困局:localhost失败127.0.0.1却成功?
    ping localhost 地址是127.0.0.1没错
    打开hosts加入
    [html] view plain copy
    127.0.0.1 qttc  

    使用qttc当主机连接也正常,唯独就不认localhost。
    localhost连接方式不同导致
    为了了解PHP连接数据库时,主机填写localhost与其它的区别阅读了大量资料,最后得知:
    当主机填写为localhost时mysql会采用 unix domain socket连接
    当主机填写为127.0.0.1时mysql会采用tcp方式连接
    这是linux套接字网络的特性,win平台不会有这个问题
    解决方法
    在my.cnf的[mysql]区段里添加
    [html] view plain copy
    protocol=tcp  

    保存重启MySQL,问题解决!

    感觉本站内容不错,读后有收获?

    我要小额赞助,鼓励提供更好的内容教程

    上一篇没有了 下一篇:搭建mysql服务器
    Copyright 2013-2017 Powered by 狗鱼MySQL教程,All Rights Reserved.
    广州相如计算机科技有限有限公司 版权所有 粤ICP备08130661号-4
    售前咨询:020-38667011 手机:13711588918