MySQL的php无法连接到本地,127.0.0.1工作

我有一个简单的PHP脚本,即不能连接到MySQL。

<?php $link = mysql_connect("localhost", "user", "password"); if (!$link) { die('Could not connect: ' . mysql_error() . ' ' . mysql_errno()); } else { echo "connected"; } 

当我访问与url的网页

HTTP://mydomain/1.php

我得到错误

 Could not connect: Permission denied 2002 

如果我改变“本地主机”与“127.0.0.1”,它的作品。

例如,如果我从命令行运行程序

 php 1.php 

它连接。 为了validation问题,我运行

 [root@server1 ~]# php -r 'var_dump(mysql_connect("localhost:/var/lib/mysql/mysql.sock", "user", "password"));' resource(5) of type (mysql link) [root@server1 ~]# chsh apache --shell /bin/bash Changing shell for apache. chsh: Shell not changed. [root@server1 ~]# su - apache Last login: Fri Mar 17 02:30:39 CDT 2017 on pts/0 -bash-4.2$ php -r 'var_dump(mysql_connect("localhost:/var/lib/mysql/mysql.sock", "user", "password"));' PHP Warning: mysql_connect(): Permission denied in Command line code on line 1 bool(false) -bash-4.2$ ls -l /var/lib/mysql/mysql.sock ls: cannot access /var/lib/mysql/mysql.sock: Permission denied -bash-4.2$ 

我如何解决这个问题,这是与默认的PHP版本的CentOS 7服务器。 MySQL版本是

 [root@server1 ~]# mysql --version mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1 [root@server1 ~]# 

编辑:

这是CentOS 7服务器,SELinux被禁用。

 # sestatus SELinux status: disabled # 

我通过运行解决了它

 chmod 755 /var/lib/mysql 

几个小时前我也有同样的问题(cpanel&cloudlinux)

我简单的解决scheme是修改/etc/my.cnf:

[root @ ds1 home]#cat /etc/my.cnf
的[mysqld]
innodb_file_per_table = 1
默认存储引擎= MyISAM的
性能模式= 0
max_allowed_pa​​cket的= 268435456
open_files_limit = 28574
#绑定地址127.0.0.1 =
绑定地址=本地主机
本地的infile = 0
[客户]
sockets=的/ var / lib中/ MySQL的/的mysql.sock
主机=本地主机
[root @ ds1 home]#

看起来您可能已经创build了与127.0.0.1绑定的用户。 尝试一件事在mysql中创build另一个这样的用户。

 create user 'my_user'@'localhost' identified by 'mypassword'; 

并为该用户授予与之前相同的权限。

注意: 您可以保留相同的用户名,也可以删除较早的用户名,然后创build新的用户名,由用户自行决定