MySQL 的安装方式一般分为三种,二进制版本、编译版本、RPM 包。比较常见的是二进制版本安装,方便简单,相对于编译安装,如果不是追求极致性能,使用起来差别不大。本次教程以二进制版本为例,系统为 centos6.8,MySQL 版本为5.7.20。

下载安装包

先去官网下载二进制安装包,进入官网下载页面 mysql下载页面,点击下载 5.7.20 二进制 64 位版本

下载完成,把安装包移到目标 Linux 下

环境准备

1 安装依赖

yum install libaio numactl -y

2 创建用户以及用户组

groupadd mysql
useradd -m -r -g mysql mysql

3 配置 ulimit

我们一般使用 mysql 用户启动数据库,如果不设置文件打开数和进程数,后期会有问题

打开 /etc/security/limits.conf 文件,在文件末尾写上

mysql     soft    nproc    65536
mysql hard nproc 65536
mysql soft nofile 65536
mysql hard nofile 65536

打开 /etc/security/limits.d/90-nproc.conf 把参数调整为

*          soft    nproc     65536
root soft nproc unlimited
* soft nofile 65536
root soft nofile unlimited

4 在 hosts 文件加上本机解析

如果不设置 hosts 本机解析,偶然会出现一些诡异的问题,所以还是加上比较好

host_ip=$(ifconfig | grep inet | grep cast | awk '{print $2}' | awk -F: '{print $NF}' | head -1)
echo "$host_ip `hostname`" >> /etc/hosts

5 开启时间同步

时间同步对于数据库来说非常重要,请保证所有数据库节点时间是一致的

yum install -y ntp
service ntpd start

6 关闭 iptable

数据库一般不允许通外网,如果对防火墙不是很熟悉,可以关掉; 如果网络环境不够安全,可以开启

service iptables stop
chkconfig iptables off

7 关闭 selinux

selinux 可能会造成无法写入数据,如果对它不熟悉,建议关掉

查看 selinux 状态

getenforce

临时关闭

setenforce 0

永久关闭

打开 /etc/sysconfig/selinux

SELINUX=enforcing 改为 SELINUX=disabled

安装

这次安装数据目录为 /data/mysql_db/,日志目录为 /data/mysql_log/,实例名为 mysql_test,启动用户为 mysql

1 解压文件

把二进制文件解压出来,放到 /user/local/ 目录下

tar -xvzf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.20-linux-glibc2.12-x86_64 /usr/local/mysql57

如果想要全局访问到 mysql 客户端,可以把 /usr/local/mysql57/bin 加入系统路径,我这里采取直接创建软连接的方式

ln -s  /usr/local/mysql57/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql57/bin/mysqlbinlog /usr/bin/mysqlbinlog

2 创建数据和日志目录

mkdir -p /data/mysql_db/mysql_test
mkdir -p /data/mysql_log/mysql_test

3 初始化目录

/usr/local/mysql57/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql57 --datadir=/data/mysql_db/mysql_test --user=mysql
/usr/local/mysql57/bin/mysql_ssl_rsa_setup --basedir=/usr/local/mysql57 --datadir=/data/mysql_db/mysql_test

正常输出

[root@mysql-test ~]# /usr/local/mysql57/bin/mysqld --initialize-insecure --basedir=/usr/local/mysql57 --datadir=/data/mysql_db/mysql_test --user=mysql
2018-06-03T05:19:31.469841Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-06-03T05:19:32.525091Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-06-03T05:19:32.751099Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-06-03T05:19:32.861647Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: b2d883be-66ed-11e8-bd72-90b11c1a653a.
2018-06-03T05:19:32.877177Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-06-03T05:19:32.877705Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
[root@mysql-test ~]# /usr/local/mysql57/bin/mysql_ssl_rsa_setup --basedir=/usr/local/mysql57 --datadir=/data/mysql_db/mysql_test
Generating a 2048 bit RSA private key
............................................................................+++
....+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key
......................................+++
...........................+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key
..............................................................................+++
..................................................+++
writing new private key to 'client-key.pem'
-----

4 生成配置文件

一台机器上有可能会存在多个 MySQL 实例,我们可以把 my.cnf 文件放到对应实例的数据目录下,由于 MySQL 会受到默认配置文件的影响,所以我们要把 /etc/my.cnf 移走, 然后创建新的 my.cnf 文件

rm -f /etc/my.cnf
vim /data/mysql_db/mysql_test/my.cnf

本次安装参考配置,具体参数结合服务器情况调整

# my.cnf
[client]
port = 3306
default-character-set =utf8
socket = /data/mysql_db/mysql_test/mysql.sock [mysqld]
datadir = /data/mysql_db/mysql_test
basedir = /usr/local/mysql57
tmpdir = /tmp
socket = /data/mysql_db/mysql_test/mysql.sock
pid-file = /data/mysql_db/mysql_test/mysql.pid
skip-external-locking = 1
skip-name-resolve = 1
port = 3306
server_id = 1 default-storage-engine = InnoDB
character-set-server = utf8
default_password_lifetime=0 #### log ####
binlog_cache_size = 16M
log_bin = /data/mysql_log/mysql_test/mysql-bin
log_bin_index = /data/mysql_log/mysql_test/mysql-bin.index
binlog_format = row
expire_logs_days = 15 relay_log_recovery=ON
relay_log=/data/mysql_log/mysql_test/mysql-relay-bin
relay_log_index=/data/mysql_log/mysql_test/mysql-relay-bin.index log_error = /data/mysql_log/mysql_test/mysql-error.log
log_queries_not_using_indexes = /data/mysql_log/mysql_test/nouseindex.log slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/mysql_log/mysql_test/mysql-slow.log #### innodb ####
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 8
innodb_log_group_home_dir = /data/mysql_log/mysql_test/
innodb_undo_directory = /data/mysql_log/mysql_test/
innodb_undo_logs = 128
innodb_flush_neighbors = 1
innodb_log_file_size = 1G
innodb_file_per_table = on bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 64M
myisam_max_sort_file_size = 1G
myisam_repair_threads = 1 log_timestamps=system [mysqldump]
quick
max_allowed_packet = 64M [myisamchk]
key_buffer_size = 32M
sort_buffer_size = 32M
read_buffer = 16M
write_buffer = 16M

5 生成启动文件

cp /usr/local/mysql57/support-files/mysql.server /etc/init.d/mysqld-test
vim /etc/init.d/mysqld-test

basedir=
datadir=
lock_file_path="$lockdir/mysql"
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

改为, 手动指定配置文件和数据目录

basedir=/usr/local/mysql57
datadir=/data/mysql_db/mysql_test
default_file=/data/mysql_db/mysql_test/my.cnf
lock_file_path="$lockdir/mysql-test"
$bindir/mysqld_safe --defaults-file="$default_file" --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &

把数据目录的所有者改为 mysql

chown mysql.mysql /etc/init.d/mysqld-test
chown mysql.mysql -R /data/mysql*

启动实例

们以 mysql 用户来启动

su - mysql
[mysql@chengqm ~]$ /etc/init.d/mysqld-test start
Starting MySQL.. SUCCESS!

进入 mysql 客户端

mysql -S /data/mysql_db/mysql_test/mysql.sock

到此,MySQL 已经成功安装并启动, 后续可以修改密码. 如果有报错,查看错误日志,根据具体报错信息进行修改。如果报错日志里面什么也没有,可能是配置文件有问题,或者读到了默认配置。

MySQL 安装(二进制版)的更多相关文章

  1. (0.2.3)Mysql安装——二进制安装

    Linux平台下二进制方式安装卸载mysql 本章节:二进制安装mysql 目录: 1.基于Linux平台的Mysql项目场景介绍 2.mysql数据库运行环境准备-最优配置 3.如何下载mysql数 ...

  2. Centos下安装mysql(二进制版)

    1.下载安装包,选择相应的平台.版本,比如,选择64位Linux平台下的MySQL二进制包“Linux-Generic (glibc 2.5)(x86,64-bit),Compressed” 如:#w ...

  3. MySQL安装-二进制软件包安装

    MySQL 双版本安装 安装mysql AB (RPM)    -mysql官方的RPM包  安装MySQL 5.6.19版本 安装之前需要将系统自带的关于mysql软件全部卸载掉 rpm -e (加 ...

  4. centos mysql安装 完全版

    在linux中安装数据库首选MySQL,Mysql数据库的第一个版本就是发行在Linux系统上,其他选择还可以有postgreSQL,oracle等 在Linux上安装mysql数据库,我们可以去其官 ...

  5. mysql安装--window版

    一.下载 二.解压 三.配置 四.环境变量 五.安装MySQL服务 六.启动MySQL服务 七.停止MySQL 一.下载 第一步:打开网址,https://www.mysql.com,点击downlo ...

  6. mysql 安装-zip版

    1.千万不要自己新建data,使用命令:mysqld --initialize会自动生成一大堆文件 2.没有ini文件就自己新建:

  7. MySQL安装部署及调优

    MySQL安装 二进制安装 - mysql-5.5.49 mkdir /home/oldboy/tools -p cd /home/oldboy/tools/ rz #mysql-5.5.49-lin ...

  8. centos7下安装MySQL 5.7.26 二进制版本(免安装绿色版)

    MySQL 5.7.26 二进制版本安装(免安装绿色版) 下载地址 https://downloads.mysql.com/archives/community/ https://cdn.mysql. ...

  9. MySQL Linux压缩版安装方法

    在诸多开源数据库中,MySQL是目前应用行业,特别是互联网行业发展最好的一个.借助灵活的架构特点和适应不同应用系统场景的Storage Engine,MySQL在很多方面已经有不次于传统商用数据库的表 ...

随机推荐

  1. WannaRen来袭:螣龙安科带你盘点那些年的勒索病毒

    2020年4月7日,360CERT监测发现网络上出现一款新型勒索病毒wannaRen,该勒索病毒会加密windows系统中几乎所有的文件,并且以.WannaRen作为后缀.360CERT该事件评定:危 ...

  2. docker容器管理操作

    Docker容器的四种状态: 运行 已暂停 重新启动 已退出 1.容器的创建 容器创建:就是将镜像加载到容器的过程. 创建容器时如果没有指定容器名称,系统会自动创建一个名称. 新创建的容器默认处于停止 ...

  3. Solution -「Luogu 3959」 宝藏

    果真是宝藏题目. 0x01 前置芝士 这道题我是真没往状压dp上去想.题目来源. 大概看了一下结构.盲猜直接模拟退火!\xyx 所需知识点:模拟退火,贪心. 0x02 分析 题目大意:给你一个图,可能 ...

  4. 再见Docker!Containerd安装与使用

    Containerd 的技术方向和目标 简洁的基于 gRPC 的 API 和 client library 完整的 OCI 支持(runtime 和 image spec) 同时具备稳定性和高性能的定 ...

  5. Linux(Centos7) 实例搭建 FTP 服务

    本文以 CentOS 7.2 64位系统为例,使用 vsftpd 作为 FTP 服务端,FileZilla 作为客户端.指导您如何在 Linux 云服务器上搭建 FTP 服务. 操作步骤 安装 vsf ...

  6. Azure Devops(十四) 使用Azure的私有Nuget仓库

    哈喽大家好,最近因为工作的原因没有时间写文章,断更了俩月,今天我们开始继续研究Azure上的功能. 今天我们开始研究一下Azure的制品仓库,在之前的流水线的相关文章中,我们都使用到了制品仓库用来保存 ...

  7. C# 基础知识-特性

    C基础 - 特性 一.特性 1>特性本质就是一个类,直接或者间接的继承了Attribute 2>特性就是在不破话类封装的前提下,加点额外的信息或者行为 特性添加后,编译会在元素内部产生IL ...

  8. 秋季招聘季如何制作一款“秀色可餐”的简历?由ShareLatex和Python3打造

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_161 秋招季还有两个月就到了,即所谓的"金九银十".疫情因素导致市场环境不太理想,所以我们更应该未焚而徙薪,未 ...

  9. cad工具快速选择特性里面是空的解决方法

    工具-选项-文件中,支持文件搜索路径中 添加,再浏览,找到"C:\Program Files\Common Files\Autodesk Shared"确定就OK了.

  10. 从函数计算到 Serverless 架构

    前言 随着 Serverless 架构的不断发展,各云厂商和开源社区都已经在布局 Serverless 领域,一方面表现在云厂商推出传统服务/业务的 Serverless 化版本,或者 Serverl ...