在Mysql提供的多种安装方法中,我本人还是非常喜欢从源码进行安装的,因为从源码进行安装更加灵活,能避免一些因为本机差异而导致一些小问题。比如,一个最为常见的问题就是从原码安装可以避免安装完成后无法定位basedir的问题,导致出现一些像Can't find messagefile '/usr/share/errmsg.sys'之类的问题,使得在启动mysqld的时候必需要手动设定--basedir参数。
但是在最近一次的安装过程中,我使用源码方式安装也遇到了这个问题。我的安装位置为:/usr/local/mysql,即使我在安装过程中显式地设置了 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql参数依然无效。经过反复的排查发现,原来系统中已经安装过mysql,在/var/lib/mysql和/etc目录下都发现了mysql的文件,特别是/etc/mysql文件夹,它是mysql默认的全局配置文件存放的位置,它的存在会导致从原码安装的mysql在启动时会从该位置读取l配置文件,进而总是不能正确定位basedir.
问题找到了,接下来的工作就是全面的删除旧有mysql文件:
1. 删除 /etc/mysql文件夹 sudo rm -fr /etc/mysql
2. 使用 sudo find /var /ext | grep mysql 全面地检查已存在的mysql文件
3. 删除这些文件。注意,在搜索地结果中并非所有文件都是mysql的,这个需要你根据文件路径进行判断。
4.重新从源码安装mysql,一切恢复正常。
安装过程中的一些经验:
1.从mysql的错误日志中得到更多的出错信息。
2.由于种种原因,你的系统中可能安装过mysql,因此在你安装之前最好先检查一下。