mysql5.0.22编译安装过程中的一件趣事.
时间:2006-06-13 来源:NICKY.BOY
最近,为了优化自己的mysql服务器,决定下载原码包,重新编译.舍弃以前4.0.22的二进制分发包.过程中遇到过一个权限问题,折腾了一会.印象颇深,决定记到自己的LOG上.呵呵......
下载的原码包是5.0.22的tar包.
我把安装包通过smb传到机器的root目录下(注意是root目录,问题就出在这了).
安装过程如下:
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/root/mysql --enable-assembler --with-mysqld-ldflags=-all-static --with-charset=latin1 --with-extra-charsets=gbk,utf8 shell> make
shell> make install
shell> bin/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql var
shell> chgrp -R mysql .
上面一切顺利.跟着问题来了. shell> bin/mysqld_safe --user=mysql & 启动时,出错. .err文件里记录如下: 060613 14:40:00 mysqld started
060613 14:40:00 InnoDB: Started; log sequence number 0 43655
060613 14:40:00 [ERROR] /root/mysql/mysql/libexec/mysqld: Can't create/write to file '/root/mysql/mysql/var/QQLinux.pid' (Errcode: 13)
060613 14:40:00 [ERROR] Can't start server: can't create PID file: Permission denied
060613 14:40:00 mysqld ended 发觉是权限问题,开始按照包里的INSTALL-SOURCE文件重新检查我的设置,发现没有错.又重新做了一次问题依旧. 在GOOGLE上并没有找到合理的解释,因为涉及到权限问题,所以依旧把目光集中在设置上. 发现自己的二进制文件存放在root下,mysql目录权限已经为 drwxr-xr-x 12 root mysql 4096 Jun 13 14:26 mysql 而root目录 drwxr-x--- 13 root root 4096 Jun 13 15:08 root 难道是因为root的目录的权限原因??? 于是修改chgrp mysql root drwxr-x--- 13 root mysql 4096 Jun 13 15:08 root 再次执行,mysql启动成功. 心喜之余,觉得不可思议,mysql的文档里并没有提及修改最顶层目录的步骤啊.以前用的4.0.22的mysql也没有碰到这种问题. 于是把mysql目录,放到/opt下.注意opt的权限是 drwxr-xr-x 4 root root 4096 Jun 13 14:51 /opt 对opt不作权限修改,这时启动mysql,呵呵,成功了. LINUX用了很久了,学习和开发过程中习惯了以root我行我素.居然把/root的目录的特殊性给忘掉了. 如果root目录的权限是755的就不会有任何问题了. 提醒所有朋友,东西不要轻易装在/root下.呵呵.
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/root/mysql --enable-assembler --with-mysqld-ldflags=-all-static --with-charset=latin1 --with-extra-charsets=gbk,utf8 shell> make
shell> make install
shell> bin/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql var
shell> chgrp -R mysql .
上面一切顺利.跟着问题来了. shell> bin/mysqld_safe --user=mysql & 启动时,出错. .err文件里记录如下: 060613 14:40:00 mysqld started
060613 14:40:00 InnoDB: Started; log sequence number 0 43655
060613 14:40:00 [ERROR] /root/mysql/mysql/libexec/mysqld: Can't create/write to file '/root/mysql/mysql/var/QQLinux.pid' (Errcode: 13)
060613 14:40:00 [ERROR] Can't start server: can't create PID file: Permission denied
060613 14:40:00 mysqld ended 发觉是权限问题,开始按照包里的INSTALL-SOURCE文件重新检查我的设置,发现没有错.又重新做了一次问题依旧. 在GOOGLE上并没有找到合理的解释,因为涉及到权限问题,所以依旧把目光集中在设置上. 发现自己的二进制文件存放在root下,mysql目录权限已经为 drwxr-xr-x 12 root mysql 4096 Jun 13 14:26 mysql 而root目录 drwxr-x--- 13 root root 4096 Jun 13 15:08 root 难道是因为root的目录的权限原因??? 于是修改chgrp mysql root drwxr-x--- 13 root mysql 4096 Jun 13 15:08 root 再次执行,mysql启动成功. 心喜之余,觉得不可思议,mysql的文档里并没有提及修改最顶层目录的步骤啊.以前用的4.0.22的mysql也没有碰到这种问题. 于是把mysql目录,放到/opt下.注意opt的权限是 drwxr-xr-x 4 root root 4096 Jun 13 14:51 /opt 对opt不作权限修改,这时启动mysql,呵呵,成功了. LINUX用了很久了,学习和开发过程中习惯了以root我行我素.居然把/root的目录的特殊性给忘掉了. 如果root目录的权限是755的就不会有任何问题了. 提醒所有朋友,东西不要轻易装在/root下.呵呵.
相关阅读 更多 +