系统详情
- 系统:CentOS 6.7
- 数据库版本:5.6.29-log MySQL Community Server (GPL)
以下操作、介绍仅针对CentOS 6发行版本,其他发行版本的Linux可能有细微变化。
安装方法介绍
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
下载MySQL二进制包
下载链接
- MySQL官方下载链接:
- 如果下载速度较慢,可以使用sohu镜像下载:
下载MySQL
可以在Windows系统下载后,上传到服务器;也可以直接在Linux服务器上执行以下命令,进行下载:1
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
安装MySQL,及进行初始化
以下命令需使用root权限执行。
新建程序安装目录
1 | mkdir -pv /opt/mysql |
解压安装包至安装目录
1 | tar -xvzf mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz -C /opt/mysql |
新建软链接mysql,链接至mysql-5.6.29-linux-glibc2.5-x86_64目录
1 | ln -sv /opt/mysql/mysql-5.6.29-linux-glibc2.5-x86_64 /usr/local/mysql |
新建mysql用户和组
1 | groupadd mysql |
新建MySQL数据、日志、tmp目录
1 | # 此处本人以MySQL端口3376为文件夹后缀,便于区分不同端口的MySQL实例的数据目录 |
修改数据目录的所有者、组为mysql
1 | chown -R mysql:mysql /data/mysql |
添加、修改MySQL配置文件my.cnf
可下载使用本文提供的
my.cnf
:链接:http://pan.baidu.com/s/1slP7LCx 密码:7oib
也可使用自己的
my.cnf
1 | cp ./my.cnf /etc/ |
配置文件中的关键参数如下,其他见附件:1
2
3
4
5
6
7
8
9
10[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
初始化数据目录datadir
- 使用二进制包安装,和源码编译安装时,需要初始化数据目录
- 一般情况下,仅在第一次安装MySQL时,需要初始化数据目录
- 使用
mysql_install_db
进行初始化 - 初始化数据目录时,不会覆盖已有的权限表信息和已有的数据
1 | # 注意指定`user`参数值为`mysql` |
执行以上命令后,若出现类似于以下的输出,包含两个OK
,则说明初始化成功。1
2
3
4
5
6
7
8
9Installing 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
...
MySQL安装的后续设置
添加系统环境变量
1 | # 建议直接在 /etc/profile.d/ 目录新增 mysql.sh 文件设置环境变量,而不是直接在 /etc/profile 文件里添加环境变量 |
添加环境变量后,可以直接在系统任意位置运行mysql
、mysqld
等命令,而不用再在执行这些命令前,切换到MySQL安装目录/usr/local/mysql/bin
。
添加自启动服务
实际生产环境不建议自启动MySQL
- 线上库本着一个原则,出错了就停下来,如果开自动启动,出现异常了就无法感知出来
- 可以自己写脚本自动修复错误后,自动/批量启动
1 | cd /usr/local/mysql |
启动MySQL
1 | mysqld --user=mysql & |
- 若没有报错信息,则基本说明MySQL启动成功
使用以下命令查看是否存在MySQL进程
1
ps aux | grep mysql
如下,存在mysqld进程,说明启动成功
1
2[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.log
- 错误日志默认在
MySQL启动不起来,很多时候是由于权限设置不当引起的,还有可能是以下一些原因:
防火墙没有开启MySQL的端口,建议新手直接关闭防火墙
CentOS 6 关闭iptables:
1
2service iptables stop
chkconfig iptables off检查iptables是否关闭自启动,如下全为off,则说明已关闭
1
2[root@node601 data]# chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:offCentOS 7 关闭firewalld.service
1
2systemctl stop firewalld.service
systemctl disable firewalld.service
selinux未关闭,需关闭selinux
- 检查selinux是否关闭:
getenforce
输出结果若为Enforcing
则说明未关闭;若为Disabled
,则说明已关闭。 临时关闭selinux(重启后失效)
1
setenforce permissive
永久关闭selinux
1
vim /etc/sysconfig/selinux
修改
SELINUX=disabled
- 检查selinux是否关闭:
测试MySQL
查看错误日志是不是有ERROE
错误信息
若没有ERROR
,则说明启动正常(搜索日志中是否存在ERROR
字段)
查看MySQL Server的版本
1 | mysqladmin -u root -p version |
输出信息如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[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连接正常。
关闭MySQL
1 | mysqladmin -vvv shutdown |
输出如下:1
2[root@node601 data]# mysqladmin -vvv shutdown
Shutdown signal sent to server; Waiting for pid file to disappear
巩固MySQL安全
MySQL安装后,需要执行以下操作,来增强数据库的安全性
- 删除匿名用户
- 移除任何人都可以访问
test
及test_
开头的库的授权 - 删除test库
- 设置root密码
可以通过使用以下命令,自动执行以上操作:1
2
3
4
5
6
7
8# 需要先启动MySQL
mysqld --user=mysql &
# 由于只能使用默认的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
附件
可以从以下百度网盘分享,下载以下列出的文件,上传到服务器的同一个目录,执行以下命令,进行一键安装和初始化。1
source install_mysql.sh
- 链接:http://pan.baidu.com/s/1i5Jc0Qx ,密码:6xxr
文件列表:
- MySQL二进制安装包
mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
- MySQL配置文件
my.cnf
- 安装脚本
install_mysql.sh
声明
本文部分内容来自知数堂远程培训:https://zhishuedu.taobao.com/