在 OSX 构建 MySQL-Python
LP 最近开始学数据库了,想要在 OSX 搭建一个 MySQL-Python 环境。
原本打算直接用 MAMP 加上 mysqldb for python,但是折腾了一下,发现 MySQLdb 没办法直接在 MAMP 的基础上完成 build,需要很长的前戏,这对妹子来说简直就是一场灾难。
MAMP 是一个 Mac+Apache+Mysql+Php 集成开发环境,最大的好处就是即装即用,而且自带了 phpMyAdmin,很适合刚入门 MySQL 的人使用。但是它的集成性太好了,没有给外部留太多的共享库。在构建 MySQLdb 的时候,会提示找不到各种头文件(.h)
$ python /path/to/mysqldb/setup.py build
blah blah blah...
_mysql.c:36:23: error: my_config.h: No such file or directory
blah blah blah...
难道要自行下载 mysql source 来编译么……
幸好还有一个很方便的工具 homebrew:
$ brew search mysql
automysqlbackup groonga-normalizer-mysql mysql mysql++ mysql-cluster mysql-connector-c mysql-connector-c++ mysql-connector-odbc mysql-proxy mysqlreport
josegonzalez/php/php53-mysqlnd_ms josegonzalez/php/php54-mysqlnd_ms josegonzalez/php/php55-mysqlnd_ms josegonzalez/php/php56-mysqlnd_ms homebrew/versions/mysql51 homebrew/versions/mysql55
里面已经有一个编译好的 mysql 可以直接用了!手到擒来:
$ brew install mysql
待下载完成后,mysql 已经顺利安装到 OSX 上了,运行 mysql 服务器:
$ mysqld
以 root 身份连接 mysql:
$ mysql -u root
一切正常,现在可以构建 MySQLdb 了:
python /path/to/mysqldb/setup.py build
python /path/to/mysqldb/setup.py install
如果一切顺利的话 MySQLdb 已经安装到 python 库中了。可以使用$ python -c "import MySQLdb"
进行验证,如果没有报错,恭喜可以开工了。
¶FAQ
- Mysql Error 2002: Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
当客户端使用 host=‘localhost’ 登录 MAMP 的 mysql 时,会使用 unix_sock 进行我连接,但如果本地没有开启 mysqldb 则会报此错误;改成 host=‘127.0.0.1’ 走 TCP/IP 即可解决。
- $ brew link mysql
Linking /usr/local/Cellar/mysql/5.6.25…
Error: Could not symlink share/man/man8/mysqld.8
/usr/local/share/man/man8 is not writable.
brew link 失败的话,会导致 MySQLdb 不可用,应先根据上面的提示解决权限问题。