DBA数据库运维-MySQL安装篇(glibc,源码)

news2024/11/28 4:33:31

1. MySQL数据库版本

版本说明
社区版:
MySQL Community Edition (GPL)
1.可以看做是企业版的“广泛体验版(小白鼠版)",未经各个专有系统平台的压力和性能测试 2.基于GPL协议发布,可以随意下载使用 3.没有任何官方技术支持服务
企业版:
MySQL Enterprise Edition(commercial)
1.提供了比较全面的高级功能、管理工具及技术支持 2.安全性、稳定性、可扩展性比较好
集群版:
MySQL Cluster CGE(commercial)
社区版可集群;企业版可集群

2. 版本命名方式

版本说明
a (Alpha) 版内测版,内部交流或者专业测试人员测试用。Bug较多,普通用户最好不要安装。
β(Beta) 版公测版,专业爱好者大规模测试用,存在一些缺陷,该版本也不适合一般用户安装。
y(Gamma )版相当成熟的测试版,与即将发行的正式版相差无几。
Final正式版本
Free自由版本
Release发行版本
Standard标准版本
Mini迷你精简版本,只有最基本的功能
Upgrade升级版本
GA(GenerallyAvailable)开发团队认为该版本是稳定版,可以在较为关键的场合使用。
Retail零售版

3. MySQL安装

3.1 三种安装方式

RPM版本
命名:MySQL-server-5.6.31-1.el7.x86_64.rpm[,需要在特定linux版本下安装。

基于glibc版本
命名:mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz
依赖 glibc库,可以安装在通用的Linux系统下

源代码编译安装
命名:mysql-5.6.35.tar.gz,通用的Linux下都可以编译安装。

三种安装方式比较

安装方式优点缺点
rpm安装卸载简单可定制性差
基于glibc安装可定制性相比rpm包灵活些安装相比rpm包复杂些,需要手动初始化数据库
源代码编译安装可定制性最强,根据需求和功能定制安装麻烦,需要手动初始化数据库

3.2 基于glibc安装MySQL

安装文档
版本下载: mysql-5.7.42-linux-glibc2.12-x86_64

在这里插入图片描述
安装步骤
本文mysql基目录(家目录):/usr/local/mysql
本文mysql数据目录:/usr/local/mysql/data

 # 1.创建用户组和用户
 groupadd mysql
 #useradd  mysql -r -s /sbin/nologin
 useradd -r -g mysql -s /bin/false mysql
 
 # 2.安装 mysql-5.7.42-linux-glibc2.12-x86_64
 mkdir /usr/local/mysql
 cd /usr/local/mysql
 tar zxvf mysql-5.7.42-linux-glibc2.12-x86_64.tar
 cp -a mysql-5.7.42-linux-glibc2.12-x86_64/*  ..
 
 # 3.更改mysql安装目录的所属组和所属用户
 chown -R mysql:mysql /usr/local/mysql
 
 # 4. Mysql启动,需要读取my.cnf,也需要读取数据目录的表文件,所以首次启动要初始化数据库
 ## 检查mysql家目录是否存在my.cnf
 ## 检查mysql数据目录是否存在my.cnf 
 ## 检查/etc/my.cnf是否存在,若存在且是默认mariadb的my.cnf,就删除掉该文件 cat /etc/my.cnf 
 ## 初始化数据库
	bin/mysqld --initialize --user=mysql
 ## 初始化之后,日志中给出默认密码,需要记录一下
 
 # 5. 拷贝启动脚本,启动数据库
	cp support-files/mysql.server /etc/init.d/mysql.server
	service mysql.server start
 # 6. mysql执行脚本加入环境变量
	vim /etc/profile
	export PATH=$PATH:/usr/local/mysql/bin
	source /etc/profile
# 7. 安全初始化数据库
##密码验证插件安装、禁止匿名登录? 禁止管理员账号远程登录? 删除测试库? 刷新权限表?
	bin/mysql_secure_installation

检查mysql启动状态

[root@node3 mysql]# ss -naltp|grep mysqld

3.3 基于源代码安装MySQL

  1. 安装需求
  2. 安装cmake 和 ncurses:
    yum -y install ncurses-devel cmake
  3. MySQL源码下载 ,放入合适位置 /usr/local/mysql_source
    在这里插入图片描述
  4. 编写/usr/local/mysql_source/mysql-5.7.43/cmake.sh
	cmake .\
	-DCMAKE_INSTALL_PREFIX=/mysq131\
	-DMYSQL_DATADIR=/mysq131/data\
	-DMYSQL_TCP_PORT=3307\
	-DMYSQL_UNIX_ADDR=/mysq131/mysq131.sock\
	-DWITH_INNOBASE_STORAGE_ENGINE=1\
	-DWITH_PARTITION_STORAGE_ENGINE=1\
	-DWITH_FEDERATED_STORAGE_ENGINE=1\
	-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
	-DWITH_MYISAM_STORAGE_ENGINE=1\
	-DENABLED_LOCAL_INFILE=1\
	-DEXTRA_CHARSETS=all
	-DDEFAULT_CHARSET=utf8mb4\
	-DDEFAULT_COLLATION=utf8mb4_general_ci

     执行cmake.sh: ./cmake.sh

  1. MySQL编译和安装: make && make install
    不需要手动创建mysql基目录和数据目录,cmake.sh中已指定
  2. 进入mysql 家目录/usr/local/mysql_source/mysql-5.7.43,进行后续配置
# 1.更改mysql安装目录的所属组和所属用户
 cd /usr/local/mysql_source
 cp -a mysql-5.7.43/* ..
 chown -R mysql:mysql /usr/local/mysql_source
 
 # 2. Mysql启动,需要读取my.cnf
 ## 检查mysql基目录/usr/local/mysql_source是否存在my.cnf,存在就读取该my.cnf,然后执行初始化数据库命令
 ## 若单机安装多个mysql服务,建议每个基目录下放置my.cnf
 ## 检查mysql数据目录/usr/local/mysql_source/data是否存在my.cnf 
 ## 检查/etc/my.cnf是否存在,若存在且是默认mariadb的my.cnf,就删除掉该文件 cat /etc/my.cnf 
 ## 初始化数据库
	bin/mysqld --initialize --user=mysql
 ## 初始化之后,日志中给出默认密码,需要记录一下
 
 # 3. 拷贝启动脚本,启动数据库
	cp support-files/mysql.server /etc/init.d/mysql.server
	service mysql.server start
 # 4. 安全初始化数据库
 ##密码验证插件安装、禁止匿名登录? 禁止管理员账号远程登录? 删除测试库? 刷新权限表?
	bin/mysql_secure_installation
  1. 常用配置选项
配置选项描述默认值建议值
CMAKE_INSTALL_PREFIX安装基目录(basedir)/usr/local/mysql根据需求
MYSQL_DATADIR数据目录(datadir)根据需求
SYSCONFDIR默认配置文件my.cnf路径/etc
MYSQL_TCP_PORTTCP/IP端口3306非默认端口
MYSQL_UNIX_ADDR套接字socket文件路径/tmp/mysql.sock$basedir/
DEFAULT_CHARSET默认字符集latin1utf8mb4
DEFAULT_COLLATION默认校验规则latin1_swedish_ciutf8mb4_general_ci
WITH_EXTRA_CHARSETS扩展字符集allall
ENABLED_LOCAL_INFILE是否启用本地加载外部数据文件功能OFF建议开启

存储引擎相关配置项
以下选项值均为布尔值,0或1,0代表不编译到服务器中,1代表编译,建议都静态编译到服务器中。其他的存储引擎可以根据实际需求在安装时通过WITH_XxxX_STORAGE_ENGINE=1的方式编译到服务器中。

参数名参数说明
WITH_INNOBASE_STORAGE_ENGINE将InnoDB存储引擎插件构建为静态模块编译到服务器中建议编译到服务器中。
WITH_PARTITION_STORAGE_ENGINE是否支持分区
WITH_FEDERATED_STORAGE_ENGINE本地数据库是否可以访问远程mysq1数据
WITH_BLACKHOLE_STORAGE_ENGINE黑洞存储引擎,接收数据,但不存储,直接丢弃
WITH_MYISAM_STORAGE_ENGINE将MYISAM存储引擎静态编译到服务器中

3.4 更改管理员root用户密码

① 已知旧密码修改新密码
修改新密码为123456
[root@node3 bin]# mysqladmin -uroot password ‘123456’ -p

② 已知旧密码,使用SQL语句修改密码

mysql> select host,user,authentication_string,password_expired,password_last_changed,password_lifetime,account_locked from mysql.user;
mysql> alter user 'root'@'localhost' identified by '1qaz@WSX';
mysql> flush privileges;

③Shell终端安全初始化脚本

cd mysql家目录/bin
[root@node3 bin]# mysql_secure_installation

④忘记密码后重置密码
停止数据库
跳过授权表启动数据库
免密登录数据库,SQL语句修改数据库
刷新权限
启动数据库 : service mysql start

[root@node3 ~]# service mysql stop
Redirecting to /bin/systemctl stop mysql.service
[root@node3 ~]# mysqld_safe --skip-grant-tables --user=mysql&
[2] 22824
[root@node3 ~]# 2023-10-02T03:12:44.975972Z mysqld_safe Logging to '/usr/local/mysql/data/node3.itcast.cn.err'.
2023-10-02T03:12:45.082633Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
mysql> alter user 'root'@'localhost' identified by '1qaz@WSX';
mysql> flush privileges;

3.5 MySQL5.6.X 与 5.7.X修改密码的区别

MySQL5.6.X版本

mysql> update mysql.user set authentication_string = password('123456') where user='root' and host = 'localhost';
mysql> set password for 'root'@'localhost'=password('123456');

MySQL 5.7.X版本user表中已经没有password字段

mysql> set password for root@localhost = password('1qaz@WSX');
mysql> set password for 'root'@'localhost'='1qaz@WSX';
-- 推荐
mysql> alter user 'root'@'localhost' identified by '1qaz@WSX';

4. 客户端工具

4.1 mysql

用法:
bin/mysql [options][db_name]
options参数:
-u, --user=name:指定登录用户名
-p, --password:指定登录密码(注意是小写p),一定要放到最后面
-h, --host=name:指定数据库的主机地址
-P, --port=xxx:指定数据库的端口号(大写P)
-S, --socket=name:指定socket文件
-e, --execute=name:使用非交互式操作(在shell终端执行sql语句)

mysql客户端登录mysql服务

① 本地登录
mysql -uroot -p
mysql -uroot -p123456
② 指定本地或远端主机登录
mysql -uroot -hlocalhost -P3306 -p
mysql -uroot -hlocalhost -P3306 -p123456
③ shell终端使用SQL语句
mysql -uroot  -e "show databases;" -p123456
mysql -uroot -hlocalhost -P3306 -e "show databases;" -p123456
④ 使用socket文件登录
 mysql -uroot -S /tmp/mysql.sock -uroot -p123456
⑤ 单机>=1个mysql server实例,指定别名登录
alias startMysq1='mysql -S /tmp/mysq1.sock'
startMysq1 -uroot -p123456
不设置参数,默认root@localhost本地登录
startMysq1 -p

4.2 mysqladmin

mysqladmin [options]command [command-options]

options常用参数:
-h,–host=name 连接主机
-p,–password 密码
-P,–port=连接端口
-S,–socket=name指定socket文件
-u, --user=name指定用户名

常用命令:
password [new-password]更改密码
reload 刷新授权表
shutdown 停止mysql服务
status 简短查看数据库状态信息
start-slave 启动slave
stop-slave 停止slave
variables 打印可用变量
version 查看当前mysql数据库的版本信息

mysqladmin shutdown -uroot -p
mysqladmin shutdown -uroot -p123456
mysqladmin password '123456' -uroot -p123456
mysqladmin shutdown -uroot -p123456 -S /tmp/mysq1.sock
mysqladmin status -uroot -p123456 -S /tmp/mysq1.sock


alias startMysqladmin='mysqladmin -S /tmp/mysq1.sock'
startMysqladmin shutdown -uroot -p123456

5.MySQL启动过程

  1. 命令行启动数据库:
    ① service mysql start -> mysqld_safe -> mysqld daemon
    ② mysqld_safe [options] & -> mysqld daemon
        ex: mysqld_safe --user mysql
    脚本调用顺序:
         mysql 调用mysqld_safe,mysqld_safe调用mysqld ,所以①②两种方式启动,会有两个进程工作
    在这里插入图片描述
  2. 以上方式启动数据库读取相应配置文件顺序:
    $basedir(mysql安装目录)
    —> $datadir (mysql的数据目录)
    —> /etc/my.cnf
    –> /etc/mysql/my.cnf
    –> -/.my.cnf
//表示启动时给mysq1d程序传递相应参数
[mysq1d]
basedir= /usr/local/mysql 
datadir= /usr/local/mysql/data
port=3307
socket=/usr/local/mysql/mysql.sock
server_id=1
1og-error=/usr/local/mysql/err
pid-file=/usr/local/mysql/pid

//表示使用mysq1客户端工具连接mysq1数据库时传递相应参数
// 配置client标签,shell终端直接输入mysql,就可以启动
[client]
socket=/usr/local/mysql/mysql.sock
port=3307
password="123456"

// mysqld_safe启动数据库时传递的参数
[mysqld_safe

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1055758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

经典循环神经网络(一)RNN及其在歌词数据集上的应用

经典循环神经网络(一)RNN及其在歌词数据集上的应用 1 RNN概述 在深度学习兴起之前,NLP领域一直是统计模型的天下,例如词对齐算法GIZA,统计机器翻译开源框架MOSES等等。在语言模型方向,n-gram是当时最为流行的语言模型方法。n-gr…

YoloV8改进策略:SPD-Conv加入到YoloV8中,让小目标无处遁形

摘要 SPD-Conv是一种新的构建块,用于替代现有的CNN体系结构中的步长卷积和池化层。它由一个空间到深度(SPD)层和一个非步长卷积(Conv)层组成。 空间到深度(SPD)层的作用是将输入特征图的每个空间维度降低到通道维度,同时保留通道内的信息。这可以通过将输入特征图的每…

关于日志系统

目录 日志落地类(工厂模式)双缓冲区异步处理器缓冲区异步工作器 日志器类同步日志器异步日志器构造日志器构造局部日志器构造全局日志器日志器管理器(单例模式) 日志宏&全局接口(代理模式) 源码&#x…

使用 cURL 发送 HTTP 请求: 深入探讨与示例

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Vue3之Suspense

<Suspense> 是一个内置组件&#xff0c;用来在组件树中协调对异步依赖的处理。它让我们可以在组件树上层等待下层的多个嵌套异步依赖项解析完成&#xff0c;并可以在等待时渲染一个加载状态。 我们可以看到官网并不推荐我们使用它&#xff0c;目前仍处于测试中。 他用于加…

【算法系列篇】哈希表

文章目录 前言1. 两数之和1.1 题目要求1.2 做题思路1.3 Java代码实现 2. 判断是否为字符重排2.1 题目要求2.2 做题思路2.3 Java代码实现 3. 存在重复元素3.1 题目要求3.2 做题思路3.3 Java代码实现 4. 存在重复元素II4.2 题目要求4.2 做题思路4.3 Java代码实现 5. 字母异位词分…

Guitar Pro 8 .1全新功能介绍及2023官方特惠优惠券

《中国好声音》节目诞生10年多热度不减&#xff0c;每一季都有籍籍无名的学员成为万众瞩目的新星。怎么像他们一样把爱好变成事业&#xff1f;带着这个问题在不断的探寻中找到了答案&#xff0c;那就是要在有限的时间里比别人做效率更高的事。所谓“工欲善其事&#xff0c;必先…

超百家上市公司抛出回购、增持计划

9月以来&#xff0c;多家上市公司披露回购方案或增持计划&#xff0c;持续向市场传递积极信号&#xff0c;以真金白银提振市场信心。 Wind统计显示&#xff0c;截至9月28日&#xff0c;9月以来已有77家上市公司披露回购预案&#xff0c;其中多家公司发布超过亿元的回购计划。 …

WINDOWS与LINUX的文件文件共享

打开VMware: 点击虚拟机->点击设置 出来虚拟机设置&#xff0c;咱们点击选项->有个共享文件夹点击->选择总是启用->点击添加 下一步 此处选择一个windows下与虚拟机共享的一个目录 最后确定就ok了 那怎么在虚拟机Linux中访问共享文件呐 在文件的其他位置选择计…

SpringMVC如何处理表单提交与文件上传

SpringMVC处理表单提交与文件上传 SpringMVC是一个流行的Java框架&#xff0c;用于构建Web应用程序。它提供了强大的功能来处理表单提交和文件上传操作。本文将深入探讨SpringMVC如何处理这些常见的Web任务&#xff0c;以及如何使用示例代码来实现它们。 表单提交处理 表单提…

基于 SpringBoot+Vue 的企业人事管理系统

1 简介 本文讲解的是 Java基于 SpringBoot 的人事管理系统。本系统涉到的功能主要有&#xff1a;首页&#xff0c;个人中心&#xff0c;员工管理&#xff0c;部门管理&#xff0c;员工考勤管理&#xff0c;请假申请管理&#xff0c;加班申请管理&#xff0c;员工工资管理&…

cesium 鹰眼图2

cesium 鹰眼图2 1、实现方法 本文采用cesium 和 leaflet 来时实现,鹰眼采用leaflet来实现 2、示例代码 2.1 <!DOCTYPE html> <html><head><meta charset="utf-8">

【图像融合】差异的高斯:一种简单有效的通用图像融合方法[用于融合红外和可见光图像、多焦点图像、多模态医学图像和多曝光图像](Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

mathtype如何嵌入到word中?详细mathtype安装步骤教程

mathtype是一款功能特别强大的数学方式编辑软件&#xff0c;为用户提供各种强大的数学公式符号帮助用户进行计算&#xff0c;并且速度很快。有小伙伴知道mathtype如何嵌入到word中吗&#xff0c;这里小编就给大家详细介绍一下mathtype嵌入到word中的方法&#xff0c;有需要的小…

第81步 时间序列建模实战:Adaboost回归建模

基于WIN10的64位系统演示 一、写在前面 这一期&#xff0c;我们介绍AdaBoost回归。 同样&#xff0c;这里使用这个数据&#xff1a; 《PLoS One》2015年一篇题目为《Comparison of Two Hybrid Models for Forecasting the Incidence of Hemorrhagic Fever with Renal Syndr…

循环语句

章节目录&#xff1a; 一、while 循环1.1 句式与基本使用1.2 while...else1.3 单行语句 二、for 循环2.1 句式与基本使用2.2 for...else2.3 range() 函数 三、退出循环3.1 break3.2 continue 四、pass 语句五、结束语 一、while 循环 1.1 句式与基本使用 句式&#xff1a; w…

【进阶C语言】自定义类型

本节内容大致目录如下&#xff1a; 1.结构体 2.位段 3.枚举 4.联合&#xff08;共用体&#xff09; 以上都是C语言中的自定义类型&#xff0c;可以根据我们的需要去定义。 一、结构体 一些基础知识在初阶C语言的时候已经介绍过&#xff0c;在这里粗略概括&#xff1b;重…

C++基于Qt中QOpenGLWidget模块实现的画图板源码+可执行文件

基于Qt中QOpenGLWidget模块实现的画图板 一、系统概述 本系统拟完成一个画图板&#xff0c;对多种常见图形进行基本操作系统功能 二维图形的输入&#xff1a;可输入或全部清除直线、矩形、圆、椭圆、多边形、文本等二维图形的变换&#xff1a;在直线、矩形、圆、椭圆、多边形…

(七)Flask之路由转换器

引子&#xff1a; from flask import Flaskapp Flask(__name__)# 通过使用<int>转换器&#xff0c;可以捕获URL中的整数值&#xff0c;并将其作为参数传递给视图函数。 app.route(/index/<int:nid>, methods[GET, POST]) def index(nid):print(nid)return Indexi…