MySQL的安装方式有多种,但是对于不同场景,会有最适合该场景的MySQL安装方式,下面就介绍一下MySQL常见的安装方法,包括rpm安装,yum安装,通用二进制安装以及源码编译安装,以CentOS6.9操作系统为例。
一、rpm安装,安装速度较快,通常适用于企业中大规模部署mysql,安装步骤如下:
(1)首先下载MySQL的rpm安装包,如下:
客户端:http://dev.mysql.com/get/Down...
服务端:http://dev.mysql.com/get/Down...
(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 = 3306
socket = /tmp/mysql.sock
character-set-server = UTF8
innodb_file_per_table = 1
innodb_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 -P3306
a.修改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> flush privileges; #刷新权限,让mysql重读权限表
c.删除多余及不安全的用户:
mysql> drop user 'root'@'::1'; #该用户为ipv6的用户,暂时没用,可以删掉
d.删除无用的数据库:
mysql> drop database test; #该数据库在初始化的时候是默认添加的,无用,可删除
至此,rpm方式的MySQL安装及初始化完毕。
二、通用二进制安装,通用二进制安装的优点就是可以同时在一台主机上安装多个不同版本的mysql,而且在安装完成之后包括了一些常用的库文件,安装步骤如下:
(1)首先下载通用二进制安装包,下载地址为:https://dev.mysql.com/get/Dow...
(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.40
datadir = /mysql_data/
character-set-server = UTF8
port = 3306
server_id = 3 #后期做mysql主从使用,可暂不配置
socket = /mysql_data/mysql.sock
innodb_file_per_table = 1
innodb_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...
OK
Filling 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.39
PATH=$PATH:$JAVA_HOME/bin:$MYSQL_HOME/bin
[root@WB-BLOG mysql-5.6.39]# source /etc/profile #使配置文件生效
至此,通用二进制方式的mysql安装及初始化完毕。
三、源码编译安装mysql,改方式安装过程比较慢,机器性能不好的情况下,大约需要30分钟左右,通常适用于mysql定制化的安装,比如需要加入一些第三方的插件及依赖库等,安装方法如下:
(1)源码安装需要使用到cmake,首先下载cmake和mysql的源码,上传至服务器:
cmake下载地址:https://cmake.org/files/v2.8/...
mysql源码下载地址:https://dev.mysql.com/get/Dow...
(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 = UTF8
basedir = /usr/local/mysql-5.6.35
datadir = /mysql_data
port = 3306
server_id = 3
socket = /mysql_data/mysql.sock
innodb_file_per_table = 1
skip-name-resolve
innodb_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...
OK
Filling 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
[root@WB-BLOG mysql-5.6.35]# vim /etc/init.d/mysqld #编辑脚本,修改basedir和datadir目录为安装的目录
找到basedir和datadir,然后修改为如下内容,并保存退出:
basedir=/usr/local/mysql-5.6.35
datadir=/mysql_data/
(13)授权脚本的执行权限,使用跳过授权表的方式启动,然后修改密码,删除多余的用户和数据库,并配置环境变量,具体步骤同“通用二进制安装中的(11),(12),(13)”,此处后续步骤略。
[root@WB-BLOG mysql-5.6.35]# chmod +x /etc/init.d/mysqld
...
至此,源码编译安装mysql介绍完毕。