Mac OS X 下安装MySql遇到的问题
mac os x 版本:10.7.3,在mysql的官网没有发现对应版本的下载,所以下载了一个mysql-5.5.22-osx10.6-x86_64.dmg,安装什么的都比较简单,安装好后,通过系统偏好设置设置中也能正常启动MySQL服务,同时在面板中取消了开机自动启动服务。本人比较喜欢在命令行中操作,看到ReadMe.txt中的介绍,可以使用/Library/StartupItems/MySQLCOM/MySQLCOM来执行启动、停止和重启操作。
sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop 服务正常停止 sudo /Library/StartupItems/MySQLCOM/MySQLCOM start 这时终端没有任何输出,服务也没有起来。
无法通过命令行启动,以为安装的有什么问题,在网上搜了一把,发现一篇官方bugs报告文章:http://bugs.mysql.com/bug.php?id=42673,也没有解决问题。经过一番周折,最后终于在/Library/StartupItems/MySQLCOM/MySQLCOM这个脚本中发现了问题,
StartService () { if [ "${MYSQLCOM:=-NO-}" = "-YES-" ] ; then ConsoleMessage "Starting MySQL database server" $SCRIPT start > /dev/null 2>&1 fi }
注意:在执行启动命令前作了一个判断,变量MYSQLCOM是定义在/etc/hostconfig中的,他的作用是设置MySQL是否开机自动启动,由于刚才在面板中把它设置为否,所以其值为-NO-,因而那个if就条件为FALSE,所以根本没有执行启动命令。通过看这个脚本,发现在命令行启动MySQL还可以直接执行这个 /usr/local/mysql/support-files/mysql.server 脚本即可。
另外一个问题,mac os 下mysql不需要my.cnf,用默认配置即可,如果想自己对mysql进行定制,拷贝「/usr/local/mysql/support-files/」目录下的符合自己用途一个 .cnf 文件到「/etc/」目录下并重命名为 my.cnf,然后修改 my.cnf 即可进行定制了。
配置好my.cnf后,对数据库进行重新初始化,首先确保停止mysql服务,把数据文件夹(默认为/usr/local/mysql/data)下清空,进入/usr/local/mysql目录,执行./scripts/mysql_install_db 即可。
初始化后启动数据库,在错误日志看到如下类似错误:
[ERROR] /usr/local/mysql/bin/mysqld: Can't find file: './mysql/host.frm' (errno: 13) [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)
造成上述错误的原因是数据文件夹的权限问题,必须把数据文件夹下的所有文件和文件夹的所有者该为_mysql(mac 是_mysql, linux下mysql的默认用户是mysql),命令:
chown -R _mysql:_mysql /usr/local/mysql/data
再次启动,又出现新的错误信息:
InnoDB: Error: unable to create temporary file; errno: 13 [ERROR] Plugin 'InnoDB' init function returned error. [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. [ERROR] Unknown/unsupported storage engine: InnoDB
这个问题的原因是自己定制的my.cnf中没有设置tmpdir信息,在mysqld段增加tmpdir = /var/tmp 即解决问题。
至此终于搞定Mac os 的mysql了。