MacPorts:MySQL和PHP没有;t连接


MacPorts: MySQL and PHP doesn't connect

我浏览了相关的帖子及其建议的解决方案(在这里和这里),但它们似乎对我的情况没有帮助。

我在Snow Leopard上运行MacPorts 2.1.2,我安装了以下软件包:

php5-mysql @5.3.15_0+mysql5 (active)
php5 @5.3.15_0+apache2 (active)
mysql5 @5.1.63_0 (active)
mysql_select @0.1.2_0 (active)
apache2 @2.2.22_2+preforkmpm (active)

我可以将我的web浏览器指向localhost,它将连接到默认站点;一个测试index.php

<?php phpinfo() ?>

页面也能很好地工作,所以我认为在这一点上PHP是功能性的。连接到已安装的MySQL服务器时出现问题。phpmyadmin和Joomla似乎都无法连接,尝试php测试脚本也会出现问题。我有点不知所措,不知道如何从这里开始。

MySQL服务器显然正在运行:

~ > ps ax | grep mysql
10884   ??  S      0:00.03 /bin/sh /opt/local/lib/mysql5/bin/mysqld_safe
10930   ??  S      0:07.66 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql5 --user=_mysql --log-error=/opt/local/var/db/mysql5/tigger.local.err --pid-file=/opt/local/var/db/mysql5/tigger.local.pid

我可以使用mysql客户端:

~ > mysql
Welcome to the MySQL monitor.  Commands end with ; or 'g.
Your MySQL connection id is 15
Server version: 5.1.63 Source distribution
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.04 sec)
mysql> show grants for 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)

这是插座

~ > ll /opt/local/var/run/mysql5/mysqld.sock 
srwxrwxrwx 1 _mysql admin 0 Jul 31 16:55 /opt/local/var/run/mysql5/mysqld.sock

php.ini包含MySQL模块和配置

~ > /opt/local/bin/php -i | grep mysql | grep socket
mysql.default_socket => /opt/local/var/run/mysql5/mysqld.sock => /opt/local/var/run/mysql5/mysqld.sock
mysqli.default_socket => no value => no value
pdo_mysql.default_socket => /opt/local/var/run/mysql5/mysqld.sock => /opt/local/var/run/mysql5/mysqld.sock

在我看来,事情应该是这样的。然而,当我尝试使用"root"登录phpmyadmin时,连接失败,在Joomla设置过程中也会发生同样的情况。

任何帮助、提示和建议都将不胜感激:-)

首先,我发现这个线程很有帮助,并让我验证我所做的一切是否正常。

我这边缺少什么:

  1. 我明确地将/opt/local/var/run/mysql5/mysqld.sock添加到了etc/php5/php.ini文件中。不确定这是否改变了什么,但现在所有php都可以访问套接字:

    /opt/local/etc > /opt/local/bin/php -i | grep mysql | grep socket
    mysql.default_socket => /opt/local/var/run/mysql5/mysqld.sock => /opt/local/var/run/mysql5/mysqld.sock
    mysqli.default_socket => /opt/local/var/run/mysql5/mysqld.sock => /opt/local/var/run/mysql5/mysqld.sock
    pdo_mysql.default_socket => /opt/local/var/run/mysql5/mysqld.sock => /opt/local/var/run/mysql5/mysqld.sock
    
  2. 我本可以发誓我做到了,但我还是试过了:/opt/local/lib/mysql5/bin/mysqladmin -u root password '..',现在Joomla和phpmyadmin都连接到了mysqld。

仅此而已!其他线程的测试脚本也可以正常工作。