Fedora Core7下安装MySQL过程小记


一直很重视从压缩包安装MySQL,在Windows下很简单.zip直接解压就好(Windows的权限管理实在是弱--||)。但是在Fedora Core7下通过.tar.gz解压却启动不了,无奈之下从MySQL官方文档入手,开始了安装历程:

一、前驱准备
1. 为mysqld增加一个登录用户和组:

shell> groupadd mysql

shell> useradd -g mysql mysql

2. 进入安装目录,以/usr/local为例,解压.tar.gz二进制分发版。

shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -

shell> ln -s full-path-to-mysql-VERSION-OS mysql

或者:

shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz

3. 在mysql目录下,你会在mysql目录下发现几个文件和子目录,对安装目的最重要的是“bin”和“scripts”子目录。

· bin

这个目录包含客户端程序和服务器,你应该把这个目录的完整路径加到PATH环境变量,以便shell能正确的找到MySQL程序。请参见附录F:环境变量。

· scripts

这个目录包含mysql_install_db脚本,用来初始化mysql数据库的 授权表,其中贮存了服务器访问允许。

Note: 如果还没有安装MySQL,必须创建MySQL授权表:
shell> scripts/mysql_install_db --user=mysql
4. 将程序二进制的所有权改为root,数据目录的所有权改为运行mysqld 的用户。如果位于安装目录(/usr/local/mysql)下,命令应为:

shell> chown -R root .

shell> chown -R mysql data

shell> chgrp -R mysql .
第一个命令将文件的所有属性改为root用户。第二个命令将数据目录的所有属性改为mysql用户。第三个命令将组属性改为mysql组。

5. 到这里,按照MySQL的文档,服务器便可以启动:

shell> bin/mysqld_safe --user=mysql &
但是,在Fedora Core7下,问题便出现了,提示如下信息,无法启动服务器。
-------------------------------------------------------------------------
nohup: ignoring input and redirecting stderr to stdout
Starting mysqld daemon with databases from /var/lib/mysql
STOPPING server from pid file /var/run/mysqld/mysqld.pid
071030 02:28:14 mysqld ended
------------------------------------------------------------------------------
问题出现最初没有查看日志(以后要养成看日志的习惯!!)
---------------------------------------------------------------------
071030 14:23:56 mysqld started
nohup: ignoring input
071030 14:23:56 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
071030 14:23:56 mysqld ended
---------------------------------------------------------------------------
通过查看/var/log/mysqld.log基本确定是权限的问题,修改/var/lib/mysql/下的这几个文件权限:
ibdata1 ib_logfile0 ib_logfile1
shell> chmod 766 /var/lib/mysql/ib*

mysql client默认使用/tmp/mysql.sock启动socket,但是/tmp/mysql.sock不存在,mysql.sock在/var/lib/mysql/mysql.sock,所以或者创建链接指向实际mysql.sock,或者更改mysql client的默认设置。
1. 在/tmp下创建指向/var/lib/mysql/mysql.sock的链接。
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
2. 更好mysql client配置(/etc/my.cnf)
编辑/etc/my.cnf,加入client配置。
[client]
socket=/var/lib/mysql/mysql.sock

相关内容