Linux下使用源代码编译方式安装MySQL

http://www.javatang.com/archives/2012/09/08/1351654.html

一、卸载系统中原有的mysql

首先检查一下系统中是否安装了MySQL,如果安装的话先将其卸载。

  1. #查看系统中是否有以rpm方式安装的mysql
  2. [root@localhost /]# rpm -qa | grep -i mysql
  3. # 如果有的话就使用 rpm -e 命令将其卸载,如:
  4. [root@localhost /]# rpm -e MySQL-server-5.1.65-1.glibc23
  5. # 检查系统中是否有mysql服务
  6. [root@localhost /]# chkconfig --list | grep -i mysql
  7. # 如果有的话使用chkconfig --del命令卸载
  8. [root@localhost /]# chkconfig --del mysql
  9. # 查找是否还有mysql文件,然后使用rm -rf将其删除
  10. [root@localhost /]# whereis mysql
  11. # 查找mysql的配置文件,打开my.cnf文件,搜索datadir,然后将对应的目录也删除
  12. [root@localhost /]# whereis my.cnf
  13. # 最后再删除my.cnf文件

二、下载源代码并安装
1. 下载并解压mysql

  1. [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/
  2. [root@localhost downloads]# tar xzvf mysql-5.1.65.tar.gz

2. 编译安装MySQL

  1. [root@localhost downloads]# cd mysql-5.1.65
  2. [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下

  1. [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专用的用户名和用户组

  1. [root@localhost mysql-5.1.65]# groupadd mysql
  2. [root@localhost mysql-5.1.65]# useradd -s /sbin/nologin -M -g mysql mysql

4. 设置权限并安装数据库

  1. [root@localhost mysql-5.1.65]# cd /usr/local/mysql
  2. # 设置安装目录权限给mysql用户和用户组
  3. [root@localhost mysql]# chown -R mysql .
  4. [root@localhost mysql]# chgrp -R mysql .
  5. # 安装数据库
  6. [root@localhost mysql]# bin/mysql_install_db --user=mysql 如果下面的my.cnf中的datadir被修改的话,修改后,必须重新执行一遍安装数据库,否则启动不了
  7. [root@localhost mysql]# chown -R root .
  8. [root@localhost mysql]# chown -R mysql var

5. 设置mysql的配置文件

  1. # 设置mysql的配置文件,可以根据具体情况来选择
  2. [root@localhost mysql]# cp share/mysql/my-medium.cnf /etc/my.cnf配置文件在/data/mysql下面,这里如果不修改my.cnf里的datadir的话,默认的数据路径是/usr/local/mysql/var。
  3. # 将配置文件中的skip-locking替换为skip-external-locking
  4. [root@localhost mysql]# sed -i 's/skip-locking/skip-external-locking/g' /etc/my.cnf

6. 启动MySQL、设置数据库root的密码并设置为开机启动

  1. [root@localhost mysql]# cp share/mysql/mysql.server /etc/init.d/mysql配置文件在/data/mysql下面
  2. [root@localhost mysql]# chmod +x /etc/init.d/mysql
  3. [root@localhost mysql]# /etc/init.d/mysql start
  4. # 设置mysql的root密码
  5. [root@localhost mysql]# bin/mysqladmin -uroot password 123
  6. # 因为操作记录中有密码,所以去除操作记录(可选)
  7. [root@localhost mysql]# history -c
  8. [root@localhost mysql]# /etc/init.d/mysql restart
  9. # 将mysql设置为开机启动(如果使用下面步骤设置为服务则此步骤可以省略)
  10. [root@localhost mysql]# cat >> /etc/rc.local <<EOF
  11. > /etc/init.d/mysql start
  12. > EOF

7. 设置MySQL为服务(可选)

  1. # 首先保证执行了 cp share/mysql/mysql.server /etc/init.d/mysql
  2. # 添加mysql为服务
  3. [root@localhost mysql]# chkconfig --add mysql
  4. [root@localhost mysql]# chkconfig --level 345 mysql on
  5. # 使用服务的方式启动mysql
  6. [root@localhost mysql]# service mysql start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值