安装环境:Ubuntu 10.04 + mysql 5.1
1.安装必要的支持库
源码编译安装 mysql 需要以下库的支持:g++、libncurses5-dev
所以先来安装这两个库
# apt-get install g++ libncurses5-dev
(#apt-get install build-essential libncurses5-dev)
等待上面安装完毕,然后就可以编译 mysql 源码了。
2.安装
mysql
1> 首先建立 mysql 用户
# groupadd mysql
# useradd -g mysql mysql
2> 编译安装
比如下载后的 mysql 源码文件为 /root/download/mysql-5.1.48.tar.gz,则
# cd /root/download
# tar -zxvf mysql-5.1.48.tar.gz
# cd mysql-5.1.48
# ./configure –prefix=/usr/local/mysql –with-charset=utf8
–with-collation=utf8_general_ci
–with-extra-charsets=latin1
# make
# make install
# cp support-files/my-medium.cnf /etc/my.cnf
3> 初始化数据库并修改目录权限
# cd /usr/local/mysql
# bin/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql /usr/local/mysql/var
# chgrp -R mysql .
4> 启动 mysql 服务
# bin/mysqld_safe --user=mysql &
这里可能出现
启动错误1:
mysqld_safe Starting mysqld daemon with
databases from /usr/local/mysql/var
^G/usr/local/mysql/libexec/mysqld: Can't find file:
'./mysql/plugin.frm' (errno:
13)
[ERROR] Can't open the mysql.plugin table.
Please run mysql_upgrade to create it.
如果出现这个错误,执行
/usr/local/mysql/bin/perror 13,则会显示错误原因“OS error code 13:
Permission
denied”,应该是文件权限问题,mysql 无法读取 plugin.frm 文件,这个文件存在于
/usr/local/mysql/var/mysql 目录下,进入此目录发现所有的文件所有者都是
root:root,所以mysql 没有权限读
取,于是执行命令:
# cd /usr/local/mysql/var/
# chown -R mysql:mysql mysql
此时再执行 “/usr/local/mysql/bin/mysqld_safe &”
命令应该可以启动 mysql 服务了。
启动错误2:$ sudo bin/mysqld_safe --user=mysql
&
[2] 4168
[1] Exit
2 bin/mysqld_safe --user=mysql
$ 110301 09:02:36 mysqld_safe Logging to
'/var/lib/mysql/fei-desktop.err'.
touch: cannot
touch`/var/lib/mysql/fei-desktop.err': No such
file or directorychown: cannot
access`/var/lib/mysql/fei-desktop.err':No such
file or directory110301 09:02:37 mysqld_safe
Starting mysqld daemon with databases from /var/lib/mysql
bin/mysqld_safe: 568: cannot create
/var/lib/mysql/fei-desktop.err:
Directory nonexistent
eval: 1: cannot create /var/lib/mysql/fei-desktop.err: Directory
nonexistent
110301 09:02:37 mysqld_safe mysqld from pid file
/var/run/mysqld/mysqld.pid ended
bin/mysqld_safe: 612: cannot create /var/lib/mysql/fei-desktop.err:
Directory nonexistent
从错误信息看出:1./var/lib/mysql/目录不存在
解决方法:
sudo mkdir
/var/lib/mysql //创建目录
chown -R mysql:mysql /var/lib/mysql //修改目录的用户和组
5> 将 mysql 注册成一个服务
# cp /usr/local/mysql/share/mysql/mysql.server
/etc/init.d/mysqld
然后,可以执行/etc/init.d/mysqld start(stop\status) 启动(停止、查看)服务
ps:
常见错误1:
如果当启动mysql时出现以下错误
Starting MySQLCouldn't find MySQL manager
(/usr/bin/mysqlmanager) or server (/usr/bin/mysqld_safe)
failed!
则可能是因为存在两个my.cnf文件,/etc/my.cnf和/etc/mysql/my.cnf,这是把后者改个名字(如my.cnf.old)就
可以了。
常见错误2:
在make的过程中,出现以下错误:
redeclaration of C++ built-in type `bool'
执行:
make clean
make distclean
重新执行configure 和 make
(这个错误一般是在没有安装g++的情况下,执行了make。在安装g++后,再次执行make时出现)
常见错误3:
在连接服务器时:ERROR 2002 (HY000): Can't connect to local MySQL server
through socket '/tmp/mysql.sock' (2)
原因1:服务器没有启动
/etc/init.d/mysqld status //查看服务状态
如果,没有服务启动,则启动服务;
/etc/init.d/mysqld start
原因2:没有找到mysql.sock文件,注意查看mysql.sock是否存在,查看用户mysql是否具有mysql.sock所在路径的写权限。
PS:
libncurses5和Ncurses:
软件包: libncurses5 中,包括运行那些使用ncurses编译的程序所必须的共享库。
Ncurses是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库。
Ncurses是一个能提供基于文本终端窗口功能的动态库.
Ncurses可以:
1.只要您喜欢,您可以使用整个屏幕
2.创建和管理一个窗口
3.使用8种不同的彩色
4.为您的程序提供鼠标支持
5.使用键盘上的功能键
Ncurses可以在任何遵循ANSI/POSIX标准的UNIX系统上运行,除此之外,它还可以从系统数据库中检测终端的属性,
并且自动进行调整,提供一个不受终端约束的接口.因此,Ncurses可以在不同的系统平台和不同的终端上工作的非常好.mc工具集就是一个用
ncurses写的很好的例子,而且在终端上系统核心配置的界面同样是用ncurses编写的。