Joe*_*ons 9 mysql sockets connection localhost
操作系统: Ubuntu 14.04 LTS
php版本控制: phpbrew
php版本: 5.5.10
我ping了localhost,它解析为127.0.0.1.
这表明我的主机(/ etc/hosts)文件是正确的.
127.0.0.1 localhost
Run Code Online (Sandbox Code Playgroud)
每当我尝试使用像下面的PHP脚本连接到MySQL时它不起作用并给我错误:没有这样的目录.
//connect to the database
mysql_connect("localhost","root","password") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
但是,当我通过127.0.0.1连接时,它将工作
//connect to the database
mysql_connect("127.0.0.1","root","password") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
另外,使用"localhost"登录时我的phpmyadmin不起作用我必须在登录时更改文件以添加127.0.0.1选项.
如何使用localhost连接MySQL数据库?
在许多情况下localhost,提示使用 UNIX 套接字连接到 MySQL 服务器进程,其中127.0.0.1强制 TCP 连接。有时 UNIX 套接字位于意外的位置,或者根本无法访问,这会导致“找不到文件”错误。
套接字通常类似于/tmp/mysql.sock或可能位于其他位置,具体取决于您的发行版以及您对其进行了多少定制。
请记住,通过 UNIX 套接字(根据定义是服务器本地的)和 TCP 的访问由两个不同的规则控制。localhost在 a 中GRANT是指 UNIX 套接字。%或某些特定的主机名通过 TCP 引用远程。
PHP仍在尝试使用默认套接字位置。如果您已将MariaDB / MySQL文件夹从/ var / lib / mysql移至另一个位置,则可能出现此问题。为了解决该问题,您必须在/etc/php.ini文件中定义新套接字的位置。
mysqli.default_socket =/newDBLocation/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)
注意,根据您使用的驱动程序,您可能必须指定pdo_mysql.default_socket =!
为了检查您的当前目录,请在mysql中运行以下命令:
select @@datadir;
Run Code Online (Sandbox Code Playgroud)
Joe*_*ons -1
这个问题的答案是位于 my.cnf 中
/etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)
该行是
bind-address = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
或者
bind-address = localhost
Run Code Online (Sandbox Code Playgroud)
本来应该是
bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
这将允许所有连接
| 归档时间: |
|
| 查看次数: |
14897 次 |
| 最近记录: |