系列文章首发平台为果冻想个人博客。果冻想,是一个原创技术文章分享网站。在这里果冻会分享他的技术心得,技术得失,技术人生。我在果冻想等待你,也希望你能和我分享你的技术得与失,期待。

前言

网上已经有那么多的关于CentOS 7如何安装MySQL的文章了, 那为什么我还要写这没一篇关于CentOS 7安装MySQL的文章呢?主要有以下几个原因:

  • 网上很多都是在线安装;由于很多时候,在生产环境进行部署时,生产机器都是不可能直接连公网的,导致网上很多的文章没有借鉴意义;
  • 网上很多文章都比较旧,安装的MySQL版本也比较旧,没有进行更新,导致很多步骤在新的MySQL版本安装上不适用;
  • 网上很多文章本身就是错的,很容易误导读者;我曾经就被误导过;

为了总结一篇实用的,不误导大家的文章,也让搜索到我这篇文章的读者们不用再浪费时间去搜索别的安装教程,节省大家的时间,所以抽点时间把如何在CentOS 7下离线安装MySQL的步骤进行详细的总结;为大家图个方便,也为自己做个笔记和总结。

前期准备

  1. MySQL 5.7 Linux安装包下载:https://dev.mysql.com/downloads/mysql/

  2. 查询并卸载系统自带的Mariadb

    1. rpm -qa | grep mariadb
    2. rpm -e --nodeps 文件名

安装实施

  1. 为了方便数据库管理,对于安装的MySQL数据库,生产上我们都会建立一个mysql用户和mysql用户组:

    1. # 添加mysql用户组
    2. groupadd mysql
    3. # 添加mysql用户
    4. useradd -g mysql mysql -d /home/mysql
    5. # 修改mysql用户的登陆密码
    6. passwd mysql
  2. 创建临时目录、数据目录和日志目录

    1. /home/mysql/3306/data
    2. /home/mysql/3306/log
    3. /home/mysql/3306/tmp
  3. 将下载的mysql-5.7.21-linux-glibc2.12-x86_64.tar安装包上传至服务器/usr/local目录下;

    1. # 解压缩
    2. tar -xvf mysql-5.7.21-linux-glibc2.12-x86_64.tar
    3. # 会得到一个mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz文件,再解压缩
    4. tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
    5. # 建立软链接,便于以后版本升级
    6. ln -s mysql-5.7.21-linux-glibc2.12-x86_64 mysql
    7. # 修改mysql文件夹下所有文件的用户和用户组
    8. chown -R mysql:mysql mysql/
  4. 创建配置文件

    1. # 创建配置文件
    2. cd /etc
    3. # 在my.cnf文件中添加对应的配置项,文章末尾会提供一个默认的my.cnf配置
    4. vi my.cnf
  5. 安装数据库

    1. # 初始化数据库,并指定启动mysql的用户
    2. ./mysqld --initialize --user=mysql

    安装完成后,在my.cnf中配置的datadir目录下生成一个error.log文件,里面记录了root用户的随机密码。

  6. 设置开机自启动服务

    1. # 复制启动脚本到资源目录
    2. cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
    3. # 增加mysqld服务控制脚本执行权限
    4. chmod +x /etc/rc.d/init.d/mysqld
    5. # 将mysqld服务加入到系统服务
    6. chkconfig --add mysqld
    7. # 检查mysqld服务是否已经生效
    8. chkconfig --list mysqld
    9. # 切换至mysql用户,启动mysql
    10. service mysqld start
  7. 配置环境变量
    为了更好的操作mysql,配置环境变量。

    1. # 切换至mysql用户
    2. su - mysql
    3. # 修改配置文件,增加export PATH=$PATH:/usr/local/mysql/bin
    4. vi .bash_profile
    5. # 立即生效
    6. source .bash_profile
  8. 登陆,修改密码

    1. # 登陆mysql
    2. mysql -uroot -p
    3. # 修改root用户密码
    4. set password for root@localhost=password("123456");

总结

好了,到此关于CentOS 7离线安装MySQL5.7的总结完毕。如果大家有任何疑问,或者在安装过程中卡住了,都可以在下放留言。希望我的这篇文章对大家有帮助。

附录

下述的my.cnf配置仅供参考,如果你有更好的建议,请告诉我。

  1. [client] # 客户端设置,即客户端默认的连接参数
  2. port = 3306 # 默认连接端口
  3. socket = /home/mysql/3306/tmp/mysql.sock # 用于本地连接的socket套接字,mysqld守护进程生成了这个文件
  4. [mysqld] # 服务端基本设置
  5. # 基础设置
  6. server-id = 1 # Mysql服务的唯一编号 每个mysql服务Id需唯一
  7. port = 3306 # MySQL监听端口
  8. basedir = /usr/local/mysql # MySQL安装根目录
  9. datadir = /home/mysql/3306/data # MySQL数据文件所在位置
  10. tmpdir = /home/mysql/3306/tmp # 临时目录,比如load data infile会用到
  11. socket = /home/mysql/3306/tmp/mysql.sock # 为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件
  12. pid-file = /home/mysql/3306/log/mysql.pid # pid文件所在目录
  13. skip_name_resolve = 1 # 只能用IP地址检查客户端的登录,不用主机名
  14. character-set-server = utf8mb4 # 数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
  15. transaction_isolation = READ-COMMITTED # 事务隔离级别,默认为可重复读,MySQL默认可重复读级别
  16. collation-server = utf8mb4_general_ci # 数据库字符集对应一些排序等规则,注意要和character-set-server对应
  17. init_connect='SET NAMES utf8mb4' # 设置client连接mysql时的字符集,防止乱码
  18. lower_case_table_names = 1 # 是否对sql语句大小写敏感,1表示不敏感
  19. max_connections = 400 # 最大连接数
  20. max_connect_errors = 1000 # 最大错误连接数
  21. explicit_defaults_for_timestamp = true # TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
  22. max_allowed_packet = 128M # SQL数据包发送的大小,如果有BLOB对象建议修改成1G
  23. interactive_timeout = 1800 # MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
  24. wait_timeout = 1800 # MySQL默认的wait_timeout值为8个小时, interactive_timeout参数需要同时配置才能生效
  25. tmp_table_size = 16M # 内部内存临时表的最大值 ,设置成128M;比如大数据量的group by ,order by时可能用到临时表;超过了这个值将写入磁盘,系统IO压力增大
  26. max_heap_table_size = 128M # 定义了用户可以创建的内存表(memory table)的大小
  27. query_cache_size = 0 # 禁用mysql的缓存查询结果集功能;后期根据业务情况测试决定是否开启;大部分情况下关闭下面两项
  28. query_cache_type = 0
  29. # 用户进程分配到的内存设置,每个session将会分配参数设置的内存大小
  30. read_buffer_size = 2M # MySQL读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。
  31. read_rnd_buffer_size = 8M # MySQL的随机读缓冲区大小
  32. sort_buffer_size = 8M # MySQL执行排序使用的缓冲大小
  33. binlog_cache_size = 1M # 一个事务,在没有提交的时候,产生的日志,记录到Cache中;等到事务提交需要提交的时候,则把日志持久化到磁盘。默认binlog_cache_size大小32K
  34. back_log = 130 # 在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中;官方建议back_log = 50 + (max_connections / 5),封顶数为900
  35. # 日志设置
  36. log_error = /home/mysql/3306/log/error.log # 数据库错误日志文件
  37. slow_query_log = 1 # 慢查询sql日志设置
  38. long_query_time = 1 # 慢查询时间;超过1秒则为慢查询
  39. slow_query_log_file = /home/mysql/3306/log/slow.log # 慢查询日志文件
  40. log_queries_not_using_indexes = 1 # 检查未使用到索引的sql
  41. log_throttle_queries_not_using_indexes = 5 # 用来表示每分钟允许记录到slow log的且未使用索引的SQL语句次数。该值默认为0,表示没有限制
  42. min_examined_row_limit = 100 # 检索的行数必须达到此值才可被记为慢查询,查询检查返回少于该参数指定行的SQL不被记录到慢查询日志
  43. expire_logs_days = 5 # MySQL binlog日志文件保存的过期时间,过期后自动删除
  44. # 主从复制设置
  45. log-bin = mysql-bin # 开启mysql binlog功能
  46. binlog_format = ROW # binlog记录内容的方式,记录被操作的每一行
  47. binlog_row_image = minimal # 对于binlog_format = ROW模式时,减少记录日志的内容,只记录受影响的列
  48. # Innodb设置
  49. innodb_open_files = 500 # 限制Innodb能打开的表的数据,如果库里的表特别多的情况,请增加这个。这个值默认是300
  50. innodb_buffer_pool_size = 64M # InnoDB使用一个缓冲池来保存索引和原始数据,一般设置物理存储的60% ~ 70%;这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少
  51. innodb_log_buffer_size = 2M # 此参数确定写日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据。MySQL开发人员建议设置为1-8M之间
  52. innodb_flush_method = O_DIRECT # O_DIRECT减少操作系统级别VFS的缓存和Innodb本身的buffer缓存之间的冲突
  53. innodb_write_io_threads = 4 # CPU多核处理能力设置,根据读,写比例进行调整
  54. innodb_read_io_threads = 4
  55. innodb_lock_wait_timeout = 120 # InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的锁定表中自动检测事务死锁并且回滚事务。InnoDB用LOCK TABLES语句注意到锁定设置。默认值是50秒
  56. innodb_log_file_size = 32M # 此参数确定数据日志文件的大小,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间

安装错误说明

一、在安装过程中出现./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory错误时,请切回root用户,执行以下命令即可:

  1. yum install libaio

变更记录

  • 2018-03-02 增加安装错误说明

如果你觉的文章还不错,可以关注果冻想微信公众号,定期推送技术文章:

果冻想-一个原创技术文章分享网站。

2018年2月4日 于呼和浩特。

CentOS 7离线安装MySQL 5.7的更多相关文章

  1. centOS 7 离线安装 MySQL 5.6 完美安装

    centOS 7 离线安装 MySQL 5.6 centOS 7 离线安装 MySQL 5.6 准备环境 1.离线 centOS 7(此处为 centOS 7 最小安装) 2.nginx 安装文件 ( ...

  2. 离线安装mysql数据库

    开源数据库mysql,目前使用很广泛.作为程序员开发项目时,与关系型数据库打交道最多的估计也是mysql了.那么本文首先讲解如何离线安装mysql数据库,毕竟有很多项目部署在内网. 1.离线安装 本人 ...

  3. centos上如何安装mysql

    centos可以使用yum安装mysql 但是版本很低,且不灵活. 本文将介绍如何使用安装包安装mysql http://dev.mysql.com/downloads/mysql/ 下载mysql ...

  4. centos 7 中安装 mysql 5.7

    centos 7 中安装 mysql 5.7 环境说明: 查看centos的版本:cat /etc/redhat-release 安装和配置步骤: 下载 mysql 源安装包: sudo curl - ...

  5. CentOS 6.5 安装MySQL数据库

    CentOS 6.5 安装MySQL数据库 [root@seeker~]# yum -y install mysql-server //安装命令 [root@seeker~]# service mys ...

  6. CentOS 7.0yum安装MySQL

    CentOS 7.0yum安装MySQL 1.下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noar ...

  7. CentOS 6.9安装MySQL 5.6 (使用yum安装)

    CentOS 6.9安装MySQL 5.6 (使用yum安装) 移除CentOS默认的mysql-libs [root@test01 srv]# whereis mysqlmysql: /usr/li ...

  8. CentOS 7 下安装 MySQL 5.7

    从 CentOS 7 系统开始,MariaDB 成为 yum 源中默认的数据库安装包.在 CentOS 7 及以上的系统中使用 yum 安装 MySQL 包将无法使用 MySQL.您可以选择使用完全兼 ...

  9. 20190526 - CentOS 7 中 安装 MySQL 8 并授权 root 远程访问

    1. CentOS 7 中 安装 MySQL 8 CentOS 7 中内置 MariaDB 建议升级一下用,性能好很多.但如果一定要用 MySQL 8,就得自己装. 坦白的说,Oracle 升级 My ...

随机推荐

  1. 利用Lua读写本地文件

    缘由 今天在使用Lua编写脚本时,需要用到读写文件的操作,很久没有使用Lua了,特写下此文来备忘一下. 简介 Lua对文件的操作与C对文件的操作基本一致,不管是参数还是方法.Lua中可以直接通过全局方 ...

  2. Selenium+PhantomJS实现简易有道翻译爬虫

    Selenium一款自动化测试工具,当然用来写爬虫也是没有问题的.它支持Chrome.Safari.Firefox等主流界面式浏览器,另外它也支持多种语言开发,比如 Java,C,Ruby,Pytho ...

  3. Linux下配置SNAT上网

    局域网有一台主机A,没有公网的IP, 也就是没有办法直接连到互联网上下载东西,同时内网有另外一台主机B,有公网接入.这个时候为了让A连接到互联网,我把B设置成NAT主机,A的网关指向B.准确的来说,现 ...

  4. 日程管理 FullCalendar

    日程管理,采用著名组件FullCalendar日历插件实现FullCalendar提供了丰富的属性设置和方法调用,开发者可以根据FullCalendar提供的API快速完成一个日历日程的开发1.实现按 ...

  5. 手把手教你用.NET Core写爬虫

    写在前面 自从上一个项目58HouseSearch从.NET迁移到.NET core之后,磕磕碰碰磨蹭了一个月才正式上线到新版本. 然后最近又开了个新坑,搞了个Dy2018Crawler用来爬dy20 ...

  6. Centos下安装php扩展sphinx

    官方地址:http://pecl.php.net/package/sphinx wget http://pecl.php.net/get/sphinx-1.3.3.tgz tar -zxvf sphi ...

  7. poj 2230详解

    题目链接 : poj2230 大致题意: 有一个人每晚要检查牛场,牛场内有m条路,他担心会有遗漏,就每条路检查两次,且每次的方向不同,要求你打印他行走的路径(必须从1开始),打印一条即可. 思路分析 ...

  8. React——共享state

    通常,一些组件需要反映相同的数据更改,这种情况推荐将共享state移动到它们最近的公共祖先上. 在这里有一个例子:有一个温度计算器计算在给定温度是否能让水沸腾,用户可以输入华氏温度也能输入摄氏温度,当 ...

  9. 在SpringBoot中配置aop

    前言 aop作为spring的一个强大的功能经常被使用,aop的应用场景有很多,但是实际的应用还是需要根据实际的业务来进行实现.这里就以打印日志作为例子,在SpringBoot中配置aop 已经加入我 ...

  10. C 语言中模板的几种实现方式

    简单宏定义实现 简单宏定义 - 方式一 这种方式将主要实现部分放在一个宏定义中,利用字符替换的方式实现不同 type 的运算,详细思路见代码: simple_macro_1.c #include &l ...