雪豹下Macports mysql5设置

Posted

技术标签:

【中文标题】雪豹下Macports mysql5设置【英文标题】:Macports mysql5 setup under Snow Leopard 【发布时间】:2010-12-08 04:44:56 【问题描述】:

由于我是新手,我已经设法把我的安装搞砸了,搞砸是我擅长的。

1) 任何人都可以参考一套可靠的设置说明吗?

2) 我可以通过 macports 卸载并从头开始(密码和所有)吗?我试过了,卸载后一堆mysql目录卡住了,WTF!?

3) mysqld.sock 需要驻留在哪里,我需要应用哪些文件设置才能使其与 php5 和 apache2 配合得很好? 它是在 /tmp 还是 /opt/local/var/run/mysql5/ 中? 我需要配置/opt/local/etc/php5/php.ini 吗?选择/本地/var/db/php5/mysql.ini? /opt/local/etc/mysql5/my.cnf?

4) 我已经运行 > sudo -u mysql mysql_install_db5。如果我再次运行它会搞砸我吗? 我运行了 mysqladmin -u root password 'mypw' 并得到一个错误,说 mysql 无法通过套接字连接。那么这是否意味着我的密码现在已设置?有没有办法告诉我?

5) 密码语句的语法因博客而异。我的密码是“mypw”还是 mypw(不带引号)? (我的密码其实不是mypw)

6) 启动和停止 mysql 的适当命令是什么?我不希望它在我的机器启动时启动。


感谢 Jergason,这非常有帮助。

我真的很想与 mysql 的 macports 安装保持一致,因为它限制了我可以对我的机器造成的损害。

所以现在悬而未决的问题是......

1) macports mysql 安装的默认套接字位置是什么?

2) 启动和停止 mysql 的适当命令是什么?我不希望它在我的机器启动时启动。一些博客说使用launchctl -load 其他人说sudo /path/mysql_safe5。如果您没有设置密码(我不打算这样做),是否需要使用 -user -p 参数?

3) 使 macports mysql 工作所需的目录所有权和权限是什么。 macports 似乎没有设置任何这些。


书呆子

检查 /tmp 以获取 MacPorts mysql 套接字

没有帮助。如前所述,我了解 /tmp 是套接字的默认位置。我的问题是,当我尝试启动 mysql 时,套接字没有在那里实现,也没有出现在 /opt/local/var/run/mysql5/ 中。这告诉我我在启动 mysql 时遇到问题,这意味着设置有问题。可能是什么,我不知道。恐怕我不是天生就对这些事情有先验知识。

-在 Snow Leopard 下使用 macports 安装 mysql5 的套接字应该在哪个特定目录中?

如果您正在使用 5 个不同站点的有关如何运行 mysql 的提示,并且您很惊讶自己迷路了……好吧,我将把它留给尝试一次只关注一个站点然后退出进行下一个之前的所有更改。

没有帮助。我完全按照你的建议开始了。你认为我做了什么,混合和匹配来自 5 个博客的说明?这就是我询问干净卸载的原因。我想知道以前安装的状态更改是否会影响未来的“干净”安装。

-What SPECIFIC blog描述了在雪豹下使用macports确认mysql5的正确安装过程。

我认为您在使用 MacPorts mysql 时遇到的唯一问题(您遇到了什么问题??)是它有一个您意想不到的套接字,而且它使用的是默认配置。

没有帮助。我也是,看我的原帖。我认为问题在于 mysql 的启动方式(或未启动)。

-您对如何解决问题有什么具体建议吗?

这应该在 MacPorts 完成安装后解释。

没有帮助。不是,或者如果是的话我没看到。可能是因为我用的是 Porticus。

-你能更具体一点吗?我应该在什么时候看到 WHAT 消息?

请参阅 $prefix/share/doc/mysql5/ 以获取想法和/或联系开发人员列表。也可以考虑联系端口的维护者;自从他们管理它以来,他们可能最了解它。

没有帮助。 RTM,谷歌是你的朋友,等等。是的,先去了那里。虽然我承认我可能忽略了一些事情,因为当我确定我的问题是一个简单的问题时,当我有其他工作要做时,我不倾向于花几天时间阅读一些写得不好的文档。

如果您想给我一份我可能忽略的具体文件,那将很有帮助。

我希望得到像 Jergason 提供的一些简单、集中的帮助。我(和其他阅读本文的人)很欣赏 Jergason 愿意传达他的知识,以加快人们对各种技术的学习过程。对他来说,这些知识是基本的,但对新手来说,这是一个巨大的节省时间。智能的真正标志是理解技术知识不是先验的,即使是基本的帮助也有很大的帮助。再次感谢 J-man。

【问题讨论】:

你看过 MAMP 吗?我很难在短时间内在雪豹上启动并运行 mysql,而 MAMP 运行良好。 【参考方案1】:

我自己刚刚安装了 mysql5,因为这总是很痛苦,所以我注意到了我遵循的过程。这是在 Leopard 上完成的,但我想在 Snow Leopard 和 Lion 上的过程是相同的。它并没有回答所有原始问题,但至少它是一个指南。

安装 Mysql

首先,安装mysql5服务器:

sudo port install mysql5-server

只安装mysql5 不会安装服务器。

注意控制台输出,它包括设置 macports 的说明。您可能希望将其复制并粘贴到文本文件中。以下内容以此为基础。

您可以使用mysql55-servermysql56-servermariadb-serverpercona-server 等端口来获取更新版本的mysql 或fork,而不是mysql5-server。如果这样做,请注意控制台输出,因为以下说明基于 mysql5-server,需要进行调整以使用正确的可执行文件和路径。

如果这是新安装,请设置数据库:

sudo -u _mysql mysql_install_db5

这会输出一些通用指令,我认为这些指令并不完全适合 macport。在我看来,将 mysql5 作为守护进程加载的最佳方法是使用 macport 的方法:

sudo port load mysql5-server

除了启动 mysql5,它还会永久加载它——它将在启动时运行。稍后停止:

sudo port unload mysql5-server

如果不想作为守护进程运行,可以在命令行运行:

sudo /opt/local/lib/mysql5/bin/mysqld_safe

通过在命令行登录来检查它是否正在运行:

mysql5 -u root -p

默认情况下,密码为空,所以在提示时按回车即可。设置root密码:

/opt/local/lib/mysql5/bin/mysqladmin -u root password 'correct horse battery staple'

下面是设置 macports php 和本机 php 安装的说明。

设置 Macports PHP

假设您已经安装并运行了 macports php。您需要安装php5-mysql(或类似php54-mysql,具体取决于您使用的php 版本):

sudo port install php5-mysql

这将安装 mysql、mysqli 和 pdo 驱动程序。

现在查看您的/opt/local/etc/php5 目录,如果您还没有php.ini 配置文件,请将php.ini-developmentphp.ini-production 复制到php.ini。现在编辑php.ini 并搜索要添加的相应行:

pdo_mysql.default_socket=/opt/local/var/run/mysql5/mysqld.sock

和:

mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock

和:

mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock

如果您不想配置这些,可以在连接时在 php 脚本中明确设置。

如果您在连接时遇到问题,您可能需要查看附近的其他设置,并与 php.ini-developmentphp.ini-production 进行比较,看看有什么变化。

然后使用下面的脚本,或者类似的东西来测试你可以用php连接。

设置系统 PHP

OS X 的 php 带有内置的 mysql 和 mysqli 支持(但不是 pdo),所以您需要做的就是设置 macport unix 套接字。默认位置是/opt/local/var/run/mysql5/mysqld.sock。在/etc/php.ini找到正确的地方(如果你还没有,从/etc/php.ini.default复制)添加:

mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock

和:

mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock

如果您不想配置这些,可以在连接时在 php 脚本中明确设置。

测试脚本

这是一个 php 脚本来检查它是否可以连接。显然,您通常不会在 php 脚本中使用 root 帐户,因此您可能需要先创建另一个 mysql 帐户来测试连接。 PDO 连接不适用于原生 php,因为它没有 PDO 驱动程序。

<?php

$username = 'root';
$password = 'correct horse battery staple';

/* Try mysql: */

$connection = mysql_connect('localhost', $username, $password);
if ($connection === FALSE) 
    echo "Error connecting using mysql.\n\n";
    echo "Error ".mysql_errno().": ".mysql_error()."\n\n";


else 
    echo "Connected using mysql.\n\n";
    mysql_close($connection);


/* Try mysqli: */

$connection = mysqli_connect('localhost', $username, $password);
if ($connection->connect_error) 
    echo "Error connecting using mysqli:\n\n";
    echo "Error ".$connection->connect_errno.": ".$connection->connect_error."\n\n";

else 
    echo "Connected using mysqli.\n\n";
    $connection->close();


/* Try pdo:
 * Won't work for the version of php supplied with OS X. */

try 
    $pdo = new PDO('mysql:host=localhost', $username, $password);
    echo "Connected using PDO.\n\n";
    $pdo = null;

catch(PDOException $e) 
    echo "Error connecting using PDO:\n\n";
    echo "Error ".$e->getCode().": ".$e->getMessage()."\n\n";

【讨论】:

干得好,先生。还要记住,您不需要为 MySQL 使用本地套接字,但将您的连接标识为 localhost 将始终尝试使用。使用127.0.0.1(是的,技术上相同,但不是很好的 ole PHP)强制 TCP 连接并绕过配置错误的套接字。【参考方案2】:

我自己也遇到了同样的问题。为了让我的 MySQL 正常工作,我只需要这样做

sudo chmod -Rf 777 /opt/local/var/db/mysql5

尝试执行 sudo -u _mysql mysql_db5 失败,但我可以这样做

mysqladmin -u root  password the_new_password

没有任何问题。

如果您不希望 MySQL 在您开机时自动启动,只需执行以下操作:

sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5.plist

然后启动/停止 MySQL:

开始:

sudo /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper start

停止:

sudo /opt/local/etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper stop

希望这会有所帮助。

【讨论】:

我也遇到了 sudo -u _mysql mysql_db5 失败的问题。我按照马特的指示,分贝开始了。 (OSX 10.6.8) 另外,我将此路径添加到我的 .bash_login 中,这样我就不必每次都输入完整路径。 '导出 PATH=/opt/local/lib/mysql5/bin:$PATH' 。然后做了一个源 .bash_login 来重新加载路径。 MacPorts 还包括一个方便的命令,用于加载和卸载launchctl plist,试试:sudo port load mysql5-server(也适用于apache2,顺便说一句)【参考方案3】:

1)Hivelogic 有一个很好的从源代码为 Snow Leopard 编译 mysql 的演练。这实际上并不难,如果你自己做,你就会知道它在哪里。

2) 你应该可以运行sudo port uninstall mysql5。它可能会因为依赖关系而对你大喊大叫。如果是这样,您将必须先卸载这些。卸载 MySQL 应删除所有配置设置,包括密码。

3) mysqld.sock 需要驻留在哪里,我需要应用哪些文件设置才能使其与 php5 和 apache2 配合得很好? mysqld.sock 的位置不如通往它的道路。在 php.ini 文件中设置 mysqld.sock 的路径。如果您在 /opt/local/bin 中有一个 php.ini 文件,那么您安装了 macports 版本的 php。您可以使用那个,也可以使用默认的 Apple 版本。无论哪种方式,您都需要配置 php.ini 文件,以便告诉您的 php 安装在哪里使用它。你的 php.ini 文件中应该有一行写着

mysql.default_socket = <whatever>

如果不存在,您可以添加它。您应该将此行设置为等于 mysqld.sock 的位置。我的看起来像这样:

mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock

您的 Apache 配置

4) 我已经运行 > sudo -u mysql mysql_install_db5。如果我再次运行它会搞砸我吗?我运行了 mysqladmin -u root password 'mypw' 并得到一个错误,说 mysql 无法通过套接字连接。那么这是否意味着我的密码现在已设置?有什么办法可以告诉我吗?如果你无法连接到套接字,那么你的密码没有设置。

5) 密码语句的语法因博客而异。我的密码是“mypw”还是 mypw(不带引号)? (我的密码实际上不是 mypw) 您不需要在命令行中将密码括起来。

【讨论】:

【参考方案4】:

检查 /tmp 以获取 MacPorts mysql 套接字。

如果您正在使用 5 个不同站点的有关如何运行 mysql 的提示,并且您很惊讶自己迷路了……好吧,我将把它留给尝试一次只关注一个站点然后退出进行下一个之前的所有更改。

我认为您在使用 MacPorts mysql 时遇到的唯一问题(您遇到什么问题??)是它有一个您意想不到的套接字,并且它使用的是默认配置。这应该在 MacPorts 完成安装后解释。请参阅$prefix/share/doc/mysql5/ 了解想法和/或联系developer list。

还可以考虑联系端口的维护者;自从他们管理它以来,他们可能最了解它。

【讨论】:

【参考方案5】:

命令行中使用的 php.ini 可能与 apache 使用的不同 你可以检查这个 phpinfo.php

<?php
    phpinfo();
?

通过做一个

php phpinfo.php | grep php.ini

如果显示

Configuration File (php.ini) Path => /opt/local/etc/php5

而 Daniel James 回答的测试脚本(另存为 testconnect.php)也失败了

那么你可能想通过创建一个符号链接来修复:

/opt/local/etc/php5>sudo ln -s /etc/php.ini php.ini

之后测试连接应该可以工作

php testconnect.php 
Connected using mysql.
Connected using mysqli.
Connected using PDO.

【讨论】:

【参考方案6】:

我发现了问题所在。尽管 Apache 没有运行,但出于某种原因,Apache 阻止了 MySQL 的运行(从而阻止了创建套接字)。 (是的,很奇怪吧?)在我运行安装之前,我发出了停止 apache 的命令,然后安装就顺利进行了。即使是现在,在我启动 MySQL 之前,我首先必须告诉 Apache(它没有运行)停止。

为了记录,我知道它没有运行,因为我得到 “httpd(无 pid 文件)未运行” 我没有让它在启动时自动运行,也没有像这样的废话。

我会尝试写一个演练,这样其他人就不必通过这个 BS。

【讨论】:

【参考方案7】:

通过 macports 安装 php5 时,该软件包不会自动附带 mysql 扩展名,因此无法通过 php 连接到 mysql(但您可能可以通过命令行)。

让我们先检查一下你的mysql是否运行正常:

mysqladmin5 -uroot -pYOURROOTPASSWORD ping

如果它还活着,您可以通过以下方式验证所有变量:

mysqladmin5 -uroot -pYOURROOTPASSWORD variables

你应该看到你的“socket”位置被定义为

/opt/local/var/run/mysql5/mysqld.sock

使用 macports 在 2 分钟内安装缺少的组件...方法如下:

sudo port install php5-mysql

要将 mysqlnd 与本地 MySQL 服务器一起使用,请编辑 /opt/local/etc/php5/php.ini 并设置 mysql.default_socket、mysqli.default_socket 和 pdo_mysql.default_socket 到 /opt/local/var/run/mysql5/mysqld.sock

然后重启你的Apache类型:

sudo /opt/local/apache2/bin/apachectl -k restart

现在一切都应该正常运行了。希望对您有所帮助。

【讨论】:

以上是关于雪豹下Macports mysql5设置的主要内容,如果未能解决你的问题,请参考以下文章

如何在雪豹上的 XCode 中设置 opengl/glut 进行编程?

MacPorts 不使用 mysql5 +server 安装 org.macports.mysql5.plist

在macports中重置mysql5 root密码

使用 Macports 默认安装后无法登录 mysql

雪豹:致命错误:调用未定义函数 mysql_connect()

雪豹系统(黑苹果)下virtualbox 虚拟机 设置网卡桥接方式 不成功!。求解!!!