> 数据库 > MySQL >

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了。

(责任编辑:IT)