由于项目需要,要在Ubuntu服务器上安装一个最新版本的mysql,从mysql的官方网站上,下载到了5.5.15版本的源代码包,决定用这个源代码包来进行mysql的安装。需要注意,本文中提到的所有的安装,都是在root权限下操作的。
切换到root权限的指令为:sudo -s,回车后会要求输入密码,输入密码之后,即可使用root权限。
安装的第一步,是编译环境的准备。由于ubuntu server默认安装好之后,是没有gcc、g++这些编译需要的必备软件的,因此需要先安装编译需要的支持软件。
有两种办法来安装支持软件,第一个就是一个一个的安装,另一个就是安装一个编译套件。我们这里选择用编译套件来安装。安装指令如下:apt-get install build-essential
安装完build-essential后,还需要安装一个libncurses5-dev,否则在cmake检查的时候,会报错。安装指令如下:apt-get install libncurses5-dev
安装完了以上2个支持软件,还需要安装一个服务管理程序,ubuntu下可以使用两种服务管理程序,一个是sysv-rc-config,另一个是chkconfig。sysv-rc-config安装指令是:apt-get install sysv-rc-config,chkconfig安装指令是:apt-get install chkconfig
安装mysql5.5.x,还需要安装一个编译程序cmake。首先需要从cmake的官方网站上下载一个最新的cmake源代码包,然后上传到服务器上。cmake官方网站地址为:http://www.cmake.org。如果觉得下载源代码安装cmake麻烦,也可以使用ubuntu的apt-get指令来安装。指令如下:apt-get install cmake。源代码编译cmake指令如下:
tar zxf cmake-2.8.5.tar.gz
cd cmake-2.8.5
./configure --prefix=/usr/local/cmake
make
make install
执行完上面的指令后,cmake就安装好了。注意,在这里和RedHat以及CentOS有一点小小的不同,那就是在RH或者CentOS里面,执行编译的时候,用的是gmake,这里用的是make。然后还有一点我没搞明白,那就是RH或者CentOS里面,make install之后,就可以在/usr/local目录下面看到cmake的目录,但是在ubuntu server里面,看不到cmake目录。而且ubuntu server还自己把cmake做了软连接,不需要再使用ln -s /usr/local/cmake/bin/cmake /usr/bin来创建软连接了。这一点虽然说是方便了,可以少执行两行指令,但是感觉从理解操作层面讲,就似乎不是那么清晰了。cmake到底被安装到哪里去了,这个还期待其他ubuntu的高手前来解答。
安装完cmake,就可以准备开始编译安装mysql了。
首先我们为mysql创建执行mysql程序使用的用户组和用户。
groupadd mysql
useradd -g mysql -s"/sbin/nologin" mysql
执行以上两行指令,mysql这个用户就被创建好了。这里需要注意,useradd的时候,加上了-s"/sbin/nologin",目的是为了防止mysql这个账号登陆shell,执行危险操作。
其次,解包编译mysql程序。执行指令如下:
tar zxf mysql-5.5.15.tar.gz
cd mysql-5.5.15
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/home/mysql -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DMYSQL_USER=mysql
make
make install
编译安装完mysql之后,需要安装mysql默认数据库。执行指令如下:
cd /usr/local/mysql/scripts
./mysql_install_db --basedir=/usr/local/mysql --datadir=/home/mysql --user=mysql
安装完mysql的默认数据库,就可以配置mysql的各种配置了。
首先是复制mysql的配置文件和服务控制文件。指令如下:
cd /usr/local/mysql/support-files
cp my-medium.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld
接下来就是如何配置mysql。首先配置mysql的服务控制文件。指令如下:
vi /etc/init.d/mysqld
i
/*编辑basedir=和datadir=*/
basedir=/usr/local/mysql
datadir=/home/mysql
/*退出编辑模式(按键盘ESC键)*/
:wq
注意:从i开始都是在vi编辑器中的操作,vi编辑器的详细使用,请参考有关文档。
接着设置下软连接,让mysqld_safe程序可以在/usr/bin目录下被找到。指令如下:
ln -s /usr/local/mysql/bin/mysqld_safe /usr/bin
接下来我们可以尝试启动下mysql服务, 使用指令:service mysqld start
如果服务可以正常启动,那么恭喜你,mysql已经可以正常工作了。但是很不幸的是,我遇到了问题。提示的错误大概意思是:无法修改pid文件,服务不能启动。通过检查文件系统权限,发现pid默认是放在/var目录下,而mysql这个用户没有这个目录的权限。解决方面有两种。一种是给/var目录mysql权限,一种是修改pid文件的路径。这里我们选择第二种方案。修改pid文件路径。指令如下:
vi /etc/my.cnf
i
/*在mysqld配置节下,增加以下部分*/
pid-file = /home/mysql/1.pid
log-error=/home/mysql/szsrv.err
basedir=/usr/local/mysql
datadir=/home/mysql
/*退出编辑模式(按键盘ESC键)*/
:wq
接下来我们尝试再次启动数据库,指令如下:service mysqld start
这个时候mysql服务总算能正常启动起来了。
最后,我们设置下软连接,让mysql使用起来简单点。
ln -s /usr/local/mysql/bin/mysql /usr/bin
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin
ln -s /usr/local/mysql/bin/mysqldump /usr/bin
这个时候,安装步骤也接近尾声了,为了让mysql每次随系统自动启动,我们还需要把mysql配置到系统启动服务中。指令如下:
chkconfig --level 3 mysqld on
至此,mysql安装配置就算完成了。