暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL安装和初始化

DBA之路 2021-04-21
963

系统详情

  • 系统:CentOS 6.7

  • 数据库版本:5.6.29-log MySQL Community Server (GPL)

以下操作、介绍仅针对CentOS 6发行版本,其他发行版本的Linux可能有细微变化。

1. 安装方法介绍

MySQL安装方法主要有以下几种:

  1. 二进制包安装(Generic Binaries

    • 安装方法较简单,且可以自定义安装目录

  2. 安装针对特定Linux发行版预编译好的软件包(如CentOS的rpm软件包,Ubuntu的deb软件包等

    • 使用此方法安装,一般需要先手动解决各软件包的依赖关系,比较麻烦

  3. MySQL官方软件源安装(一般,不同的Linux发行版对应不同的软件源,比如CentOS系统对应的是yum源

    • 使用此方法安装比较简单,只需在系统添加软件源,再执行一条安装命令即可搞定(如:yum install mysql-community-server

    • 但当在同一个系统,同时安装多个MySQL版本时,如果不清楚YUM源的安装路径及逻辑,容易造成混乱

  4. 编译源码安装

    • 需要自己动手编译

    • 且对于新手来说,自己编译的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 &
  1. 若没有报错信息,则基本说明MySQL启动成功

  2. 使用以下命令查看是否存在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
  3. 如果未启动成功,可查看错误日志里的ERROR
    信息,确认原因

    • 错误日志默认在datadir
      文件夹,路径:/data/mysql/mysql3376/data/

    • 错误日志默认名称为`hostname`.error
      ,我的配置文件里指定了错误日志名称log-error
      error.log

  4. MySQL启动不起来,很多时候是由于权限设置不当引起的,还有可能是以下一些原因:

    • 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:off
    • CentOS 7 关闭firewalld.service

      systemctl stop firewalld.service
      systemctl disable firewalld.service
    1. 检查selinux是否关闭:getenforce

      输出结果若为Enforcing
      则说明未关闭;若为Disabled
      ,则说明已关闭。

    2. 临时关闭selinux(重启后失效

      setenforce permissive
    3. 永久关闭selinux

      vim /etc/sysconfig/selinux

      修改SELINUX=disabled

    1. 防火墙没有开启MySQL的端口,建议新手直接关闭防火墙

    2. 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安装后,需要执行以下操作,来增强数据库的安全性

  1. 删除匿名用户

  2. 移除任何人都可以访问test
    test_
    开头的库的授权

  3. 删除test库

  4. 设置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

文件列表:

  1. MySQL二进制安装包mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz

  2. MySQL配置文件my.cnf

  3. 安装脚本install_mysql.sh

9. 声明

本文部分内容来自知数堂远程培训:https://zhishuedu.taobao.com/

文章转载自DBA之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论