在Mac OS X上安装MySQL Python

30

长话短说,当我写下以下内容时:

sudo easy_install MySQL-python

我遇到了错误。

EnvironmentError: 找不到 mysql_config

好的,有很多关于如何修复这个问题的线程和类似的内容,所以我运行了这段代码:

export PATH=$PATH:/usr/local/mysql/bin

然后我重新运行我的伪代码:

sudo easy_install MySQL-python

然后我得到了以下错误。

设置脚本退出并显示错误:命令“llvm-gcc-4.2”以状态1失败

我在Google/Stack Overflow上搜索,被告知要下载一个GCC软件包,我已经在几天前下载了大约200MB的软件包,但仍然没有解决问题。

此时我感到很困惑。他们说疯狂就是一遍又一遍地做同样的事情却期望不同的结果。我已经不断地运行上述代码期望有所改变,所以离发疯也不远了。

在我的Python生涯中,我还很新手,但我愿意尝试任何方法来让它正常工作。

如果有帮助的话,我正式运行Mac OS X 10.7.5,并且我安装了MAMP(这是个问题吗?)

而且,前几天当我第一次尝试时,我安装了(重新安装了?)MySQL,所以现在我真的处于困境中。

是否有解决方法?

我已经绞尽了脑汁,在Google上搜索,阅读Stack Overflow,并花费数小时试图解决这个问题,但都没有成功。


你能在终端上发布gcc命令的输出吗? - Chan
当我运行 gcc 时,我会得到以下输出:i686-apple-darwin11-llvm-gcc-4.2 no input files。 - Peter Foti
15个回答

57

以下是我会安装的内容,特别是如果您想使用homebrew

  • XCode和命令行工具(如@7stud,@kjti所建议)
  • 安装homebrew
  • brew install mysql-connector-c
  • pip install mysql-python

在执行 pip install mysql-python 命令时出现错误:error: /Library/Python/2.7/site-packages/_mysql.so: Permission denied - souvickcse
我使用Homebrew安装的Python,在我的电脑上,Python包存储在/usr/local/lib/python2.7/site-packages/目录下,该目录对我可写入(Homebrew不想使用sudo)。你可能也会发现Homebrew和Python很有用。如果你只是想使用系统自带的Python,则可以尝试使用sudo pip install... - m01
6
我遇到了以下错误 - Command "python setup.py egg_info" failed with error code 1.. - girish_vr
3
在使用Python 3.6.4时,出现了“Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/xr/4nbrl6_n67ggkm4v6zkk8v_nq0kng2/T/pip-install-hxjvbd/mysql-python/” 的错误。 - realPK
Python 3目前还不被“mysql-python"支持: > MySQL-3.23到5.5和Python-2.4到2.7目前得到支持。 Python-3.0将在未来的版本中得到支持。PyPy受到支持。 来源 - m01

27
另一个选择是使用pymysql,它是一个纯Python客户端连接到MySQL,因此您不必搞编译,这通常是一个好的练习,但如果您只是想完成某些事情,它可能会让人感到沮丧。 pymysql遵循与MySQLdb相同的API,基本上可以用作替代方案。
另外,MySQLdb曾经不能与Python 3一起工作,但这可能已经改变了,而pymysql没有这个问题,这也促使我转换,但这可能已经改变了。 pymysql可能比MySQLdb慢,但您需要看看自己是否注意到了这一点,它还受不同的许可证控制(pymysql的为MIT,而MySQLdb的为GPL)。

我不确定这是否是一种权宜之计,但它起作用了!我能够轻松安装pymysql并连接到我的数据库/运行命令而没有问题。将来我仍然有兴趣学习如何启动和运行MySQL,但现在这应该足够了。谢谢Paul! - Peter Foti
@Peter:很高兴能帮到你,由于C接口的存在,安装MySQLdb确实有些棘手(但这也使它更快)。如果将来你转向MySQLdb,你不需要在Python代码中做太多改动,所有对游标和连接的调用都应该与pymysql相同,你只需要导入其他东西即可。 - Paul Joireman
这对我非常有效,比旧的JDBS ODBC驱动程序更容易。 - mdoar
MySQLdb已经被分叉为mysqlclient-python项目(https://github.com/PyMySQL/mysqlclient-python),以支持Python 3+。 - The Aelfinn
如果有人能够帮忙,我在使用pymysql时遇到了问题:https://stackoverflow.com/questions/46145845/cannot-make-remote-connection-with-pymysql-pymysql-err-internalerror-packet-se - ballade4op52

13

针对Python 3+,mysql-python库已经无法使用。相反,请使用mysqlclient库安装命令为:pip install mysqlclient

它是mysql-python(也称作MySQLdb)的分支版本,支持Python 3+。

该库与MySQL客户端的C接口通信,比纯Python的pymysql库更快。

注意:您需要安装mysql-developer工具。在Mac上轻松完成此操作的方法是运行以下命令:

brew install mysql-connector-c

可以将此任务委派给homebrew。如果您在linux上,可以按照mysqlclient github页面上的说明安装这些内容。


这非常有帮助,解决了我的问题。谢谢。 - TravisVOX
在2019年,我成功地使用Ansible(v2.8.5)的mysql_db模块、Python 3.7.5和10.4.6-MariaDB在macOS 10.13.6(High Sierra)上运行。我不需要使用brew mysql-connector-c公式。 - William Turrell

12

通过Homebrew安装MySQL,然后你可以通过pip安装MySQL Python。

pip install MySQL-python

对我而言有效。


对我有用。还在这里找到了建议:https://dev59.com/kV8e5IYBdhLWcg3wssLG - Alejandro Rubio
1
在Python 3.6.5上运行时,会提示“ModuleNotFoundError: No module named 'ConfigParser'”。 - saran3h

5

我正在使用的操作系统是OSX -v 10.10.4。上述解决方案是一个快速且简单的方法。

然而,OSX默认情况下不具备连接库。

首先,您需要安装连接器:

brew install mysql-connector-c

然后使用pip安装mysql。
pip install mysql-python

如果你还没有安装pip,那么你应该先安装它。Pip是Python的包管理器,尽管你已经在Mac上安装了Python,但它可能还没有被安装。 - Alex Moleiro
我遇到了以下错误 - 命令“python setup.py egg_info”失败,错误代码为1.. - JackTheKnife

3
安装PyMySQL:
安装pip => sudo easy_install pip 安装PyMySQL => sudo easy_install-3.7 pymysql
检查是否已安装的终端命令 => pip3 list
或者
安装PyMySQL => sudo pip install PyMySQL
检查是否已安装的终端命令 => pip3 list
MySQL:
macOS Sierra公共测试版与MySQL 5.7.x不兼容,但使用MySQL 5.7.16可以解决这些问题
MySQL未预装在macOS Sierra上,需要从MySQL站点下载。
( https://dev.mysql.com/downloads/mysql/) 最新版本的MySQL 5.7.16与macOS的公共发布版本兼容。
如果您已经有MySQL 5.7并且从El Capitan升级到了Sierra,则我希望这没问题,但如果有人评论了这一点,我会很感兴趣。

使用Mac OS X 10.11 (x86, 64位),DMG存档版本(适用于macOS Sierra)。

如果您正在从先前的OSX升级并且有较旧的MySQL版本,则无需更新它。关于MySQL升级的一件事情:在升级到macOS Sierra之前,请始终对数据库进行数据转储以防万一,并确保您的MySQL服务器未运行

下载时,您不必注册,寻找“不用了,直接带我去下载!” - 直接转到下载镜像并从最靠近您的镜像下载软件。

下载完成后,打开.dmg文件并运行安装程序。

安装完成后,您会收到一个带有临时mysql root密码的对话框 - 这是MySQL根密码而不是macOS管理员密码,请复制并粘贴它以便使用。但是,我发现临时密码几乎没有用处,因此我们需要立即更改它。

您还被告知: 如果您丢失了此密码,请参考MySQL参考手册中的“如何重置根密码”部分。(https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html)
更改MySQL根密码
请注意,这不是macOS的root或管理员密码 - 这是mysql root用户的唯一密码,请使用一个并记住/在某处记录它。
停止MySQL
sudo /usr/local/mysql/support-files/mysql.server stop

如果停止抛出权限问题,请先检查错误文件。
tail -f /usr/local/mysql/data/*.err

完全关闭或终止进程。确认没有运行任何mysql进程。

mysqladmin -uroot shutdown
sudo killall mysqld 

ps -ef | grep mysql

给予权限

sudo chown -RL root:mysql /usr/local/mysql
sudo chown -RL mysql:mysql /usr/local/mysql/data
chmod -R 755 /usr/local/mysql/data
chmod -R 755 /usr/local/mysql/data/accountname.local.pid

or Right click->get info and change the permission for 
/usr/local/mysql/data
/usr/local/mysql/data/Pushparajas-MacBook-Pro.local.pid

开始mysql

sudo mysql.server start

在安全模式下启动:

sudo mysqld_safe --skip-grant-tables

这将是一个持续的命令,直到进程完成,因此请打开另一个shell/终端窗口,并使用临时生成的密码进行登录:
mysql -u root -p
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'

将小写的'MyNewPass'更改为您想要的内容 - 并保留单引号。

\q

启动MySQL

sudo /usr/local/mysql/support-files/mysql.server start

启动MySQL

您可以通过系统偏好设置或命令行来启动MySQL服务器。

使用命令行启动MySQL。

sudo /usr/local/mysql/support-files/mysql.server start

要从终端查找MySQL版本,请在提示符处输入以下内容:

/usr/local/mysql/bin/mysql -v -uroot -p

这也会让你进入一个与mySQL交互的shell对话,输入\q退出。
安装后,为了在不输入命令的完整路径的情况下使用mysql命令,你需要将mysql目录添加到你的shell路径中(可选步骤),这可以在你的主目录下的“.bash_profile”文件中完成,如果你没有该文件,只需使用vi或nano创建即可。
cd ; nano .bash_profile
export PATH="/usr/local/mysql/bin:$PATH"

第一条命令将带您到您的主目录并打开 .bash_profile 文件,如果不存在则创建一个新文件,然后添加上面的行,将 mysql 二进制路径添加到您可以运行的命令中。使用“control + x”键退出文件,并在提示时输入“y”以保存更改。最后要做的是重新加载 shell,以使上述内容立即生效。
source ~/.bash_profile
mysql -v

你会再次获得版本号,只需输入“q”即可退出。
修复2002 MySQL套接字错误。
解决悬而未决的2002套接字错误——MySQL将套接字放在/tmp中,而macOS认为它应该在/var/mysql中,套接字是一种允许mysql客户端/服务器通信的文件类型。
sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

phpMyAdmin

httpd.conf文件中取消下面的行注释

LoadModule php7_module libexec/apache2/libphp7.so

如果您还没有从MySQL部分修复2002套接字错误,请先进行修复 -

sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

下载phpMyAdmin(https://www.phpmyadmin.net/downloads/),zip英文包适合大多数用户,然后解压缩并将文件夹及其内容移动到文档根目录级别(~/Sites/),并将文件夹重命名为“phpmyadmin”。
创建config文件夹。
mkdir ~/Sites/phpmyadmin/config

更改权限

chmod o+w ~/Sites/phpmyadmin/config

在浏览器中运行设置 http://localhost/~username/phpmyadmin/setup/http://localhost/phpmyadmin/setup/

您需要创建一个新的本地 MySQL 服务器连接,请单击 new server

切换到认证选项卡并设置本地 mysql root 用户和密码。

添加用户名“root”(可能已经填好),添加之前为MySQL root用户设置的密码,然后单击保存,您将返回到上一个屏幕。(这不是macOS管理或root密码,而是MySQL root用户密码)。

确保您单击保存,然后 config.inc.php 现在位于 phpmyadmin 目录的 /config 目录中,将此文件移动到 /phpmyadmin 的根目录,然后删除现在空的 /config 目录。

在最新的 phpmyadmin 中,下载 config.inc.php 并放置在 phpmyadmin 目录中。

如果你想设置新的服务器,请将config.inc.php移动到某个位置,然后尝试http://localhost/~username/phpmyadmin/setup

现在访问http://localhost/~username/phpmyadmin/将允许你与MySQL数据库进行交互。

要升级phpmyadmin,只需下载最新版本并将旧的“config.inc.php”从现有目录复制到新文件夹中并替换 - 备份旧文件以防万一。

权限

为了避免权限问题运行网站,最好将Web根目录及其内容设置为所有人可写,因为这是本地开发,不应该有安全问题。

假设您在以下位置的用户站点文件夹中有一个站点~/Sites/testsite,则可以像这样设置它:

sudo chmod -R a+w ~/Sites/testsite

如果您关心安全问题,那么您可以将所有者设置为Apache的_www,而不是将其设置为全球可写。但是,在处理文件时,您需要进行更多的身份验证,因为您“不是”所有者,您可以这样做:
sudo chown -R _www ~/Sites/testsite

这将递归地将内容设置为Apache用户所拥有。如果您将网站存储在系统级文档根目录(例如~/Sites/testsite),则必须使用后者。
sudo chown -R _www ~/Sites/testsite

如果您的计算机只有一个用户,更简单的方法是将Apache Web用户从“_www”更改为您的帐户。

就这样!您现在可以在macOS Sierra上运行本地AMP堆栈。

参考链接 - https://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-macos-sierra/#ssu


3
在Mojave上,我遇到了找不到SSL库的错误,以下是最终可以工作而无需修改mysql_config的方法:
sudo pip install MySQL-Python --global-option=build_ext --global-option="-I/usr/local/opt/openssl/include" --global-option="-L/usr/local/opt/openssl/lib"

希望这能为某些人节省几个小时的痛苦。


在Big Sur上对我有效。其他方法在Big Sur上对我无效。谢谢! - Petr

2

现在是时候成为一个大男孩,并从源代码安装。请尝试以下步骤:

1)下载MySQL-python-1.X.X.tar.gz文件(默认情况下将保存到您的下载目录中)

2)打开终端窗口并切换到下载目录。

3)解压您下载的文件:

~/Downloads$ tar xfvz MySQL-python-1.X.X.tar.gz

这将在您的下载目录中创建一个名为MySQL-python的目录。

4) 进入新创建的目录。

5) 通常,您只需打开名为README或INSTALL的文件并按照说明进行操作--但通常安装Python模块只需执行以下操作:

$ sudo python setup.py install

如果您仔细查看,您新创建的MySQL-python目录中应该有一个名为setup.py的文件,您正在调用该程序来安装模块。
另外,请注意以下内容:
export PATH=$PATH:/usr/local/mysql/bin

如果您在命令行上执行此操作,则不是永久性的。您需要将该行放入名为.bashrc的文件中,该文件位于您的主目录(〜/或等效的/Users/YOUR_USER_NAME)中。要查看.bashrc是否已存在(它是一个隐藏文件),请输入以下命令:

$ ls -al 

查找 .bashrc 文件。如果 .bashrc 不存在,则创建它。


1
好的,我检查了所有内容,一切都很顺利,直到5点之后,我又收到了mysql_config未找到的错误提示。 - Peter Foti
  1. 切换到 /usr/local/mysql/bin 目录并执行 $ ls 命令,查看是否存在 mysql-config 文件。如果存在,则执行 $ echo $PATH 命令。如果 /usr/local/mysql/bin 不在您的 PATH 中,请使用您发布的 export 命令将其添加到 .bashrc 中。为确保 Terminal 使用您的新 .bashrc,请键入 $ source .bashrc 命令,然后打开另一个 Terminal 窗口并尝试重新安装。
- 7stud
执行以下命令使其生效:$ source ~/.bashrc - 7stud
1
那么你是忽略了我多次告诉你要打开或创建文件~/.bashrc吗? - 7stud
我已经告诉过你两次了。进入你的主目录:$ cd ~,并检查名为.bashrc的隐藏文件:$ ls -al。如果.bashrc存在就打开它。如果不存在就创建一个。然后通过添加以下行将/usr/local/mysql/bin添加到你的PATH中:export PATH=$PATH:/usr/local/mysql/bin 到 .bashrc 文件中。$PATH环境变量是一个由冒号分隔的所有目录列表,你的mac将在这些目录中搜索你发出的命令。该导出命令表示将旧目录列表加上 /usr/local/mysql/bin 分配给你的PATH环境变量。 - 7stud
显示剩余2条评论

2
如其他人之前所提到的......在Mac上让Python与MySQL配合工作是一场噩梦。
最初从原始的Django网站安装了Mac OS 10.7.5上的Django框架,当MySQLdb无法工作时,在经过多个小时的谷歌搜索和尝试SO的解决方案后,我安装了BitNami的Django堆栈http://bitnami.com/stack/django
仍然遇到了上面提到的问题,还有更多......
最终帮助我的是Josh在他的博客上推荐的方法:http://joshbranchaud.com/blog/2013/02/10/Errors-While-Setting-Up-Django.html 现在Python 2.7终于连接到了MySQL 5.5

我理解你的痛苦。我曾经也遇到过和你一样的问题,让我非常困扰。最终我放弃了这个项目。前几天我又开始使用Python和MySQL,使用pymysql时立刻获得了成功(它就是有效的)。不确定这是否适用于你,如果不行,我很抱歉。但还是值得一试的。 - Jordan Hudson
谢谢。我最终离开了Django并转向Web2Py。真是不同寻常!安装简单快捷,文档更好,IDE很棒,可以直接使用MySQL,内置Web服务器、调试器等等。强烈推荐。 - Toren

1
您遇到的问题是您的Mac上没有安装gcc编译器。如果您已经安装了XCode,则会自动安装它。您需要手动下载gcc编译器并进行安装。请按照以下链接下载并安装 -

https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkg

我曾经在安装Ruby 1.9时遇到问题,因为当时Mountain Lion不受支持,所以我不得不自己编译Ruby。安装完软件包后,可以通过命令gcc来验证安装。


我已经安装了Xcode以及上面链接的GCC工具。 - Peter Foti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接