系统详情
系统:CentOS 6.7
数据库版本:5.6.29-log MySQL Community Server (GPL)
以下操作、介绍仅针对CentOS 6发行版本,其他发行版本的Linux可能有细微变化。
1. 安装方法介绍
MySQL安装方法主要有以下几种:
二进制包安装(
Generic Binaries
)安装方法较简单,且可以自定义安装目录
安装针对特定Linux发行版预编译好的软件包(如CentOS的rpm软件包,Ubuntu的deb软件包等)
使用此方法安装,一般需要先手动解决各软件包的依赖关系,比较麻烦
MySQL官方软件源安装(一般,不同的Linux发行版对应不同的软件源,比如CentOS系统对应的是yum源)
使用此方法安装比较简单,只需在系统添加软件源,再执行一条安装命令即可搞定(如:
yum install mysql-community-server
)但当在同一个系统,同时安装多个MySQL版本时,如果不清楚YUM源的安装路径及逻辑,容易造成混乱
编译源码安装
需要自己动手编译
且对于新手来说,自己编译的MySQL未必会比官方已经编译好的二进制包/软件包好
除非对于MySQL默认的功能、参数有个性化需求需要修改,不推荐编译安装
本文主要介绍使用二进制包安装MySQL,其他安装方法的详细操作,可参考官方文档:http://dev.mysql.com/doc/refman/5.6/en/installing.html
2. 下载MySQL二进制包
2.1. 下载链接
MySQL官方下载链接:
下载主页:http://dev.mysql.com/downloads/mysql/
5.6.29版本链接:http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
如果下载速度较慢,可以使用sohu镜像下载:
下载主页:http://mirrors.sohu.com/mysql/MySQL-5.6/
2.2. 下载MySQL
可以在Windows系统下载后,上传到服务器;也可以直接在Linux服务器上执行以下命令,进行下载:
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
3. 安装MySQL,及进行初始化
以下命令需使用root权限执行。
3.1. 新建程序安装目录
mkdir -pv opt/mysql
3.2. 解压安装包至安装目录
tar -xvzf mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz -C opt/mysql
3.3. 新建软链接mysql,链接至mysql-5.6.29-linux-glibc2.5-x86_64目录
ln -sv /opt/mysql/mysql-5.6.29-linux-glibc2.5-x86_64 /usr/local/mysql
3.4. 新建mysql用户和组
groupadd mysql useradd -g mysql -r -s /sbin/nologin mysql
3.5. 新建MySQL数据、日志、tmp目录
# 此处本人以MySQL端口3376为文件夹后缀,便于区分不同端口的MySQL实例的数据目录 # 一次性创建3个目录(逗号后面不能有空格),-p 递归创建目录 mkdir -pv /data/mysql/mysql3376/{data,logs,tmp}
3.6. 修改数据目录的所有者、组为mysql
chown -R mysql:mysql /data/mysql
3.7. 添加、修改MySQL配置文件my.cnf
可下载使用本文提供的
my.cnf
:链接:http://pan.baidu.com/s/1slP7LCx 密码:7oib
也可使用自己的
my.cnf
cp ./my.cnf /etc/
配置文件中的关键参数如下,其他见附件:
[client] port = 3376 socket = /tmp/mysql3376.sock # The MySQL server [mysqld] port = 3376 basedir = /usr/local/mysql datadir = /data/mysql/mysql3376/data socket = /tmp/mysql3376.sock
3.8. 初始化数据目录datadir
使用二进制包安装,和源码编译安装时,需要初始化数据目录
一般情况下,仅在第一次安装MySQL时,需要初始化数据目录
使用
mysql_install_db
进行初始化初始化数据目录时,不会覆盖已有的权限表信息和已有的数据
# 注意指定`user`参数值为`mysql` cd /usr/local/mysql ./scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql
执行以上命令后,若出现类似于以下的输出,包含两个OK
,则说明初始化成功。
Installing MySQL system tables...2016-06-20 23:39:36 0 [Note] ./bin/mysqld (mysqld 5.6.29-log) starting as process 1866 ... OK Filling help tables...2016-06-20 23:39:43 0 [Note] ./bin/mysqld (mysqld 5.6.29-log) starting as process 1912 ... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system ...
4. MySQL安装的后续设置
4.1. 添加系统环境变量
# 建议直接在 /etc/profile.d/ 目录新增 mysql.sh 文件设置环境变量,而不是直接在 /etc/profile 文件里添加环境变量 # 以免操作错误,清空了 /etc/profile,造成系统问题 echo "export PATH=\$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh source /etc/profile.d/mysql.sh
添加环境变量后,可以直接在系统任意位置运行mysql
、mysqld
等命令,而不用再在执行这些命令前,切换到MySQL安装目录/usr/local/mysql/bin
。
4.2. 添加自启动服务
实际生产环境不建议自启动MySQL
线上库本着一个原则,出错了就停下来,如果开自动启动,出现异常了就无法感知出来
可以自己写脚本自动修复错误后,自动/批量启动
cd /usr/local/mysql cp ./support-files/mysql.server /etc/init.d/mysql chkconfig --add mysql chkconfig mysql on
5. 启动MySQL
mysqld --user=mysql &
若没有报错信息,则基本说明MySQL启动成功
使用以下命令查看是否存在MySQL进程
ps aux | grep mysql如下,存在mysqld进程,说明启动成功
[root@node601 ~]# ps aux | grep mysql mysql 1972 0.0 9.6 780496 48472 pts/1 Sl 14:56 0:00 mysqld --user=mysql如果未启动成功,可查看错误日志里的
ERROR
信息,确认原因错误日志默认在
datadir
文件夹,路径:/data/mysql/mysql3376/data/错误日志默认名称为
`hostname`.error
,我的配置文件里指定了错误日志名称log-error
为error.logMySQL启动不起来,很多时候是由于权限设置不当引起的,还有可能是以下一些原因:
CentOS 6 关闭iptables:
service iptables stop chkconfig iptables off检查iptables是否关闭自启动,如下全为off,则说明已关闭
[root@node601 data]# chkconfig --list iptables iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:offCentOS 7 关闭firewalld.service
systemctl stop firewalld.service systemctl disable firewalld.service检查selinux是否关闭:
getenforce
输出结果若为Enforcing
则说明未关闭;若为Disabled
,则说明已关闭。临时关闭selinux(重启后失效)
setenforce permissive永久关闭selinux
vim /etc/sysconfig/selinux修改
SELINUX=disabled防火墙没有开启MySQL的端口,建议新手直接关闭防火墙
selinux未关闭,需关闭selinux
6. 测试MySQL
6.1. 查看错误日志是不是有ERROE
错误信息
若没有ERROR
,则说明启动正常(搜索日志中是否存在ERROR
字段)
6.2. 查看MySQL Server的版本
mysqladmin -u root -p version # 没有设置root密码的话,可以直接使用以下命令查询 # mysqladmin version
输出信息如下:
[root@node601 ~]# mysqladmin version mysqladmin Ver 8.42 Distrib 5.6.29, for linux-glibc2.5 on x86_64 Copyright (c) 2000, 2016, 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. Server version 5.6.29-log Protocol version 10 Connection Localhost via UNIX socket UNIX socket /tmp/mysql3376.sock Uptime: 1 min 28 sec Threads: 1 Questions: 2 Slow queries: 0 Opens: 70 Flush tables: 1 Open tables: 63 Queries per second avg: 0.022
错误日志无ERROR
信息,及以上命令输出信息正常,则说明MySQL已正常启动,MySQL连接正常。
6.3. 关闭MySQL
mysqladmin -vvv shutdown # 指定socket # mysqladmin -vvv -S /tmp/mysql3376.sock shutdown
输出如下:
[root@node601 data]# mysqladmin -vvv shutdown Shutdown signal sent to server; Waiting for pid file to disappear
7. 巩固MySQL安全
MySQL安装后,需要执行以下操作,来增强数据库的安全性
删除匿名用户
移除任何人都可以访问
test
及test_
开头的库的授权删除test库
设置root密码
可以通过使用以下命令,自动执行以上操作:
# 由于只能使用默认的socket '/tmp/mysql.sock'连接server,无法使用自定义路径的/tmp/mysql3376.sock # 所以先新建一个软链接至/tmp/mysql3376.sock,再执行mysql_secure_installation ln -s /tmp/mysql3376.sock /tmp/mysql.sock mysql_secure_installation # 执行完,再删除掉软链接 rm -f /tmp/mysql.sock
8. 附件
可以从以下百度网盘分享,下载以下列出的文件,上传到服务器的同一个目录,执行以下命令,进行一键安装和初始化。
source install_mysql.sh
链接:http://pan.baidu.com/s/1i5Jc0Qx ,密码:6xxr
文件列表:
MySQL二进制安装包
mysql-5.6.29-linux-glibc2.5-x86_64.tar.gzMySQL配置文件
my.cnf安装脚本
install_mysql.sh
9. 声明
本文部分内容来自知数堂远程培训:https://zhishuedu.taobao.com/




