热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL在Linux上的安装

方式1:基于特定的glibc版本编译的二进制安装包,访问下载网站,选择不同的版本方式2:特定linux版本下编译

方式1:基于特定的 glibc 版本编译的二进制安装包,访问下载网站,选择不同的版本

方式2:特定 linux 版本下编译的 rpm 版本,MySQL Yum Repository YUM 源 在线安装

方式2修正:如果服务器不能访问公网,则通过YUM源下载到本地,然后上传服务器,通过 rpm 命令安装

方式2修正:手工从官网下载相关的 rpm 包,注意选择版本,OS 等

只需要下载以下4个文件:

  1. mysql-community-client-5.7.28-1.el7.x86_64.rpm
  2. mysql-community-common-5.7.28-1.el7.x86_64.rpm
  3. mysql-community-libs-5.7.28-1.el7.x86_64.rpm
  4. mysql-community-server-5.7.28-1.el7.x86_64.rpm

glibc 版本安装

从官网直接下载包mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

安装步骤

$ sudo useradd -r mysql -s /sbin/nologin
$ groups mysql
mysql : mysql
$ sudo mkdir -p /u01/app /u01/soft /u02/mysqldata
$ rpm -q glibc
glibc-2.17-78.el7.x86_64
$ cd /u01/soft; tar -xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
$ ln -sv /u01/soft/mysql-5.7.28-linux-glibc2.12-x86_64 /u01/app/mysql
'/u01/app/mysql' -> '/u01/soft/mysql-5.7.28-linux-glibc2.12-x86_64'
$ chown -R mysql:mysql /u01/app/mysql
$ chown -R mysql:mysql /u02/mysqldata
$ cd /u01/app/mysql/bin
./mysqld --initialize --basedir=/u01/app/mysql --datadir=/u02/mysqldata --user=mysql --explicit_defaults_for_timestamp
$ ls /u02/mysqldata/

mysqld.service 服务

$ more /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/var/run/mysqld/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissiOnsStartOnly=true
# Needed to create system tables
ExecStartPre=/usr/bin/mysqld_pre_systemd
# Start main service
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvirOnmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false

rpm 版本安装

下载 rpm 安装包

下载 wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

安装 MySQL 源 sudo yum localinstall mysql57-community-release-el7-11.noarch.rpm

检查 MySQL 源是否安装成功

$ sudo yum repolist enabled | grep "mysql.*-community.*"
mysql-connectors-community/x86_64 MySQL Connectors Community 118
mysql-tools-community/x86_64 MySQL Tools Community 95
mysql57-community/x86_64 MySQL 5.7 Community Server 364

下载全部依赖包到本地目录(vagrant centos7)

安装插件 sudo yum install yum-plugin-downloadonly

下载依赖包 sudo yum install -y --downloadonly --downloaddir=/mysql57 mysql-community-server

$ yum -h
-y, --assumeyes 回答全部问题为是
--downloadonly 仅下载而不更新
--downloaddir=DLDIR 指定一个其他文件夹用于保存软件包

只保留 mysql 开头的 rpm 包,删除其余 rpm 包

# rpm -qa |grep mysql
mysql-community-common-5.7.28-1.el7.x86_64
mysql-community-libs-compat-5.7.28-1.el7.x86_64
mysql-community-libs-5.7.28-1.el7.x86_64
mysql-community-server-5.7.28-1.el7.x86_64
mysql-community-client-5.7.28-1.el7.x86_64
# rpm -qa |grep mysql|tr '\n' ' '
# rpm -e --nodeps mysql-community-server-5.7.28-1.el7.x86_64 mysql-community-common-5.7.28-1.el7.x86_64 mysql-community-client-5.7.28-1.el7.x86_64 mysql-community-libs-compat-5.7.28-1.el7.x86_64 mysql-community-libs-5.7.28-1.el7.x86_64
$ ls -lh *.rpm
-rw-r--r-- 1 vagrant vagrant 25M 7月 18 10:59 mysql-community-client-5.7.28-1.el7.x86_64.rpm
-rw-r--r-- 1 vagrant vagrant 275K 7月 18 10:59 mysql-community-common-5.7.28-1.el7.x86_64.rpm
-rw-r--r-- 1 vagrant vagrant 2.2M 7月 18 11:00 mysql-community-libs-5.7.28-1.el7.x86_64.rpm
-rw-r--r-- 1 vagrant vagrant 2.1M 7月 18 11:00 mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
-rw-r--r-- 1 vagrant vagrant 166M 7月 18 11:00 mysql-community-server-5.7.28-1.el7.x86_64.rpm

上传 sshpass -p mima scp -P1122 -o StrictHostKeyChecking=no ./*.rpm root@192.168.1.23:./mysql/

目标机执行 sudo rpm -ivh *.rpm --nodeps --force

$ sudo rpm -ivh *.rpm --nodeps --force
警告:mysql-community-client-5.7.27-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-common-5.7.27-1.e################################# [ 20%]
2:mysql-community-libs-5.7.27-1.el7################################# [ 40%]
3:mysql-community-client-5.7.27-1.e################################# [ 60%]
4:mysql-community-server-5.7.27-1.e################################# [ 80%]
5:mysql-community-libs-compat-5.7.2################################# [100%]

目标机开启启动 systemctl enable mysqld, 启动服务 systemctl start mysqld, 查看状态 systemctl status mysqld

修改 root 本地账户密码

安装完成后,生成的默认密码在 /var/log/mysqld.log 文件中。使用 grep 'temporary password' /var/log/mysqld.log 命令找到日志中的密码。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'A1765527-61a0';

注意:mysql 5.7 默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位(建议使用 uuidgen 生成一个)。否则会提示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 错误。

update mysql.user set host='localhost' where user='root';
flush privileges; -- 只允许root在本机登录
update mysql.user set host='%' where user='root';
flush privileges; -- 允许root远程访问

参考脚本

#!/usr/bin/env bash
yum install -y libaio*
cp my.cnf /etc/my.cnf
rpm -ivh *.rpm --nodeps --force
chown mysql:mysql /var/lib/mysql
systemctl daemon-reload
systemctl enable mysqld
# systemctl is-enabled mysqld
systemctl start mysqld
grep 'temporary password' /var/lib/mysql/mysqld.log
password=$(grep -oP 'temporary password(.*): \K(\S+)' /var/lib/mysql/mysqld.log)
newpwd=$(grep -oP '\bPassword\s*=\s*"\K[^"]+' ../mysqlclusterinit/config.toml)
mysqladmin --user=root --password="$password" password "$newpwd"

参考

  • CentOS 7 下 MySQL 5.7 的安装与配置
  • Installing a package forcefully without dependencies
  • 基于 Linux 安装glibc版mysql 5.7.12
  • Linux: Check the glibc version
  • MySQL 5.7 — Native Systemd Support
  • MySQL 客户端无密码登录

Removing the MySQL root password

On MySQL 5.7:

password=$(grep -oP 'temporary password(.*): \K(\S+)' /var/log/mysqld.log)
mysqladmin --user=root --password="$password" password aaBB@@cc1122
mysql --user=root --password=aaBB@@cc1122 -e "UNINSTALL PLUGIN validate_password;"
mysqladmin --user=root --password="aaBB@@cc1122" password ""

On MySQL 8.0:

password=$(grep -oP 'temporary password(.*): \K(\S+)' /var/log/mysqld.log)
mysqladmin --user=root --password="$password" password aaBB@@cc1122
mysql --user=root --password=aaBB@@cc1122 -e "UNINSTALL COMPONENT 'file://component_validate_password';"
mysqladmin --user=root --password="aaBB@@cc1122" password ""

查看 MySQL 服务加载 my.cnf 的地址位置

How do I find the MySQL my.cnf location

$ mysqladmin --help
...
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
...

Table 4.2 Option Files Read on Unix and Unix-Like Systems

File NamePurpose /etc/my.cnf

MySQL 5.7 my.cnf 配置文件说明

官网说:从5.7.18开始不在二进制包中提供 my-default.cnf 文件。参考:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html

经过测试,在5.7.18版本中,使用 tar.gz 安装时,也就是压缩包解压出来安装这种,已经不再需要 my.cnf 文件也能正常运行。

my.cnf 文件就是把在命令行上启动MySQL时后面的参数用cnf文件配置好,那么下载启动时就不再需要在命令上加如参数。

这个my.cnf文件可以是自定义位置,也可以使用如下默认的位置,只要放在默认位置,MySQL 自动识别(通过 deb 或者 APT 源安装的,初始位置在下方列表):
在 Unix 和类 Unix 系统上读取选项文件

文件名目的 /etc/my.cnf

gossh 脚本

$ export GOSSH_HOSTS="192.168.1.(1 3 5):8022 root/root id=(1 3 5)"
$ export em="\!"; export sq="'"; export dq='"';
$ export GOSSH_CMDS="%host MYSQL_PWD='62A56623CA8c' mysql -uroot -h127.0.0.1 -P9633 -vvv -e ${dq}show variables like 'slave_parallel%'${dq}"
$ gossh

my.cnf 在 mysqld 段配置增加参数脚本:

echo "\nslave_parallel_type=LOGICAL_CLOCK\nslave_parallel_workers=10\nsync_binlog=0\ninnodb_flush_log_at_trx_commit=2\ninnodb_flush_log_at_timeout=1800\n" > mts.cnf
mv /etc/my.cnf /etc/my.cnf.bck
sed '/\[mysqld\]/ r mts.cnf' /etc/my.cnf.bck > /etc/my.cnf

安装失败,看错误日志

查看指定时间的日志

可以使用 --since 和 --until 选项过滤任意时间限制,这些限制分别显示给定时间之前或之后的条目。

例如: #"显示2017年10月30号,18点10分30秒到当前时间之间的所有日志信息"

`journalctl --since="2017-10-30 18:10:30"`

另外,journal 还能够理解部分相对值及命名简写。例如,大家可以使用 “yesterday”、“today”、“tomorrow” 或者 “now” 等表达。另外,我们也可以使用 “-” 或者 “+” 设定相对值,或者使用 ago 之前的表达。

例如获取昨天的日志如下:

journalctl –since yesterday

获取某一个时间段到当前时间的前一个小时的日志

journalctl --since 09:00 --until "1 hour ago"

获取当前时间的前20分钟的日志

journalctl --since "20 min ago"

获取某一天到某一个时间段的日志信息

journalctl --since "2017-01-10" --until "2017-01-11 03:00"

如您所见,定义灵活的时间窗口来过滤您希望看到的条目相对容易。

按消息兴趣过滤

我们在上面学习了一些可以使用时间限制来过滤日记数据的方法。在本节中,我们将讨论如何根据您感兴趣的服务或组件来进行过滤。systemd日记提供了多种方法来执行此操作。

按服务

也许最有用的过滤方式是你感兴趣的单位。我们可以使用这个-u选项来过滤。
例如,查看httpd服务的日志信息

[root@centos7 ~]# journalctl -u httpd.service
-- Logs begin at Thu 2018-02-22 17:01:47 CST, end at Thu 2018-02-22 17:30:01 CST. --
Feb 22 17:29:27 centos7.localdomain systemd[1]: Starting The Apache HTTP Server...
Feb 22 17:29:27 centos7.localdomain httpd[1610]: AH00558: httpd: Could not reliably determine t
Feb 22 17:29:28 centos7.localdomain systemd[1]: Started The Apache HTTP Server.

也可以查看httpd服务当天的运行状况

journalctl -u httpd.service --since today

参考

  1. journalctl 工具是 CentOS-7 才有的工具

查看一个动态库so是否存在

$ gossh --hosts="192.168.1.1:(21061-21063) root/123" --cmds="%host ldconfig -p | grep libnuma"
--- 192.168.1.1:21061 ---
# ldconfig -p | grep libnuma
libnuma.so.1 (libc6,x86-64) => /lib64/libnuma.so.1
#
--- 192.168.1.1:21062 ---
# ldconfig -p | grep libnuma
#
--- 192.168.1.1:21063 ---
# ldconfig -p | grep libnuma
# % $ gossh --hosts="192.168.1.1:(21061-21063) root/123" --cmds="%host-1 ls -lh /lib64/libnuma.so.1"
--- 192.168.1.1:21061 ---
# ls -lh /lib64/libnuma.so.1
-rwxr-xr-x 1 root root 50K Apr 11 2018 /lib64/libnuma.so.1
# %

推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ... [详细]
  • 微软评估和规划(MAP)的工具包介绍及应用实验手册
    本文介绍了微软评估和规划(MAP)的工具包,该工具包是一个无代理工具,旨在简化和精简通过网络范围内的自动发现和评估IT基础设施在多个方案规划进程。工具包支持库存和使用用于SQL Server和Windows Server迁移评估,以及评估服务器的信息最广泛使用微软的技术。此外,工具包还提供了服务器虚拟化方案,以帮助识别未被充分利用的资源和硬件需要成功巩固服务器使用微软的Hyper - V技术规格。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • PeopleSoft安装镜像版本及导入语言包的方法
    本文介绍了PeopleSoft安装镜像的两个版本,分别是VirtualBox虚拟机版本和NativeOS版本,并详细说明了导入语言包的方法。对于Windows版本,可以通过psdmt.exe登录进入,并使用datamover脚本导入语言包。对于Linux版本,同样可以使用命令行方式执行datamover脚本导入语言包。导入语言包后,可以实现多种语言的登录。参考文献提供了相关链接以供深入了解。 ... [详细]
author-avatar
阜阳king
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有