很多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就好,例如使用5.6.20版
tar zxvf /home/mysql-5.6.20-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
mv /usr/local/mysql-5.6.20-linux-glibc2.5-x86_64/ /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
先將etc/my.cnf 刪除
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
cp support-files/mysql.server /etc/init.d/mysqld
添加服務,拷貝服務腳本到init.d目錄,並設置開機啓動
-- 註冊服務: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('passwrod');
設置遠程訪問的用戶:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'passwrod' 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/,則需要將/usr/local/mysql/data 拷貝過去,然後還原
mv /var/lib/mysql /home/workflow/mysqlbak/
mkdir /var/lib/mysql
chmod -R 777 /var/lib/mysql
cp -r /usr/local/mysql/data/* /var/lib/mysql/
chmod -R 777 /var/lib/mysql
啓動mysql,即完成