http://www.javatang.com/archives/2012/09/08/1351654.html
一、卸载系统中原有的mysql
首先检查一下系统中是否安装了MySQL,如果安装的话先将其卸载。
- #查看系统中是否有以rpm方式安装的mysql
- [root@localhost /]# rpm -qa | grep -i mysql
- # 如果有的话就使用 rpm -e 命令将其卸载,如:
- [root@localhost /]# rpm -e MySQL-server-5.1.65-1.glibc23
- # 检查系统中是否有mysql服务
- [root@localhost /]# chkconfig --list | grep -i mysql
- # 如果有的话使用chkconfig --del命令卸载
- [root@localhost /]# chkconfig --del mysql
- # 查找是否还有mysql文件,然后使用rm -rf将其删除
- [root@localhost /]# whereis mysql
- # 查找mysql的配置文件,打开my.cnf文件,搜索datadir,然后将对应的目录也删除
- [root@localhost /]# whereis my.cnf
- # 最后再删除my.cnf文件
二、下载源代码并安装
1. 下载并解压mysql
- [root@localhost downloads]# wget -c http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.65.tar.gz/from/http://cdn.mysql.com/
- [root@localhost downloads]# tar xzvf mysql-5.1.65.tar.gz
2. 编译安装MySQL
- [root@localhost downloads]# cd mysql-5.1.65
- [root@localhost mysql-5.1.65]# ./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-extra-charsets=all --without-debug --enable-thread-safe-client --enable-assembler --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --without-isam
中间有缺少缺少 No curses/termca
通过yum install ncurses-devel解决
注:--without-isam 被提示为无效;加了一个 --datadir=/data/mysql选项,导致cnf文件和mysql.server文件都被放到了改目录下,但并没因此改变数据库的默认存储路径,仍然是--prefix指定目录下的var下
- [root@localhost mysql-5.1.65]# make && make install
其中configure是用于配置的信息,可以使用./configure --help来查看所有参数的含义。
几个常用的参数:
--prefix=/usr/local/mysql # 指定MySQL程序的安装目录
--with-charset=utf8 # 指定数据库默认的编码
--with-extra-charsets=all # 指定数据库支持的编码,all表示所有,也可以使用gbk,gb2312,utf8指定具体的编码
--without-debug # 去除debug模式,建议启用,提升MySQL性能
--enable-thread-safe-client # 以线程方式编译客户端
--enable-assembler # 使用汇编x86的普通操作符,可以提高性能
--with-client-ldflags=-all-static # 以纯静态方式编译客户端,提高性能
--with-mysqld-ldflags=-all-static # 以纯静态方式编译服务端,提高性能
--with-big-tables # 默认情况下MyISAM单表最大支持2^32条数据,这个参数可以使得这个数字变成(2^32)^2
--with-readline # 通过 readline,可以方便的在命令行上面移动,增删,复制,粘贴,搜索
--with-ssl # 支持SSL连接
--with-embedded-server # 编译成embedded mysql library (libmysqld.a)
--enable-local-infile # 让MySQL支持从本地文件导入数据库
--without-isam # 去掉isam表类型支持,现在很少用了,isam表是一种依赖平台的表
--without-innodb # 禁用InnoDB引擎(MySQL5.1.x之后系统默认不支持innodb引擎)
--with-plugins=innobase # MySQL5.1.x之后,需要使用该方法使MySQL支持innodb引擎
--sysconfdir=/etc/ # MySQL配置文件存放路径,默认为/etc
# 以下选项可以直接在mysql配置文件中设置
--with-tcp-port=3306 # 设定数据库的端口,默认为3306
--with-unix-socket-path=/tmp/mysql.sock # 使用unix套接字链接提高性能,默认为/tmp/mysql.sock
--localstatedir=/usr/local/mysql/database # 日志、数据文件目录
PS:如果发现安装完成之后mysql的安装目录下面没有文件的话,可以看看是否安装的命令打错了。我就是把make && make install 打成了 make && install ,搞了一个下午才找到原因。
3. 创建mysql专用的用户名和用户组
- [root@localhost mysql-5.1.65]# groupadd mysql
- [root@localhost mysql-5.1.65]# useradd -s /sbin/nologin -M -g mysql mysql
4. 设置权限并安装数据库
- [root@localhost mysql-5.1.65]# cd /usr/local/mysql
- # 设置安装目录权限给mysql用户和用户组
- [root@localhost mysql]# chown -R mysql .
- [root@localhost mysql]# chgrp -R mysql .
- # 安装数据库
- [root@localhost mysql]# bin/mysql_install_db --user=mysql 如果下面的my.cnf中的datadir被修改的话,修改后,必须重新执行一遍安装数据库,否则启动不了
- [root@localhost mysql]# chown -R root .
- [root@localhost mysql]# chown -R mysql var
5. 设置mysql的配置文件
- # 设置mysql的配置文件,可以根据具体情况来选择
- [root@localhost mysql]# cp share/mysql/my-medium.cnf /etc/my.cnf配置文件在/data/mysql下面,这里如果不修改my.cnf里的datadir的话,默认的数据路径是/usr/local/mysql/var。
- # 将配置文件中的skip-locking替换为skip-external-locking
- [root@localhost mysql]# sed -i 's/skip-locking/skip-external-locking/g' /etc/my.cnf
6. 启动MySQL、设置数据库root的密码并设置为开机启动
- [root@localhost mysql]# cp share/mysql/mysql.server /etc/init.d/mysql配置文件在/data/mysql下面
- [root@localhost mysql]# chmod +x /etc/init.d/mysql
- [root@localhost mysql]# /etc/init.d/mysql start
- # 设置mysql的root密码
- [root@localhost mysql]# bin/mysqladmin -uroot password 123
- # 因为操作记录中有密码,所以去除操作记录(可选)
- [root@localhost mysql]# history -c
- [root@localhost mysql]# /etc/init.d/mysql restart
- # 将mysql设置为开机启动(如果使用下面步骤设置为服务则此步骤可以省略)
- [root@localhost mysql]# cat >> /etc/rc.local <<EOF
- > /etc/init.d/mysql start
- > EOF
7. 设置MySQL为服务(可选)
- # 首先保证执行了 cp share/mysql/mysql.server /etc/init.d/mysql
- # 添加mysql为服务
- [root@localhost mysql]# chkconfig --add mysql
- [root@localhost mysql]# chkconfig --level 345 mysql on
- # 使用服务的方式启动mysql
- [root@localhost mysql]# service mysql start