作者:俊达

我们在生产环境部署mysql时,一般很少使用RedHat Package Manager(RedHat软件包管理工具)。用rpm或或者其他包管理器安装mysql有其好处,例如安装简单,并且许多系统可能已经自带了某个版本的MySQL。

当然,使用RPM安装也存在一些缺点:

1、rpm依赖包的问题。如果删除线上机器的冲突包,可能引起其他软件运行异常。

2、多版本管理不方便。升级mysql或降级mysql不方便。无法多个版本同时运行。

3、单机多实例管理不方便。

但是,对于我们数据库管理员,需要掌握如何使用rpm包安装mysql。因为很可能需要处理用这种方式安装的mysql遇到的一些问题,如数据库无法启动、默认路径空间占满,需要将数据需要换到别的磁盘、调整参数等。

1 环境

CentOS 7.9

[root@box1 software]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core) [root@box1 software]# uname -a
Linux box1 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

2 RPM安装

2.1下载RPM安装包

到官网https://dev.mysql.com/downloads/mysql/下载社区版,历史版本点击“Archives”下载。

建议选择下载 RPM Bundle包,里面包含了需要的各个rpm包解压bundle包,可以看到里面的rpm包

# tar xf mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar -C rpm/5.7/
# [root@box1 5.7]# ls -lh
总用量 1.1G
-rw-r--r--. 1 root root 518M 9月 25 2020 mysql-5.7.32-1.el7.x86_64.rpm-bundle.tar
-rw-r--r--. 1 7155 31415 26M 9月 25 2020 mysql-community-client-5.7.32-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 308K 9月 25 2020 mysql-community-common-5.7.32-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 3.8M 9月 25 2020 mysql-community-devel-5.7.32-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 46M 9月 25 2020 mysql-community-embedded-5.7.32-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 23M 9月 25 2020 mysql-community-embedded-compat-5.7.32-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 125M 9月 25 2020 mysql-community-embedded-devel-5.7.32-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 2.4M 9月 25 2020 mysql-community-libs-5.7.32-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 1.3M 9月 25 2020 mysql-community-libs-compat-5.7.32-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 174M 9月 25 2020 mysql-community-server-5.7.32-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 120M 9月 25 2020 mysql-community-test-5.7.32-1.el7.x86_64.rpm

2.2安装rpm包

需要安装mysql-community-server, mysql-community-common, mysql-community-client, mysql-community-libs这些包

[root@box1 5.7]# rpm -ivh mysql-community-client-5.7.32-1.el7.x86_64.rpm mysql-community-common-5.7.32-1.el7.x86_64.rpm mysql-community-server-5.7.32-1.el7.x86_64.rpm mysql-community-libs-5.7.32-1.el7.x86_64.rpm
警告:mysql-community-client-5.7.32-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
错误:依赖检测失败:
mariadb-libs 被 mysql-community-libs-5.7.32-1.el7.x86_64 取代

2.3卸载冲突的包

安装报错,因为系统里已经安装了mariadb相关lib,需要先将这些lib卸载

[root@box1 5.7]# rpm -qa | grep maria
mariadb-devel-5.5.68-1.el7.x86_64
mariadb-libs-5.5.68-1.el7.x86_64 [root@box1 5.7]# rpm -evf mariadb-devel-5.5.68-1.el7.x86_64 mariadb-libs-5.5.68-1.el7.x86_64
错误:依赖检测失败:
libmysqlclient.so.18()(64bit) 被 (已安裝) net-snmp-agent-libs-1:5.7.2-49.el7.x86_64 需要
libmysqlclient.so.18()(64bit) 被 (已安裝) net-snmp-1:5.7.2-49.el7.x86_64 需要
libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-9.el7.x86_64 需要
libmysqlclient.so.18()(64bit) 被 (已安裝) qt-mysql-1:4.8.7-8.el7.x86_64 需要
libmysqlclient.so.18()(64bit) 被 (已安裝) qt5-qtbase-mysql-5.9.7-4.el7.x86_64 需要
libmysqlclient.so.18()(64bit) 被 (已安裝) qt3-MySQL-3.3.8b-51.el7.x86_64 需要
libmysqlclient.so.18()(64bit) 被 (已安裝) MySQL-python-1.2.5-1.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) net-snmp-agent-libs-1:5.7.2-49.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-9.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) qt-mysql-1:4.8.7-8.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) qt5-qtbase-mysql-5.9.7-4.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) qt3-MySQL-3.3.8b-51.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) MySQL-python-1.2.5-1.el7.x86_64 需要
mysql-libs 被 (已安裝) net-snmp-1:5.7.2-49.el7.x86_64 需要 ### 加--nodeps强制卸载mariadb lib
[root@box1 5.7]# rpm -ev --nodeps mariadb-devel-5.5.68-1.el7.x86_64 mariadb-libs-5.5.68-1.el7.x86_64
软件包准备中...
mariadb-devel-1:5.5.68-1.el7.x86_64
mariadb-libs-1:5.5.68-1.el7.x86_64

卸载完mariadb lib包之后重新安装

[root@box1 5.7]# rpm -ivh mysql-community-client-5.7.32-1.el7.x86_64.rpm mysql-community-common-5.7.32-1.el7.x86_64.rpm mysql-community-server-5.7.32-1.el7.x86_64.rpm mysql-community-libs-5.7.32-1.el7.x86_64.rpm
警告:mysql-community-client-5.7.32-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-common-5.7.32-1.e################################# [ 25%]
2:mysql-community-libs-5.7.32-1.el7################################# [ 50%]
3:mysql-community-client-5.7.32-1.e################################# [ 75%]
4:mysql-community-server-5.7.32-1.e################################# [100%]

2.4安装完之后的相关文件

/usr/bin目录下,主要是mysql相关的客户端命令、管理命令

[root@box1 5.7]# ls /usr/bin/mysql*
/usr/bin/mysql /usr/bin/mysqlcheck /usr/bin/mysqldump /usr/bin/mysql_install_db /usr/bin/mysql_secure_installation /usr/bin/mysql_ssl_rsa_setup
/usr/bin/mysqladmin /usr/bin/mysql_config_editor /usr/bin/mysqldumpslow /usr/bin/mysql_plugin /usr/bin/mysqlshow /usr/bin/mysql_tzinfo_to_sql
/usr/bin/mysqlbinlog /usr/bin/mysqld_pre_systemd /usr/bin/mysqlimport /usr/bin/mysqlpump /usr/bin/mysqlslap /usr/bin/mysql_upgrade

/usr/sbin

mysqld,mysql服务器的可执行文件

[root@box1 5.7]# ls /usr/sbin/mysql*
/usr/sbin/mysqld /usr/sbin/mysqld-debug

/usr/lib64/mysql

mysql client lib和plugin lib

[root@box1 5.7]# ls /usr/lib64/mysql/
libmysqlclient.so.20 libmysqlclient.so.20.3.19 mecab plugin

/usr/share/mysql

主要是mysql字符集和error msg相关文件

[root@box1 5.7]# ls /usr/share/mysql/
bulgarian dictionary.txt estonian greek italian mysql-log-rotate mysql_system_tables.sql polish serbian ukrainian
charsets dutch fill_help_tables.sql hungarian japanese mysql_security_commands.sql mysql_test_data_timezone.sql portuguese slovak uninstall_rewriter.sql
czech english french innodb_memcached_config.sql korean mysql_sys_schema.sql norwegian romanian spanish
danish errmsg-utf8.txt german install_rewriter.sql magic mysql_system_tables_data.sql norwegian-ny russian swedish

/etc/my.cnf

配置文件

/var/lib/mysql

mysql数据文件

[root@box1 5.7]# ls /var/lib/mysql*
/var/lib/mysql: /var/lib/mysql-files: /var/lib/mysql-keyring:

启动脚本

  • 服务启动文件 /etc/systemd/system/multi-user.target.wants/mysqld.service
  • 数据库初始化脚本 /usr/bin/mysqld_pre_systemd

3 启动mysql

使用service 启动mysql实例

[root@box1 5.7]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
[root@box1 5.7]# ps -elf | grep mysqld
1 S mysql 12663 1 0 80 0 - 280540 poll_s 08:17 ? 00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
0 S root 12959 2276 0 80 0 - 28206 pipe_w 08:21 pts/0 00:00:00 grep --color=auto mysqld

4 登陆mysql

第一次安装后,会生产mysql root账号的默认的临时密码,可以在/var/log/mysql.log中找到。

用临时密码登陆后,需要修改密码才能进行操作

[root@box1 5.7]# grep -i pass /var/log/mysqld.log
2021-03-31T12:14:47.169374Z 1 [Note] A temporary password is generated for root@localhost: _0eaf&hyQ9Ha
2021-03-31T12:23:26.373529Z 2 [Note] Access denied for user 'root'@'localhost' (using password: NO) [root@box1 5.7]# mysql -uroot -h127.0.0.1 -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.32 Copyright (c) 2000, 2020, 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. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select 1;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. mysql> alter user 'root'@'localhost' identified by 'helloWorld#';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> alter user 'root'@'localhost' identified by 'helloWorld#123';
Query OK, 0 rows affected (0.00 sec) mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2021-03-31 08:27:57 |
+---------------------+
1 row in set (0.00 sec)

5 关于mysql初始化

使用service启动mysql时,初次使用mysql,会执行脚本/usr/bin/mysqld_pre_systemd进行初始化,

脚本里进行了几个重要操作

  • 往mysql.plugin里添加validate_password插件
  • 使用mysqld --initialize初始化mysql系统数据库
  • 使用mysql_ssl_rsa_setup创建ssl证书文件
# more /usr/bin/mysqld_pre_systemd
... install_validate_password_sql_file () {
local initfile
initfile="$(mktemp /var/lib/mysql-files/install-validate-password-plugin.XXXXXX.sql)"
chmod a+r "$initfile"
echo "SET @@SESSION.SQL_LOG_BIN=0;" > "$initfile"
echo "INSERT INTO mysql.plugin (name, dl) VALUES ('validate_password', 'validate_password.so');" >> $initfile
echo $initfile
} ...
# If special mysql dir is in place, skip db install
[ -d "$datadir/mysql" ] && exit 0 # Create initial db and install validate_password plugin
initfile="$(install_validate_password_sql_file)"
/usr/sbin/mysqld ${instance:+--defaults-group-suffix=@$instance} --initialize \
--datadir="$datadir" --user=mysql --init-file="$initfile"
rm -f "$initfile" # Generate certs if needed
if [ -x /usr/bin/mysql_ssl_rsa_setup -a ! -e "${datadir}/server-key.pem" ] ; then
/usr/bin/mysql_ssl_rsa_setup --datadir="$datadir" --uid=mysql >/dev/null 2>&1
fi

更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw

MySQL运维实战(1.1)安装部署:使用RPM进行安装部署的更多相关文章

  1. Linux运维实战之DNS(bind)服务器的安装与配置

    转自http://sweetpotato.blog.51cto.com/533893/1598225 上次博文我们讨论了DNS的基础,本次博文我们重点来看看如何配置一台DNS服务器. [本次博文的主要 ...

  2. 转 移动云基于MySQL Galera的PXC运维实战

    ##sample 1 : mysql 监控 1.phpadmin  比较简单,适合上手 2.mysql_web python 写的, https://github.com/ycg/mysql_web/ ...

  3. 公司没有 DBA,Mysql 运维自己来

    如果你的公司有 DBA,那么我恭喜你,你可以无视 Mysql 运维.如果你的公司没有 DBA,那你就好好学两手 Mysql 基本运维操作,行走江湖,防身必备. 环境:CentOS7 版本: 一.虚拟机 ...

  4. CentOS7系统管理与运维实战

    CentOS7系统管理与运维实战 下载地址 https://pan.baidu.com/s/1KFHVI-XjGaLMrh39WuhyCw 扫码下面二维码关注公众号回复100007 获取分享码 本书目 ...

  5. 搭建稳固的MySQL运维体系

    MySQL 监控要点 MySQL 监控要点,主要涉及服务器和 MySQL 两个方向的监控告警. 在这两个监控告警方向需要重点关注监控策略.监控趋势图及报警方式. 监控策略指的是每个监控项的告警阈值,例 ...

  6. Istio 运维实战系列(3):让人头大的『无头服务』-下

    本系列文章将介绍用户从 Spring Cloud,Dubbo 等传统微服务框架迁移到 Istio 服务网格时的一些经验,以及在使用 Istio 过程中可能遇到的一些常见问题的解决方法. 失败的 Eur ...

  7. mysql运维必会的一些知识点整理

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  8. 网络运维必回的模拟器-GNS软件下载和安装

    网络运维必回的模拟器-GNS软件下载和安装 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.GNS简介 1>.什么是GNS GNS3是一款具有图形化界面可以运行在多平台( ...

  9. MySQL运维开发相关的所有工具

    http://www.ruzuojun.com/topic/592.html   Percona Toolkit 安装使用 http://cenalulu.github.io/mysql/mysql- ...

  10. mysql运维必会的一些知识点整理(转自民工哥)

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

随机推荐

  1. 【FAQ】关于获取运动健康数据的常见问题及解答

    目录 一.Health Kit健康数据采样, 原子采样数据问题 二.Health Kit查询历史数据查询数据和返回数据不一致 三.Health Kit关于获取历史数据问题 四.调用Health Kit ...

  2. 开源.NetCore通用工具库Xmtool使用连载 - 扩展动态对象篇

    [Github源码] <上一篇> 介绍了Xmtool工具库中的图形验证码类库,今天我们继续为大家介绍其中的扩展动态对象类库. 扩展动态对象是整个工具库中最重要的一个设计.在软件开发过程中, ...

  3. Django框架——模板层

    文章目录 1 模板层 一 模版简介 二 模版语法之变量 views.py html文件 三 模版之过滤器 语法: default length filesizeformat date slice tr ...

  4. 单元测验3:亲密关系mooc

    单元测验3:亲密关系 查看帮助 返回   1 单选(2分) 在亲密关系中,有关权力的表述,以下说法不太准确的的是? A. 对关系付出越多,权力越大. B. 大部分人会倾向认为,在恋爱关系中,男女应该拥 ...

  5. Aoba's GitLab Doki Theme - 一个简单的 GitLab 主题工具

    前言 平常工作在用 GitLab 但总觉得缺点什么颜色好单调,于是随手摸了一个主题工具 界面预览 GitLab 主页效果 个人偏好配置页面 安装方法 安装 Tampermonkey 之类的用户脚本工具 ...

  6. umich cv-2-2

    UMICH CV Linear Classifiers 在上一篇博文中,我们讨论了利用损失函数来判断一个权重矩阵的好坏,在这节中我们将讨论如何去找到最优的权重矩阵 想象我们要下到一个峡谷的底部,我们自 ...

  7. 飞码LowCode前端技术:如何便捷配置出页面

    简介 飞码是京东科技平台研发部研发的低代码产品,可使营销运营域下web页面快速搭建.本文将从三个方面来讲解如何便捷配置出页面,第一部分从数据.事件.业务支持三个方面进行分析,第二部分从模板与页面收藏与 ...

  8. Rasa NLU中的组件

      Rasa NLU部分主要是解决NER(序列建模)和意图识别(分类建模)这2个任务.Rasa NLP是一个基于DAG的通用框架,图中的顶点即组件.组件特征包括有顺序关系.可相互替换.可互斥和可同时使 ...

  9. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-26-处理单选和多选按钮-下篇

    1.简介 今天这一篇宏哥主要是讲解一下,如何使用Playwright来遍历单选和多选按钮.大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的单选和多选按 ...

  10. L2-040 哲哲打游戏

    这题读懂题目之后就发现它很呆 #include <bits/stdc++.h> using namespace std; const int N = 100010, M = 110; ve ...