MySQL5.7多种方式安装、升级、卸载

19 篇文章 0 订阅
4 篇文章 0 订阅

 

MySQL有源码安装、二进制安装、rpm安装三种安装方式。

源码安装方式可用性最大,可以指定安装目录、数据目录等,并且可以自己定制mysql的功能和插件,只安装需要的模块,不需要的模块可以不用安装,例如储存引擎只安装innodb。源码安装过程需cmake编译,较为复杂,并且需要安装一些依赖包。

二进制安装为官方编译,稳定,安装过程相对简单,也可以指定相关目录,移植性高;但不可定制相关功能。

rpm安装最为方便、简单,默认配置,但没有可控性,这里不做描述。

 

一、mysql_5.7二进制安装

1、下载mysql glibc版压缩包

2、解压、移动到/usr/local/mysql,并创建mysql用户和组

tar -xzvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz 
mv ./mysql-5.7.23-linux-glibc2.12-x86_64 /usr/local/mysql
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

3、设置目录权限

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

4、查看数据库服务相关目录,修改配置文件

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf  

 (PS:也可手动创建/etc/my.cnf文件添加以下内容;)

5、配置mysql服务脚本

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

修改basedir、 datadir、 pid_file 三个路径与my.cnf对应

6、初始化系统数据库和系统表

bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
# 5.7.6之前的版本使用scripts/mysql_install_db --user=mysql

如图的官方文档相关说明:

--initialize  #初始化密码,会输出到屏幕上

可能报错:

FATAL ERROR: please install the following Perl m odules before executing scripts/mysql_install_db:

   Data::Dumper

解决方法:yum -y install autoconf

7、启动数据库

bin/mysqld_safe --user=mysql &

可能报错:

Starting MySQL..... ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysqld.pid)

原因:mysql没有对mysql主目录取得完全权限

解决方法:chown -R mysql:mysql /usr/local/mysql

8、添加mysql服务至服务列表

chkconfig --add mysqld
chkconfig mysqld on

9、将mysql/bin目录命令添加到全局路径参数path

使配置立即生效

source /etc/profile

10、添加服务自启动

将service mysqld start 添加至文件 /etc/rc.local

11、登录

第一次登录可能会报错:

ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.

意思是初始化的密码已过期

解决步骤:

编辑配置文件,在[mysqld]加上skip-grant-tables(即不启用授权表),重启mysqld

成功登录后把root密码改为不过期:

update mysql.user set password_expired='N' where user='root'

再次编辑配置文件把skip-grant-tables去掉,重启mysqld

登录修改root密码:

set password for 'root'@localhost = PASSWORD(‘密码’);

PS:可以在启动时加上该参数:bin/mysqld_safe --user=mysql --skip-grant-tables &

而不用更改配置文件且无需重启

 

二、mysql_5.7源码安装

从mysql5.5起,mysql源码安装的编译工具configure开始向cmake过渡;我这里也没去研究为什么要用cmake,反正它就是代替之前的configure做一些安装前的检查、配置等一系列工作。

1、准备工作

1.1、安装依赖包

yum install ncurses-devel libaio-devel gcc gcc-c++ bison -y

1.2、安装cmake编译工具

yum install cmake –y

1.3、创建MySQL用户和组

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

1.4、创建boost库目录,cmake编译时需要用到

mkdir –p /usr/local/boost

2、官网下载源码安装包mysql-5.7.23.tar.gz

3、解压进到该目录使用cmake编译

tar –zxvf mysql-5.7.23.tar.gz
cd mysql-5.7.23

开始编译:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mydata \
-DSYSCONFDIR=/etc \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_SSL=system \-DWITH_ZLIB=system \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost

部分选项说明:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \       #(mysql主目录)

-DMYSQL_DATADIR=/data/mydata \                #(mysql数据目录)

-DSYSCONFDIR=/etc \                           #(mysql配置文件目录)

-DMYSQL_UNIX_ADDR= /var/lib/mysql/mysql.sock \     #(mysql.sock绝对路径名,默认是/tmp/mysql.sock)

-DWITH_INNOBASE_STORAGE_ENGINE=1 \       #(编译安装INNODB存储引擎)

-DWITH_MYISAM_STORAGE_ENGINE=1 \       #(编译安装MYISAM存储引擎)

-DWITH_READLINE=1 \       #(启用readline 库的支持提供可供编辑的命令行

-DWITH_SSL=system \       # (SSL支持的类型,这里使用系统的OpenSSL库)

-DWITH_ZLIB=system \       #(zlib支持类型,这里使用系统的zlib库)

-DDEFAULT_CHARSET=utf8 \             #(默认字符集) -DDEFAULT_COLLATION=utf8_general_ci \   #(默认字符编码)

-DDOWNLOAD_BOOST=1 \     #(是否下载Boost源(如果它不在指定位置),默认是 OFF)

-DWITH_BOOST=/usr/local/boost   #(指定Boost库目录位置)

关于这些选项的官方说明:

https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html#option_cmake_mysql_unix_addr

(错误:Cannot find appropriate system libraries for WITH_SSL=system

解决方案:yum install ncurses-devel 和 yum install openssl-devel)

4、编译并安装

make && make install

5、配置、初始化、启动过程到最后的登录参考上述二进制安装的3-11步骤,这里就不再做描述。

 

三、源码及二进制安装的mysql5.6升级到5.7

如果没有数据,可直接卸载重新安装即可。想要不丢失数据顺利升级,只要备份好原数据目录就不会有什么问题。源码跟二进制的升级方式基本一样,区别只在于源码需要编译而二进制只需解压即可。

先晒出官方说明:

1、关闭mysql服务进程

service mysqld stop

2、备份原mysql主目录

mv /usr/local/mysql /usr/local/mysql_back

3-(二进制)、解压5.7二进制包使之成为新的mysql主目录

tar -xzvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz 
mv ./mysql-5.7.23-linux-glibc2.12-x86_64 /usr/local/mysql

3-(源码)、解压5.7源码安装包做cmake、make && make install生成新的mysql主目录

tar –zxvf mysql-5.7.23.tar.gz
cd mysql-5.7.23
cmake …
make && make install

4、拷贝原数据目录到新mysql主目录,并设置目录权限

cp -R /usr/local/mysql_back/data /usr/local/mysql/
cd /usr/local/mysql/
chown -R mysql:mysql ./

(PS:mysql5.7若开启log-bin必需在配置文件加上server-id)

5、启动mysql服务,并使用mysql_upgrade更新升级

bin/mysqld_safe --user=mysql &
./bin/mysql_upgrade -uroot

6、升级完成后在数据目录下会生成mysql_upgrade_info,确定升级无误后可删除原数据库目录

rm -rf  /usr/local/mysql_back

7、可能会出现的一些问题

7.1查看二进制日志时报错:ERROR: Error in Log_event::read_log_event(): 'Sanity check failed', data_len: 31, event_type: 35

问题分析:系统默认用的mysqlbinlog绝对路径为/usr/bin/mysqlbinlog,跟更新后的/usr/local/mysql/bin/mysqlbinlog版本不一致,如图一个为3.3一个为3.4:

解决方法:覆盖掉旧版本的mysqlbinlog

cp /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog

 

四、卸载二进制及源码安装的mysql

1、关闭mysql服务进程

service mysqld stop

2、删除mysql主目录、配置文件、启动文件

rm -rf /usr/local/mysql/
rm -rf /etc/my.cnf
rm -rf /etc/init.d/mysqld

3、删除mysql用户

userdel –r mysql

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值