Code前端首页关于Code前端联系我们

MySQL主机127.0.0.1和localhost的区别总结

terry 2年前 (2023-09-26) 阅读数 43 #数据库

问题我不知道127.0.0.1和localhost的区别,但是有时候你发现在localhost上无法连接,但是可以连接到服务器127.0.0.1。 0.1 ,那么他们有什么区别呢?下面我想给大家介绍一下。

  1. mysql -h 127.0.0.1,使用TCP/IP连接,mysql服务器认为连接来自127.0.0.1或“localhost.localdomain”
  2. mysql -h localhost,当不使用TCP/IP IP连接时您正在使用 Unix 界面;此时mysql服务器认为客户端来自“localhost”服务器
  3. “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/♺♺♺ ♺ 。运行就可以连接数据库了apache也重启了但是还是报错

可疑点:为什么网页执行失败,命令执行成功了

现在很郁闷。直接用php命令执行成功,但通过网站执行失败。是阿帕奇造成的吗?我在网上查了很多资料,但没有找到解决办法。重新编译并安装Apache后问题仍然存在。

成功将localhost更改为127.0.0.1

当localhost更改为127.0.0.1时,连接成功。我开始陷入思考的困境:localhost失败了但是127.0.0.1成功了? ?

不同的localhost连接方式导致

为了理解用PHP连接数据库时host填写localhost和其他的区别,查阅了很多资料,最后发现:

当host填写为localhost,mysql使用unix域socketia连接

当主机填写为127.0.0.1时,mysql使用tcp到Linux网络,所以这是网络连接的属性♿。 。 Win平台没有这个问题

解决办法

在my.cnf的[mysql]部分添加

protocol=tcp

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门