一、编译、安装MySQL
在与mysql-5.0.67目录同级的目录下,创建一个“makemysql”目录,在此目录下对MySQL进行配置,操作如下:
mkdir makemysql
cd makemysql
sudo ../mysql-5.0.67/configure --prefix=/opt/mysql --localstatedir=/home/user/mysql_data --with-extra-charsets=all
(这里--prefix选项指定了软件的安装目录;--localstatedir选项指定了数据库文件的所在目录,这里的user表示当前的用户名称;--with-extra-charsets选项则是指定了MySQL可以支持的语言编码,这里设置为全部支持,具体使用哪种编码,可以在程序中指定。
而命令前面的“sudo”,可以说是Ubuntu系统的一个特色,表明了要在具有管理员权限的模式下进行操作,对于其他的Linux发行版本而言,或许并不需要使用该指令。关于Ubuntu的权限问题,这里就不赘述了,有兴趣的朋友可以参考一下Ubunt u的有关资料)
回车确认后,第一个问题出现了,将会看到如下的报错信息:
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
上述信息表明,当前系统中没有安装C++编译器,系统无法对源码包进行编译,知道了问题所在,我们就可以有的放矢的开始解决问题了。
Ubuntu系统自带了很多编译、开发所必须的软件包,只是我们安装的是Ubuntu-Server系统,默认的状态下,除了系统自身外,不会安装任何其他软件。上述的这个问题只要安装Ubuntu系统自带的“build-essential”软件包就可以,操作如下:
sudo apt-get install build-essential
由于该软件包属于Ubuntu-Server系统自带的,系统会提示要求使用Ubuntu-Server的光盘进行安装,只有当Ubuntu-Server的光盘中没有需要安装的软件包时,才会通过前面手动添加的Ubuntu-DVD的光盘源进行安装)
安装好了所需的编译器之后,需要重新配置MySQL,操作如下:
cd /home/user/makemysql (这里假定前面获取的源码包和前面创建的专门用于编译的目录是位于/home/user下的,根据自己的实际情况输入即可)
sudo ../mysql-5.0.67/configure --prefix=/opt/mysql --localstatedir=/home/user/mysql_data --with-extra-charsets=all
经过了一连串儿的编译过程后,第二个问题又出现了,在编译过程的最后,将会看到如下的错误信息:
checking for termcap functions library... configure: error: No curses/termcap library found
从提示的错误信息中可以看出,这是由于系统中缺少了MySQL所需的库文件所导致的,apt-get再次派上了用场,操作如下:
sudo apt-get install libcurses (这里不按回车,而是按Tab键)
这里将会看到软件源中包括的所有文件名以libcurses开头的软件包列表,如下:
libncurses5 libncurses5-dev libncurses-dev libncursesw5
这里我们需要安装的是libncurses5-dev软件包(安装了build-essential软件包后,一些基本的库文件都会随之安装的,如果再遇到缺少库文件的提示,大部分是因为没有安装对应的dev库,也就是对应的“开发包”所导致的,应根据具体情况进行判断。)
找到了所需的软件包,安装之,操作如下:
sudo apt-get install libncurses5-dev
(这里将会提示插入Ubuntu-DVD光盘,因为Ubuntu-Server光盘中并没有这个软件包,插入Ubuntu-DVD光盘后确认。如果没有在前面添加Ubuntu-DVD的光盘源,使用这种方法将无法查找到这个软件包,只能先查找资料,确定所需的软件包名称,再使用互联网软件源安装,或者将软件包下载到本地进行安装。)
安装好库文件后,再次重新配置MySQL,操作如下:
cd /home/user/makemysql
sudo ../mysql-5.0.67/configure --prefix=/opt/mysql --localstatedir=/home/user/mysql_data --with-extra-charsets=all
长长的编译过程结束后,将会看到“Thank you for choosing MySQL!”的字样,编译成功!
配置完成后,开始编译、安装MySQL,操作如下:
sudo make
sudo make install
安装结束后,MySQL服务并不会自动启动,还需要先初始化MySQL数据库,操作如下:
cd /opt/mysql/bin
sudo ./mysql_install_db
MySQL数据库初始化完成后,MySQL服务会随之启动,可以使用“netstat -lt”查看MySQL服务是否已经正常启动。
这里要说明的是,由于在编译MySQL的时候,为数据库指定了存放路径,即/home/user/mysql_data,对当前用户user而言,拥有该目录的全部权限,所以,这里直接在当前用户下执行mysql_install_db指令,可以成功初始化数据库,如果用户在安装时没有指定数据库的路径,或者指定到了一个当前用户没有权限的路径,直接执行mysql_install_db指令时将会报错,需要首先设置相应的权限,或者指定MySQL的启动用户。关于这个问题,这里就不具体说明了,感兴趣的朋友可以查阅相关资料。
MySQL服务成功启动后,为了能够正常使用MySQL,首先需要设置root用户的密码(注:这里的root用户与Linux系统的root用户不同),操作如下:
cd /opt/mysql/bin
./mysqladmin -u root password 123456
这里将MySQL的root用户密码设置为123456,设置好后,可以先测试一下是否能够正常连接,操作如下:
./mysql -uroot -p123456
如果一切正常,将会看到“mysql>”的提示符,表明已经使用root用户与本机的mysql服务成功建立了连接。至此,MySQL的编译、安装成功完成。
还有一点需要说明,MySQL服务默认只允许从服务器本机连接,如果需要从远程连接,还需要在MySQL中设置相应的权限,并更新权限表,具体操作如下:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456";
mysql> flush privileges;
(注意前面的“mysql>”,这个操作是连接到MySQL服务后,在MySQL中进行的,而不是在操作系统中进行的)
(注:上面这个更改权限的例子,是使得可以从任意一台远程终端使用root用户连接MySQL服务器,用户应根据自己的实际需要进行设置)