MySQL主机127.0.0.1和localhost的区别总结
问题我不知道127.0.0.1和localhost的区别,但是有时候你发现在localhost上无法连接,但是可以连接到服务器127.0.0.1。 0.1 ,那么他们有什么区别呢?下面我想给大家介绍一下。
- mysql -h 127.0.0.1,使用TCP/IP连接,mysql服务器认为连接来自127.0.0.1或“localhost.localdomain”
- mysql -h localhost,当不使用TCP/IP IP连接时您正在使用 Unix 界面;此时mysql服务器认为客户端来自“localhost”服务器
- “localhost”在管理mysql访问权限方面有特殊含义:
注:虽然两者的连接方式不同但是当localhost 默认是 127.0.0.1 ,两种连接方式使用的访问记录都是下面第一行记录(因为记录在前,所以先匹配)
*************************** 1. row *************************** Host: localhost User: root ...... *************************** 2. row *************************** Host: 127.0.0.1 User: root
证明:
shell> mysql -h 127.0.0.1 mysql> status; Currentuser: root@localhost SSL: Notin 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; Currentuser: root@localhost SSL: Notin 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页面来测试连接数据库:
$mysql = mysql_connect('localhost','root','');
打开http://localhost/test.php进行测试
提示:无法通过socket连接到本地MySQL服务器...
检查环境正常
我以为数据库没有启动所以检查了进程。 MySQL 正在处理并重新启动 MySQL。 使用命令myql -u Root -p进入MYSQL界面直接使用/USR/LOCAL/PhP5/♺♺♺ ♺ 。运行就可以连接数据库了 可疑点:为什么网页执行失败,命令执行成功了 现在很郁闷。直接用php命令执行成功,但通过网站执行失败。是阿帕奇造成的吗?我在网上查了很多资料,但没有找到解决办法。重新编译并安装Apache后问题仍然存在。 成功将localhost更改为127.0.0.1 当localhost更改为127.0.0.1时,连接成功。我开始陷入思考的困境:localhost失败了但是127.0.0.1成功了? ? 不同的localhost连接方式导致 为了理解用PHP连接数据库时host填写localhost和其他的区别,查阅了很多资料,最后发现: 当host填写为localhost,mysql使用 当主机填写为127.0.0.1时,mysql使用tcp到Linux网络,所以这是网络连接的属性♿。 。 Win平台没有这个问题 解决办法 在my.cnf的[mysql]部分添加apache也重启了但是还是报错
unix域socketia
连接protocol=tcp
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。