RPM安装MySQL5.7并更改数据目录

文末附MySQL完整配置文件

官网地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads


注意:

下载安装包必须是.rpm-bundle.tar结尾的

安装的时候对应自己下载的版本号,不要直接复制本文命令


一、准备工作

1.1 上传安装包到服务器

1.2 解压

  1. [root@localhost mysql_install_pkg]# tar xvf mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar

1.3 卸载CentOS7自带的数据库

方法一

  1. yum remove mysql-libs

方法二

  1. # rpm -qa|grep mariadb
  2. mariadb-libs-5.5.56-2.el7.x86_64
  3. # rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps

二、安装mysql-server

2.1 安装

安装命令要在rpm包所在目录执行

  1. # rpm -ivh mysql-community-common-5.7.32-1.el7.x86_64.rpm
  2. 警告:mysql-community-common-5.7.32-1.el7.x86_64.rpm: V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  3. 准备中... ################################# [100%]
  4. 正在升级/安装...
  5. 1:mysql-community-common-5.7.32-1.e################################# [100%]
  6. # rpm -ivh mysql-community-libs-5.7.32-1.el7.x86_64.rpm
  7. 警告:mysql-community-libs-5.7.32-1.el7.x86_64.rpm: V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  8. 准备中... ################################# [100%]
  9. 正在升级/安装...
  10. 1:mysql-community-libs-5.7.32-1.el7################################# [100%]
  11. # rpm -ivh mysql-community-client-5.7.32-1.el7.x86_64.rpm
  12. 警告:mysql-community-client-5.7.32-1.el7.x86_64.rpm: V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  13. 准备中... ################################# [100%]
  14. 正在升级/安装...
  15. 1:mysql-community-client-5.7.32-1.e################################# [100%]
  16. # rpm -ivh mysql-community-server-5.7.32-1.el7.x86_64.rpm --force --nodeps
  17. 警告:mysql-community-server-5.7.32-1.el7.x86_64.rpm: V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  18. 准备中... ################################# [100%]
  19. 正在升级/安装...
  20. 1:mysql-community-server-5.7.32-1.e################################# [100%]

2.2 启动

  1. # systemctl start mysqld

看到3306端口已启动

查看默认密码

  1. # cat /var/log/mysqld.log | grep password

登录修改密码

  1. set password for
  2. root@localhost=password('mysql')

安装完成。

三、修改MySQL的数据目录

由于我服务器上的磁盘分配/home为数据盘,空间比较大所以我要修改一下mysql的数据目录

3.1 创建mysql数据目录

  1. # mkdir -p /home/mysql/data

3.2 关闭mysql进程

  1. # systemctl stop mysqld

确认mysql已经关闭

3.3 复制数据文件

复制/var/lib/mysql目录下的所有内容到/hom/mysql/data

  1. # cp -fa /var/lib/mysql/* /home/mysql/data/

3.4 修改数据目录属主属组

修改/home/mysql/data目录的属主属组

  1. # chown -R mysql:mysql /home/mysql/

3.5 移除原有数据目录

先将/var/lib/mysql目录改名,等确保目录修改成功后删除

  1. # cd /var/lib/
  2. # mv mysql mysql_bak

3.6 修改配置文件

修改配置文件/etc/my.cnf,修改后内容

  1. datadir=/home/mysql/data
  2. socket=/home/mysql/data/mysql.sock

3.7 重启mysql服务

  1. # systemctl start mysqld

查看端口发现mysql服务已经启动,可以登录试试

登录发现报错:

  1. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

解决方法:

  1. 既然找不到/var/lib/mysql/mysql.sock,那我直接做个软连接将/home/mysql/data/mysql.sock直接连接过去就可以了,实测实可以用的。但是我推荐实用方法2.
  2. 修改my.cnf配置文件
    1. [mysql]
    2. socket=/home/mysql/data/mysql.sock

    重启

    1. # systemctl restart mysqld

    登录测试

数据目录修改完成。

附本人完整my.cnf

  1. [client]
  2. port = 3306
  3. socket = /home/mysql/data/mysql.sock
  4. default-character-set=utf8
  5. [mysqld]
  6. ###############################基础设置#####################################
  7. #Mysql服务的唯一编号 每个mysql服务Id需唯一
  8. server-id = 1
  9. log-bin-trust-function-creators=1
  10. #服务端口号 默认3306
  11. port = 3306
  12. #mysql数据文件所在位置
  13. datadir = /home/mysql/data
  14. #临时目录 比如load data infile会用到
  15. tmpdir = /tmp
  16. #设置socke文件所在目录
  17. socket = /home/mysql/data/mysql.sock
  18. ##兼容mysql5.6 sql_mode
  19. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  20. #只能用IP地址检查客户端的登录,不用主机名
  21. skip-name-resolve
  22. #事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
  23. transaction_isolation = READ-COMMITTED
  24. #数据库默认字符集
  25. character-set-server = utf8
  26. #数据库字符集对应一些排序等规则,注意要和character-set-server对应
  27. collation-server = utf8_general_ci
  28. #是否对sql语句大小写敏感,1表示不敏感
  29. lower_case_table_names = 1
  30. #最大连接数
  31. max_connections = 400
  32. #最大错误连接数
  33. max_connect_errors = 1000
  34. #TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
  35. explicit_defaults_for_timestamp = true
  36. #SQL数据包发送的大小,如果有BLOB对象建议修改成1G
  37. max_allowed_packet = 1024M
  38. #MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
  39. #MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
  40. interactive_timeout = 1800
  41. wait_timeout = 1800
  42. #内部内存临时表的最大值 ,设置成128M。
  43. #比如大数据量的group by ,order by时可能用到临时表,
  44. #超过了这个值将写入磁盘,系统IO压力增大
  45. tmp_table_size = 134217728
  46. max_heap_table_size = 134217728
  47. #禁用mysql的缓存查询结果集功能
  48. #后期根据业务情况测试决定是否开启
  49. #大部分情况下关闭下面两项
  50. query_cache_size = 0
  51. query_cache_type = 0
  52. #####################用户进程分配到的内存设置BEGIN#############################
  53. ##每个session将会分配参数设置的内存大小
  54. #用于表的顺序扫描,读出的数据暂存于read_buffer_size中,当buff满时或读完,将数据返回上层调用者
  55. #一般在128kb ~ 256kb,用于MyISAM
  56. #read_buffer_size = 131072
  57. #用于表的随机读取,当按照一个非索引字段排序读取时会用到,
  58. #一般在128kb ~ 256kb,用于MyISAM
  59. #read_rnd_buffer_size = 262144
  60. #order by或group by时用到
  61. #建议先调整为2M,后期观察调整
  62. sort_buffer_size = 2097152
  63. #一般数据库中没什么大的事务,设成1~2M,默认32kb
  64. binlog_cache_size = 524288
  65. ########################用户进程分配到的内存设置END############################
  66. #在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中
  67. #官方建议back_log = 50 + (max_connections / 5),封顶数为900
  68. back_log = 130
  69. ############################日志设置##########################################
  70. #数据库错误日志文件
  71. log_error = /var/log/mysql/error.log
  72. #慢查询sql日志设置
  73. slow_query_log = 1
  74. slow_query_log_file = /var/log/mysql/slow.log
  75. #检查未使用到索引的sql
  76. log_queries_not_using_indexes = 1
  77. #针对log_queries_not_using_indexes开启后,记录慢sql的频次、每分钟记录的条数
  78. log_throttle_queries_not_using_indexes = 5
  79. #慢查询执行的秒数,必须达到此值可被记录
  80. long_query_time = 8
  81. #检索的行数必须达到此值才可被记为慢查询
  82. min_examined_row_limit = 100
  83. #mysql binlog日志文件保存的过期时间,过期后自动删除
  84. expire_logs_days = 5
  85. #开启mysql binlog功能
  86. log-bin=mysql-bin
  87. #binlog记录内容的方式,记录被操作的每一行
  88. binlog_format = ROW
  89. #####################redo log和binlog的关系设置BEGIN#########################
  90. #(步骤1) prepare dml相关的SQL操作,然后将redo log buff中的缓存持久化到磁盘
  91. #(步骤2)如果前面prepare成功,那么再继续将事务日志持久化到binlog
  92. #(步骤3)如果前面成功,那么在redo log里面写上一个commit记录
  93. #当innodb_flush_log_at_trx_commit和sync_binlog都为1时是最安全的,
  94. #在mysqld服务崩溃或者服务器主机crash的情况下,binary log只有可能丢失最多一个语句或者一个事务。
  95. #但是都设置为1时会导致频繁的io操作,因此该模式也是最慢的一种方式。
  96. #当innodb_flush_log_at_trx_commit设置为0,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。
  97. #当innodb_flush_log_at_trx_commit设置为2,只有在操作系统崩溃或者系统掉电的情况下,上一秒钟所有事务数据才可能丢失。
  98. #commit事务时,控制redo log buff持久化磁盘的模式 默认为1
  99. innodb_flush_log_at_trx_commit = 1
  100. #commit事务时,控制写入mysql binlog日志的模式 默认为0
  101. #innodb_flush_log_at_trx_commit和sync_binlog都为1时,mysql最为安全但性能上压力也是最大
  102. sync_binlog = 1
  103. ####################redo log和binlog的关系设置END############################
  104. ############################Innodb设置#####################################
  105. #一般设置物理存储的60% ~ 70%
  106. innodb_buffer_pool_size = 2G
  107. innodb_data_file_path = ibdata1:10M:autoextend
  108. #该参数针对unix、linux,window上直接注释该参数.默认值为NULL
  109. #O_DIRECT减少操作系统级别VFS的缓存和Innodb本身的buffer缓存之间的冲突
  110. innodb_flush_method = O_DIRECT
  111. #提高刷新脏页数量和合并插入数量,改善磁盘I/O处理能力
  112. #默认值200(单位:页)
  113. #可根据磁盘近期的IOPS确定该值
  114. innodb_io_capacity = 500
  115. #为了获取被锁定的资源最大等待时间,默认50秒,超过该时间会报如下错误:
  116. # ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
  117. innodb_lock_wait_timeout = 30
  118. #调整buffer pool中最近使用的页读取并dump的百分比,通过设置该参数可以减少转储的page数
  119. innodb_buffer_pool_dump_pct = 40
  120. #设置redoLog文件所在目录, redoLog记录事务具体操作内容
  121. innodb_log_group_home_dir = /home/mysql/redolog/
  122. #设置undoLog文件所在目录, undoLog用于事务回滚操作
  123. innodb_undo_directory = /home/mysql/undolog/
  124. #MySql5.7官方建议尽量设置的大些,可以接近innodb_buffer_pool_size的大小
  125. #之前设置该值较大时可能导致mysql宕机恢复时间过长,现在恢复已经加快很多了
  126. #该值减少脏数据刷新到磁盘的频次
  127. #最大值innodb_log_file_size * innodb_log_files_in_group <= 512GB,单文件<=256GB
  128. innodb_log_file_size = 1024M
  129. #设置undoLog文件所占空间可以回收
  130. #5.7之前的MySql的undoLog文件一直增大无法回收
  131. innodb_undo_log_truncate = 1
  132. innodb_undo_logs = 128
  133. #强所有发生的死锁错误信息记录到error.log中,之前通过命令行只能查看最近一次死锁信息
  134. innodb_print_all_deadlocks = 1
  135. ############################其他设置########################################
  136. [mysqldump]
  137. quick
  138. max_allowed_packet = 1024M
  139. [mysql]
  140. no-auto-rehash
  141. [myisamchk]
  142. key_buffer_size = 20M
  143. sort_buffer_size = 256k
  144. read_buffer = 2M
  145. write_buffer = 2M
  146. [mysqlhotcopy]
  147. interactive-timeout
  148. [mysqld_safe]
  149. #增加每个进程的可打开文件数量
  150. open-files-limit = 28192

RPM安装MySQL5.7并更改数据目录的更多相关文章

  1. linux 环境RPM 安装MYSQL5.6

    linux 环境RPM 安装MYSQL5.6 系统环境 CentOS7.2 1.关闭selinux 服务[SELinux是一种基于域-类型 模型(domain-type)的强制访问控制(MAC)安全系 ...

  2. RPM安装MYSQL5.7

    RPM安装MYSQL5.7 1:YUM安装依赖库 yum install perl libaio numactl 2:下载安装需要的RPM包 https://dev.mysql.com/get/Dow ...

  3. Centos6下rpm安装MySQL5.6

    Centos6在rpm安装 rpm -ivh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm yum install ...

  4. centos6.5安装Mysql5.6及更改密码

    (一) centos6.5安装Mysql5.6 二进制文件安装的方法分为两种: 第一种是不针对特定平台的通用安装方法,使用的二进制文件是后缀为.tar.gz的压缩文件: 第二种是使用RPM或其他包进行 ...

  5. Centos6 rpm 安装mysql5.5(转)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/macfac/article/details/51868712 0. 到官网下载好,想要安装的rpm包 ...

  6. centos7 rpm 安装MySQL5.6

    系统centos7,安装MySQL,出错,百度了一大堆,几乎都是通过yum安装的MySQL,我想说的是,通过yum自动安装的话系统自己会帮你做很多事情,相关联的包也会下下来,相当于替你省去了很多事情, ...

  7. CentOS RPM安装MySQL-5.6

    1.检查是否有安装 安装之前应该先查询系统是否自在了mysql的软件包 rpm -qa|grep -i mysql 如果有的话需要先删除 rpm -e 软件名 --nodeps 2.下载安装包 cd/ ...

  8. rpm安装MySQL5.5后配置,在centos5上;mysql编译安装在centos6.5上;

    [1] 没有/etc/my.cnf: rpm包安装的MySQL是不会安装/etc/my.cnf文件的:处理:cp /usr/share/mysql/my-huge.cnf /etc/my.cnf [2 ...

  9. centos7 rpm安装mysql5.7

    1.去官网下载指定的数据库版本:https://dev.mysql.com/downloads/mysql/ 2.根据所用的操作系统下载指定的rpm包 3.下载及安装 地址链接wget https:/ ...

随机推荐

  1. ajax 异步无刷新点改

    <button class="status" t_id="{{$v->id}}">{{$v->status}}</button&g ...

  2. ES6新增数组的一些思考和使用

    ES6数组的新增 伪数组转换为数组的两种方法 Array.from()把一个伪数组转换为一个真正的数组 伪数组:有下标和length,但是不能使用数组方法 let lis = document.que ...

  3. [bug] Maven [WARNING] 'parent.relativePath' of POM

    参考 https://blog.csdn.net/simajinxiu/article/details/86667894

  4. Centos7如何安装开源办公软件Libreoffice

    在Centos7安装了WPS,但是用了没两月就出问题,无法正常使用.(准确来说,安装的WPS一直都有各种问题存在,但是没有影响到主要功能也就将就着用,后来是直接输入不了文字) 既然是开源系统,自然而然 ...

  5. PHP使用mail函数发送邮件

    yum install sendmail #需要使用到sendmail hostname jb51.net #建议修改主机名为域名格式,否则启动sendmail会很慢 systemctl start ...

  6. 070.Python聚焦爬虫数据解析

    一 聚焦爬虫数据解析 1.1 基本介绍 聚焦爬虫的编码流程 指定url 基于requests模块发起请求 获取响应对象中的数据 数据解析 进行持久化存储 如何实现数据解析 三种数据解析方式 正则表达式 ...

  7. Ansible_使用文件模块将修改文件复制到受管主机

    一.描述常用文件模块 1.常用文件模块 模块名称 模块说明 blockinfile 插入.更新或删除由可自定义标记线包围的多行文本块 copy 将文件从本地或远程计算机复制到受管主机上的某个位置.类似 ...

  8. ELK学习实验014:Nginx日志JSON格式收集

    1 Kibana的显示配置 https://demo.elastic.co/app/kibana#/dashboard/welcome_dashboard 环境先处理干净 安装nginx和httpd- ...

  9. Linux进阶之Jenkins持续集成介绍及安装演示

    一.Jenkins介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins功能包 ...

  10. MySQL之数据操纵语言(DML)

    数据操纵语言(DML) 数据操纵语(Data Manipulation Language),简称DML. DML主要有四个常用功能. 增 删 改 查 insert delete update sele ...