近日在安装LAMP环境时访问本地MYSQL数据库错误
错误如下:
Warning: mysqli::mysqli(): (HY000/2002): Can‘t connect to local MySQL server
问题描述:
由于将安装mysql服务器文件位置修改在home目录下,造成本地访问问题。
在网上找了很久终于找到解决问题的方法:
1、先确保在本机上使用命令能登陆,如果也出现提示sock文件位置问题,那么需要修改mysql配置文件(/etc/my.cnf)
增加如下配置:
[mysql]
socket=/home/mysqldata/mysql.sock#这是我的sock文件的位置
2、php使用mysqli无法访问问题
解决方法:
找到PHP配置文件(/etc/php.ini)找到mysqli.default_socket这个值
修改为mysqli.default_socket =/home/mysqldata/mysql.sock#这是我的sock文件的位置
问题分析(这是我在网上找到的解决方案):
On Unix, MySQL programs treat the host name localhost specially, in a way that is likely different from what you expect compared to other network-based programs. For connections to localhost, MySQL programs attempt to connect to the local server by using a Unix socket file. This occurs even if a --port or -P option is given to specify a port number. To ensure that the client makes a TCP/IP connection to the local server, use --host or -h to specify a host name value of 127.0.0.1, or the IP address or name of the local server. You can also specify the connection protocol explicitly, even for localhost, by using the --protocol=TCP option.
其实就是说UNIX系统需要将localhost 这个地址进行转换的文件
解决的方法其他有三个
There are a few ways to solve this problem.
- You can just use TCP/IP instead of the Unix socket. You would do this by using
127.0.0.1
instead oflocalhost
when you connect. The Unix socket might by faster and safer to use, though. - You can change the socket in
php.ini
: open the MySQL configuration filemy.cnf
to find where MySQL creates the socket, and set PHP‘smysqli.default_socket
to that path. On my system it‘s/var/run/mysqld/mysqld.sock
. - Configure the socket directly in the PHP script when opening the connection. For example:
$db = new MySQLi(‘localhost‘, ‘kamil‘, ‘***‘, ‘‘, 0, ‘/var/run/mysqld/mysqld.sock‘)
1、修改连接文件中localhost 为127.0.0.1
2、查看my.cnf文件中sock
文件的位子,并赋值到
php.ini
:文件中的mysqli.default_socket去
3、PHP语言直接多一个参数指向sock文件位置。