MySQL的安装方式有多种,但是对于不同场景,会有最适合该场景的MySQL安装方式,下面就介绍一下MySQL常见的安装方法,包括rpm安装,yum安装,通用二进制安装以及源码编译安装,以CentOS6.9操作系统为例。


一、rpm安装


特点:安装速度较快,通常适用于企业中大规模部署mysql。

安装步骤如下:

(1)首先下载MySQL的rpm安装包,如下:

(2)下载完成之后,上传至服务器的指定软件目录下,比如:/home/software;(3)首先查看主机上是否已经安装过mysql,使用如下命令查看

[root@WB-BLOG ~]# rpm -qa | grep -i mysql*

(4)如果存在,需要先卸载原有mysql,使用如下命令:

[root@WB-BLOG ~]# rpm -e --nodeps mysql-libs

注:--nodeps表示无依赖卸载mysql-libs,防止卸载依赖的库而导致后续安装出错

(5)添加mysql用户

[root@WB-BLOG software]# useradd mysql -s /sbin/nologin -M

(6)卸载完成之后,开始安装,首先安装服务端,然后再安装客户端

服务端安装:

[root@WB-BLOG ~]# rpm -ivh MySQL-server-5.6.32-1.linux_glibc2.5.x86_64.rpm

注:上述命令执行完毕之后,会自动初始化数据库,数据目录默认在/var/lib/mysql下,查看控制台实时日志中是否有ERROR信息,如果无ERROR信息,表示服务端安装完成,Warning信息可以忽略。安装完成之后,会在/root/.mysql_secret文件中生成mysql的默认密码,可以通过cat命令查看即可:cat /root/.mysql_secret

客户端安装:

[root@WB-BLOG ~]# rpm -ivh MySQL-client-5.6.32-1.linux_glibc2.5.x86_64.rpm

注:安装客户端的目的是可以在服务器上使用到mysql的一些客户端连接命令,比如:mysql命令,如果确定不在服务器上操作mysql,可以不安装此客户端。

(7)安装完成之后,添加mysql的配置文件my.cnf,对于mysql,该配置文件有一个加载顺序,mysql启动的时候会按照这个顺序去加载,顺序为:/etc/my.cnf,basedir/my.cnf,datadir/my.cnf,~/.my.cnf编辑/etc/my.cnf配置文件,写入如下内容:

[mysql]socket=/tmp/mysql.sock [mysqld]port=3306socket=/tmp/mysql.sockcharacter-set-server=UTF8innodb_file_per_table=1innodb_flush_log_at_trx_commit=2

(8)编辑完配置文件之后,保存。然后启动mysql数据库,如下:

[root@WB-BLOG ~]# service mysql start

(9)启动之后,使用如下mysql命令行工具登陆mysql,默认密码为/root/.mysql_secret中生成的,登陆mysql之后,完成如下的初始工作

[root@WB-BLOG mysql]# mysql -uroot -pBcbwbAXM_kUL8lpE -h127.0.0.1 -P3306a.修改root密码,有两种方法:  方法一:在shell命令行中使用"mysqladmin"命令修改[root@WB-BLOG mysql]# mysqladmin -uroot -pBcbwbAXM_kUL8lpE password 'root' 注:修改密码的时候需要使用password函数,而且密码尽可能设置复杂一些;b.修改远程连接权限:#查看当前已有用户及权限mysql> select user,host,password from mysql.user; #更新权限mysql> update user set host = '192.168.0.%' where host = 'wb-blog';#注:"set host = '192.168.0.%'"表示只允许192.168.0网段内的主机使用'root'用户远程连接,此处也可以指定ip段或者对所有用户开放,可根据实际场景配置#刷新权限,让mysql重读权限表mysql> flush privileges;c.删除多余及不安全的用户:#该用户为ipv6的用户,暂时没用,可以删掉mysql> drop user 'root'@'::1';d.删除无用的数据库:#该数据库在初始化的时候是默认添加的,无用,可删除mysql> drop database test;

至此,rpm方式的MySQL安装及初始化完毕。

二、通用二进制安装

特点:通用二进制安装的优点就是可以同时在一台主机上安装多个不同版本的mysql,而且在安装完成之后包括了一些常用的库文件。安装步骤如下:

(2)使用yum命令安装mysql的依赖库,mysql主要有如下两个依赖库

[root@WB-BLOG mysql]# yum install -y ncurses-devel libaio-devel

注:如果没有网络的情况下,使用yum安装会提示错误。此时可以下载依赖库所对应的rpm包上传至服务器完成安装;或者还可以使用iso镜像文件搭建私有的yum源,后面写文章介绍如何在局域网或者本地搭建及配置私有的yum源。(3)安装完成之后,添加mysql用户

[root@WB-BLOG ~]# useradd mysql -s /sbin/nologin -M

(4)解压mysql通用二进制安装包,并重命名目录

[root@WB-BLOG home]# tar xf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz -C /usr/local/[root@WB-BLOG home]# cd /usr/local/[root@WB-BLOG local]# mv mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz/ mysql-5.6.40

(5)创建mysql的数据目录,并授权mysql用户。注意,数据目录最好别放在系统盘上,如果数据量后期比较大的话,最好事先选择一个空间比较大的数据盘作为mysql的存储目录,方便后期数据备份及迁移

[root@WB-BLOG local]# mkdir -pv /mysql_data/[root@WB-BLOG local]# chown -R mysql.mysql /mysql_data

(6)编辑mysql的配置文件my.cnf,可以从mysql解压目录中拷贝一份到/etc/my.cnf下,并修改,在配置文件中指定mysql的一些配置参数,如下:

[mysql]socket=/mysql_data/mysql.sock[mysqld]basedir=/usr/local/mysql-5.6.40datadir=/mysql_data/character-set-server=UTF8port=3306#后期做mysql主从使用,可暂不配置server_id=3socket=/mysql_data/mysql.sockinnodb_file_per_table=1innodb_flush_log_at_trx_commit=2

(7)初始化mysql数据库

[root@WB-BLOG local]# cd /usr/local/mysql-5.6.39/[root@WB-BLOG mysql-5.6.39]# ./scripts/mysql_install_db --basedir=/usr/local/mysql-5.6.39 --datadir=/mysql_data --user=mysql

注意:看到有如下所示的两个单行的OK字样,表示初始化成功

Installing MySQL system tables...OKFilling help tables...OK

(8)拷贝mysql的启动脚本文件至/etc/init.d/目录下,并重命名为mysqld,授予其可执行权限

[root@WB-BLOG mysql-5.6.39]# cp /usr/local/mysql-5.6.40/support-files/mysql.server /etc/init.d/mysqld[root@WB-BLOG mysql-5.6.39]# chmod +x /etc/init.d/mysqld

(9)修改mysql启动脚本中的默认安装路径

[root@WB-BLOG mysql-5.6.39]# sed -i "s#/usr/local/mysql#/usr/local/mysql-5.6.40#g" /etc/init.d/mysqld

(10)将mysqld添加至系统服务,并设置自动启动

#配置[root@WB-BLOG mysql-5.6.39]# chkconfig --level 2345 mysqld on#查看配置结果[root@WB-BLOG mysql-5.6.39]# chkconfig --list mysqld

(11)使用跳过授权表方式启动mysql数据库,并登陆mysql,设置密码,然后完成mysql使用前的初始化准备工作

#以跳过授权表的方式启动[root@WB-BLOG mysql-5.6.39]# /usr/local/mysql-5.6.39/bin/mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables &#然后两次回车[root@WB-BLOG mysql-5.6.39]# mysql -uroot -p#修改密码:mysql> update mysql.user set password = password('root') where user = 'root';#删除多余用户mysql> delete from mysql.user where host = '::1';#重读权限表mysql> flush privileges;#清理多余数据库mysql> drop database test;

(12)退出mysql命令行,使用mysqladmin命令关闭数据库,并重新启动,使数据库再次使用权限认证

mysql> \q#需要使用刚才修改的密码[root@WB-BLOG mysql-5.6.39]# ./bin/mysqladmin -uroot -proot shutdown[root@WB-BLOG mysql-5.6.39]# service mysqld start

(13)配置mysql的环境变量,方便使用客户端连接

[root@WB-BLOG mysql-5.6.39]# vim /etc/profile

添加如下内容:

MYSQL_HOME=/usr/local/mysql-5.6.39PATH=$PATH:$JAVA_HOME/bin:$MYSQL_HOME/bin

(14)使用source命令使配置文件生效

#使配置文件生效[root@WB-BLOG mysql-5.6.39]# source /etc/profile

至此,通用二进制方式的mysql安装及初始化完毕。

三、源码编译安装mysql

特点:该方式安装过程比较慢,机器性能不好的情况下,大约需要30分钟左右,通常适用于mysql定制化的安装,比如需要加入一些第三方的插件及依赖库等,安装方法如下:

(1)源码安装需要使用到cmake,首先下载cmake和mysql的源码,上传至服务器:

(2)使用yum方式安装gcc和gcc-c++,否则编译cmake和mysql的时候会报错,如下:

[root@WB-BLOG mysql-5.6.39]# yum install -y gcc gcc-c++

(3)解压cmake,并进入cmake软件目录

[root@WB-BLOG software]# tar xf cmake-2.8.8.tar.gz[root@WB-BLOG software]# cd cmake-2.8.8[root@WB-BLOG cmake-2.8.8]# ./configure[root@WB-BLOG cmake-2.8.8]# gmake[root@WB-BLOG cmake-2.8.8]# gmake install

(4)安装mysql的依赖库:ncurses-devel

[root@WB-BLOG software]# yum install -y ncurses-devel

(5)解压mysql

[root@WB-BLOG software]# tar xf mysql-5.6.35.tar.gz && cd mysql-5.6.35
[root@WB-BLOG software]# mv mysql-5.6.35 /usr/local

(6)创建mysql组和mysql用户

[root@WB-BLOG mysql-5.6.35]# groupadd mysql[root@WB-BLOG mysql-5.6.35]# useradd mysql -s /sbin/nologin -M -g mysql

(7)创建mysql的数据目录并授权

[root@WB-BLOG mysql-5.6.35]# mkdir -pv /mysql_data/[root@WB-BLOG mysql-5.6.35]# chown -R mysql.mysql /mysql_data/

(8)使用cmake编译mysql,如下的编译选项为最基本的,更多选项可以参考官方文档

[root@WB-BLOG mysql-5.6.35]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.35 -DMYSQL_DATADIR=/mysql_data/ -DMYSQL_UNIX_ADDR=/mysql_data/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=0 -DWITH_FAST_MUTEXES=1 -DWITH_ZLIB=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DWITH_DEBUG=0 -DWITH_PARTITION_STORAGE_ENGINE=1

...等待编译...

[root@WB-BLOG mysql-5.6.35]# make[root@WB-BLOG mysql-5.6.35]# make install

(9)如果上述过程正常结束,表示mysql编译安装成功,否则停下来检查编译过程中的错误,通常编译期的错误多数为缺少类库导致,可安装相关类库后重新编译。然后编辑mysql的配置文件my.cnf,写入如下内容:

[mysql]socket=/mysql_data/mysql.sock[mysqld]character-set-server=UTF8basedir=/usr/local/mysql-5.6.35datadir=/mysql_dataport=3306server_id=3socket=/mysql_data/mysql.sockinnodb_file_per_table=1skip-name-resolveinnodb_flush_log_at_trx_commit=2

(10)初始化mysql数据库

[root@WB-BLOG mysql-5.6.35]# cd /usr/local/mysql-5.6.35/[root@WB-BLOG mysql-5.6.35]# ./scripts/mysql_install_db --basedir=/usr/local/mysql-5.6.35 --datadir=/mysql_data/ --user=mysql

(11)看到如下的字样,表示mysql数据库初始化成功

Installing MySQL system tables...OKFilling help tables...OK

(12)拷贝启动脚本到/etc/init.d目录下

[root@WB-BLOG mysql-5.6.35]# cp /usr/local/mysql-5.6.35/support-files/mysql.server.sh /etc/init.d/mysqld#编辑脚本,修改basedir和datadir目录为安装的目录[root@WB-BLOG mysql-5.6.35]# vim /etc/init.d/mysqld

找到basedir和datadir,然后修改为如下内容,并保存退出:

basedir=/usr/local/mysql-5.6.35datadir=/mysql_data/

(13)授权脚本的执行权限,使用跳过授权表的方式启动,然后修改密码,删除多余的用户和数据库,并配置环境变量,具体步骤同“通用二进制安装中的(11),(12),(13)”,此处后续步骤略。

[root@WB-BLOG mysql-5.6.35]# chmod +x /etc/init.d/mysqld...

    至此,源码编译安装mysql介绍完毕。其实在现在还有一种更加简单的方式,就是直接使用docker来完成mysql的安装,安装过程比较简单,但是前置要求是系统内核版本在3.10以上,而且要具有docker运行环境,后续docker系列的文章会介绍。