简体   繁体   中英

mysql_connect timing out

I am trying to set up a PHP framework on my Mac 10.6 computer, and it keeps erroring during setup due to database connectivity issues. So I put together a small php script to see if I could connect to the server myself, and it couldn't either. The operation times out.

However, I am able to login to mysql from commandline perfectly fine. It's only PHP that is having these connection issues. Does anyone have any ideas?

Here is the script.

<?php
  $connection = mysql_connect("http://localhost", "root", "");
if( $connection ) {
  mysql_close( $connection );
  die('TRUE');
}else {
  die('Could not connect: ' . mysql_error());
}

?>

EDIT: I tried removing http:// but then I get a "No such file error."

PHP Warning:  mysql_connect(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Users/newuser/Downloads/t.php on line 2
PHP Warning:  mysql_connect(): No such file or directory in /Users/newuser/Downloads/t.php on line 2
Could not connect: No such file or directory

You are using this :

mysql_connect("http://localhost", "root", "");

But your MySQL host is not http://localhost : it's probably localhost .


Try to remove that http:// , using this :

mysql_connect("localhost", "root", "");


As a sidenote : working with the root account is not a good practice -- even on a development platform.


EDIT after the comment : In that case, try with 127.0.0.1 (the IP address of localhost )


And if you really want to use Unix sockets, you'll have to find which socket is used by your MySQL server (it should be indicated in its configuration) ; for instance, in my /etc/mysql/my.cnf , I have :

[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock

Then, you'll want PHP to use the same one :

Take the "http://" out of the mysql_connect parameter. It wants a host, not an HTTP URL.

删除http://并仅使用主机名localhost

Use "127.0.0.1" it will force using TCP4 insted of sockets.

If you want to use sockets, according to this document the default socket on Mac OS X is:

/tmp/mysql.sock

Fot this to be default you should edit your php confiuration or have an .htaccess file with:

php_value mysql.default_socket "/tmp/mysql.sock"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM