关于安装mysql的一些辛酸

现象:
新安装了一台机器,Apache + PHP; 访问时候出现错误:
*** glibc detected *** /data1/apache2/bin/httpd: double free or corruption (!prev): 0x0971ef80 ***

调试步骤:
1。 让apache的进程数减少为2个, strace -p pid; 观察异常所在,没有发现明显的出错地点

2。 在请求的PHP文件中添加断点,发现在mysql_connect 时出现的上述错误

3。 ldd mysql.so 和 ldd mysql 相比较,发现使用的libmysqlclient.so文件不同,系统里面有两套;相比是使用的include头文件和lib文件不是一个版本的

4。 删除安装的杂乱的mysql文件

5。 安装: mysql-5.1.47-linux-i686-glibc23.tar.gz    这个解压就行,不需要编译

6。 指定上面解压的mysql目录,重新编译PHP的mysql模块,问题解决

关于启动mysqld的一些问题:
1。 安装mysqld系统表文件,使用脚本scripts/mysql_install_db ; 需要在script平级的目录执行; 其原理是,使用越过权限检查的方式启动mysqld,默认的my.cnf是/etc/my.cnf ; 将创建系统表的sql语句放到mysqld中执行,于是生成的系统表就放在了(my.cnf中指定的)mysql数据库目录中了

2。 安装后的系统表可能用户权限不对,导致无法启动数据库,这就需要修改系统表和mysql数据库的权限了

调试过程中分别使用了:
strace、ldd、sh -x 等办法

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据