> 数据库 > MySQL >

CentOS下通过tar包升级mysql5.6

很多linux中自带的mysql版本是5.1,最近由于需要使用新版本特性,必须升级。

网上很多升级方法都是建议下载rpm包后使用yum升级,但这种方法必须上网下载升级包,而且由于网络不稳定或下载的镜像文件找不到,通常不顺利。

经过本次的实践摸索,成功使用tar包进行升级,现分享:

1、备份

停止mysql 

/etc/init.d/mysqld stop

备份数据库文件: 看my.cnf下配置的data文件目录,一般是放到 /var/lib/mysql/,复制 /var/lib/mysql/下的数据库文件到安全的目录 

cp -r /var/lib/mysql   /home/workflow/mysqlbak/

再将 /etc/my.cnf 备份一下,然后删除

mv /etc/my.cnf  /home/workflow/mysqlbak/

2、删除 

rpm -e mysql   //普通删除模式

rpm -e --nodeps mysql    // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
删除后,/usr/local/mysql目录将被删除

3、安装

安装有两种方式,一种是编译方式,一种为非编译方式,编译方式只需从官网下载一个几十M的源文件,但编译时间需要20分钟左右。非编译方式则需从官网下载一个300M左右已编译好的包,但免除了安装gcc等编译环境的烦恼

3.1) 非编译方式

下载Generic版本

 

有64和32位的

 

下载后可以拷贝到/usr/local/目录下,解压,然后将目录名改成mysql就好

3.2) 编译方式

安装编译代码需要的包:

yum -y install make gcc-c++ cmake bison-devel ncurses-devel

如果报以下错误:

 

 

到下面的网站下载bison-devel-2.4.1-5.el6.x86_64.rpm

http://pkgs.org/centos-6/centos-x86_64/bison-devel-2.4.1-5.el6.x86_64.rpm.html

 

yum localinstall bison-devel-2.4.1-5.el6.x86_64.rpm

然后重新运行yum -y install make gcc-c++ cmake bison-devel ncurses-devel 即成功了

下载:

wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.19.tar.gz

tar xvf mysql-5.6.19.tar.gz

cd mysql-5.6.19

编译

cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DSYSCONFDIR=/etc \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \

-DMYSQL_TCP_PORT=3306 \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DEXTRA_CHARSETS=all \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci

make && make install

 

4、初始化配置

使用下面的命令查看是否有mysql用户及用户组

cat /etc/passwd 查看用户列表

cat /etc/group  查看用户组列表

如果没有就创建

groupadd mysql

useradd -g mysql mysql

修改/usr/local/mysql权限

 

chown -R mysql:mysql /usr/local/mysql

 

cd /usr/local/mysql

scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

若不行,则 chmod -R 777  /usr/local/mysql

 

先将etc/my.cnf移除,

启动MySQL

添加服务,拷贝服务脚本到init.d目录,并设置开机启动

cp support-files/mysql.server /etc/init.d/mysqld

-- 注册服务:chkconfig mysqld on

-- 使用服务方式启动service mysqld start  --启动MySQL

也可以不注册,直接使用 /etc/init.d/mysqld start启动

启动mysql:

mysql -uroot  

若报找不到命令,则需添加系统路径

# vim /etc/profile

在最后,添加:

PATH=/usr/local/mysql/bin:$PATH

export PATH

或者用alias mysql=’/usr/local/mysql/bin/mysql’

保存,退出,然后运行:

#source /etc/profile

不报错则成功。

mysql -uroot  

mysql> SET PASSWORD = PASSWORD('sangfordb');

设置远程访问的用户:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'sangfordb' WITH GRANT OPTION;

FLUSH PRIVILEGES;

然后查看,

SELECT host FROM mysql.user WHERE User = 'root';

看是否有显示%

拷贝备份的my.cnf回到/etc/my.cnf

使用原my.cnf文件后可能要进行的修改:

如果原来[mysqld]下有skip-locking,需要注释,5.6不支持

如果原来[mysqld]下有default-character-set,需要改成character_set_server

若data文件在默认的/usr/local/mysql文件夹中,则需要拷贝回去

/bin/cp -rf  /home/pan/mysqlbak/mysql  /usr/local/mysql/data/

chgrp -R mysql /usr/local/mysql/data/ && chown -R mysql /usr/local/mysql/data/

若data文件在/var/lib/,则不用拷贝

 

启动mysql,即完成

(责任编辑:IT)