mysql旧版本:mysql-5.5.28
mysql新版本:mysql- 5.6.26
安装方式:源码编译
不习惯用rpm包来安装mysql,所以此处仍然使用 用 源码安装编译 mysql 。
若为rpm包安装,操作过程大体一致,当然路径和安装方法有出入。
因为是实验环境,首先安装mysql5.5。
basedir : /home/sano1y/mysql5.5
datadir : /home/sano1y/mysql5.5/data
socket : /tmp/mysql.sock
配置文件路径 : /home/sano1y/.my.cnf
此处操作系统用户名为sano1y,下同。
安装过程略。
安装完后配一下用户环境变量
- vi ~/.bash_profile
- 添加 export PATH=$PATH:/home/sano1y/mysql5.5/bin
- source ~/.bash_profile
将默认配置文件放到~/.my.cnf
- cp ~/mysql5.5/support-files/my-medium.cnf ~/.my.cnf
-
- [sano1y@localhost ~]$ mysql -uroot -p
- Enter password:
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 5
- Server version: 5.5.28-log Source distribution
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- mysql>
- mysql> set password=password('root');
- Query OK, 0 rows affected (0.00 sec)
- mysql>
- mysql> flush privileges;
- Query OK, 0 rows affected (0.00 sec)
① 停止旧版本 服务
- [sano1y@localhost bin]$ mysqladmin -uroot -p shutdown
- Enter password:
- 151125 00:13:35 mysqld_safe mysqld from pid file /home/sano1y/mysql5.5/data/localhost.localdomain.pid ended
- [1]+ Done ./mysqld_safe
- [sano1y@localhost mysql5.6]$ ps -ef | grep mysql
- sano1y 20590 19687 0 02:00 pts/2 00:00:00 grep mysql
-
② 备份数据库
备份数据文件,略。
同时备份参数文件。
- cp ~/.my.cnf ~/.my.cnf.bk
③ 安装新版本
同样通过cmake make make install来编译安装 mysql5.6,并初始化
并修改用户环境变量。
- vi ~/.bash_profile
- export PATH=$PATH:/home/sano1y/mysql5.6/bin
- source ~/.bash_profile
将默认5.6的配置文件修改掉(禁用)
- mv ~/mysql5.6/my.cnf ~/mysql5.6/my.cnf.default
将对应参数修改为新的。
- vi ~/.my.cnf
- [mysqld]
- basedir=/home/sano1y/mysql5.6
- datadir=/home/sano1y/mysql5.5/data
- pid-file=/home/sano1y/mysql5.5/sAno1y.pid
④ 启动新版本服务
- mysqld_safe & 启动服务
⑤ 检查升级的表
此时做mysql_upgrade进行检查
- mysql_upgrade -uroot -p --force
- mysqlcheck -uroot -p
进入mysql client检查:
此时 密码仍然是mysql5.5的,因为启动时,是在/home/sano1y/mysql5.5/data/中的mysql.user中校验。
- [sano1y@localhost bin]$ mysql -uroot -p
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is 26
- Server version: 5.6.26-log Source distribution
- Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- mysql> select @@datadir;
- +-----------------------------+
- | @@datadir |
- +-----------------------------+
- | /home/sano1y/mysql5.5/data/ |
- +-----------------------------+
- 1 row in set (0.00 sec)
顺便可以删一下mysql5.5目录里的其他目录:
- [sano1y@localhost ~]$ cd mysql5.5
- [sano1y@localhost mysql5.5]$ ls
- bin data include lib mysql-test scripts sql-bench sAno1y.pid
- COPYING docs INSTALL-BINARY man README share support-files
- [sano1y@localhost mysql5.5]$ rm -rf bin/ include/ lib/ mysql-test/ scripts/ sql-bench/ COPYING docs/ INSTALL-BINARY man/ README share/ support-files/
- [sano1y@localhost mysql5.5]$
- [sano1y@localhost mysql5.5]$ ls
- data sAno1y.pid
总结升级过程:
① 停止旧版本服务 → ② 备份数据库 → ③ 安装新版本 → ④ 启动新版本服务 → ⑤ 检查升级的表
源码编译安装mysql参考:
http://blog.itpub.net/29773961/viewspace-1364808/
(RHEL 6通用)
我的环境:
CentOS-6.5-64bit+MySQL 5.5.28
【在root用户下操作】
首先用whereis 或者 find等命令查找系统内有无其他mysql,若有,请删除。
并删除/etc/my.cnf(centos ubuntu系统会默认存在)
包依赖:
yum install cmake make -y
yum install gcc gcc-c++ autoconf bison automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* -y
解压后,进入解压出来的文件夹:
cmake -DCMAKE_INSTALL_PREFIX=安装目录 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=安装目录/data \
-DMYSQL_USER=执行用户 \
-DMYSQL_TCP_PORT=3306
可以提前mkdir出安装目录和data目录。
当然不创建也可以,这将在make install时安装。
比如我自己试验环境:
cmake -DCMAKE_INSTALL_PREFIX=/home/$USERNAME/software/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/home/$USERNAME/software/mysql/data -DMYSQL_USER=op -DMYSQL_TCP_PORT=3306
然后安装:
make && make install
make会比较慢,虽然是c系语言写的,但毕竟几十万行代码。
cd $basedir
(chown USERNAME:USERNAME -R .)
如果data文件夹在mysql之外,需cd进去,并chown mysql:mysql -R .
【在mysql or USERNAME用户下操作:】
cp support-files/my-medium.cnf ~/.my.cnf
注:mysql 5.6版本要
cp support-files/my-default.cnf ~/.my.cnf
mysql启动优先查找/etc/my.cnf,最后查找~目录下的.my.cnf。
【(待确认)若两个地方均有,则以后者.my.cnf为准(覆盖之前的参数)】
然后继续:
安装目录/scripts/mysql_install_db --user=USERNAME --basedir=安装目录 --datadir=安装目录/data #初始化。
常用的三个命令:
启动服务:
安装根目录/bin/mysqld_safe --user=USERNAME &
开启mysql:
安装目录/bin/mysql -uroot -p
关闭服务:
安装根目录/bin/mysqladmin -uroot -p shutdown
配置一下环境变量:
vi ~/.bash_profile
加入
export PATH=$PATH:安装目录/bin/
保存退出
source ~/.bash_profile即可
另外通过
安装根目录/bin/mysqld_safe --skip-grant-tables & 可以绕过登录密码,解决忘记root密码的方案之一。
当然要提前关闭mysql服务或者kill掉mysql,这样才能以--skip-grant-tables方式启动。
已经在centos 6.5测试mysql5.5及5.6编译安装通过