【问题标题】:MacPorts: MySQL and PHP doesn't connectMacPorts:MySQL 和 PHP 无法连接
【发布时间】:2012-07-30 16:27:07
【问题描述】:

我查看了相关帖子及其建议的解决方案(herehere),但它们似乎对我的情况没有帮助。

我在 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)

我可以将我的网络浏览器指向本地主机,它会连接到默认站点;一个测试index.php

<?php phpinfo() ?>

page 也可以正常工作,因此我假设此时 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 设置期间也会发生同样的情况。

感谢任何帮助、提示和建议 :-)

【问题讨论】:

  • 连接失败是否有错误信息?术语 localhost 对 mysql 也有一些特殊的含义。也许这是造成问题的某种原因。
  • 从 phpmyadmin 我得到:#1045 无法登录到 MySQL 服务器。从 Joomla 我得到:无法连接到数据库。连接器返回编号:无法连接到数据库:无法连接到 MySQL。
  • 那么你想通过socket还是通过ip连接?
  • 呃.. 我不知道 :) 我想让 Joomla 运行。我想任何一种方式(套接字或 IP)都适合我,但不确定任何一种方式的优势是什么。

标签: php mysql apache2 macports


【解决方案1】:

首先,我发现 this 线程很有帮助,让我验证我所做的一切正常。

我缺少什么:

  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。

就是这样!另一个线程的Test Script 也可以正常工作。

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 2017-09-15
    • 2023-03-15
    • 2017-03-23
    • 2019-01-02
    • 2018-06-15
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多