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

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/nologinuseradd -r -g mysql -s /bin/false mysql# 2.安装 mysql-5.7.42-linux-glibc2.12-x86_64mkdir /usr/local/mysqlcd /usr/local/mysqltar zxvf mysql-5.7.42-linux-glibc2.12-x86_64.tarcp -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.serverservice mysql.server start# 6. mysql执行脚本加入环境变量vim /etc/profileexport PATH=$PATH:/usr/local/mysql/binsource /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_sourcecp -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.serverservice 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.sockalias 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.mzph.cn/news/93010.shtml

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

相关文章

JUC中的设计模式

文章目录 1. 终止模式之两阶段终止模式 1. 终止模式之两阶段终止模式 需求:用一个线程每两秒检测***状态,当不想检测时,用另一个线程将其停止 在一个线程 T1 中如何“优雅”终止线程 T2?这里的【优雅】指的是给 T2 一个料理后事…

前端开发网站推荐

每个人都会遇见那么一个人,永远无法忘却,也永远不能拥有。 以下是一些可以用来查找和比较前端框架的推荐网站: JavaScript框架比较: 这些网站提供了对不同JavaScript框架和库的详细比较和评估。 JavaScripting: 提供了大量的JavaS…

防火墙基础之H3C防火墙分支与分支之间双向地址转换

分支与分支之间双向地址转换 原理概述: 防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理​与筛选的软件和硬件​设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资…

凉鞋的 Godot 笔记 102. 场景与节点的增删改查

在上一篇,我们完成了 Godot 引擎的 Hello World 输出,并且完成了第一个基本循环: 通过这次基本循环的完成,我们获得了一点点的 Godot 使用经验,这非常重要。 有实践经验后再去补充理论 和 先学习理论后去实践相比,前者…

python-切换镜像源和使用PyCharm进行第三方开源包安装

文章目录 前言python-切换镜像源和使用PyCharm进行第三方开源包安装1. 切换镜像源2. 使用PyCharm进行第三方开源包安装 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每…

【Linux】线程概念

🔥🔥 欢迎来到小林的博客!!       🛰️博客主页:✈️林 子       🛰️博客专栏:✈️ Linux       🛰️社区 :✈️ 进步学堂       &#x1f6f0…

常见加密和解密方法介绍。

介绍常见的加密和解密方法。 加密是利用数学方法将明文转化为密文,从而达到保护数据的目的。 通过加密可保证数据的机密性、完整性、鉴别性。 机密性:通过数据加密实现。只允许特定用户访问和阅读信息。 完整性:通过数字加密、散列、数字签名…

《Vue.js+Spring Boot全栈开发实战》简介

大家好,我是老卫。 恰逢中秋国庆双节,不想出门看人山,惟愿宅家阅书海! 今天开箱的这本书是《Vue.jsSpring Boot全栈开发实战》。 外观 从书名故名思议,就是基于Vue.jsSpring Boot来实现企业级应用全栈开发。 该书由…

LabVIEW工业虚拟仪器的标准化实施

LabVIEW工业虚拟仪器的标准化实施 创建计算机化的测试和测量系统,从计算机桌面控制外部测量硬件设备,以及在计算机屏幕上显示的类似仪器的面板上查看来自外部设备的测试或测量数据,所有这些都需要虚拟仪器系统软件。该软件允许用户执行所有这…

Axios post请求出现500错误

笔者在编写前端form表单传后端数据的时候,出现了以下问题 一、问题场景 当我用axios发送post请求的时候,出现了500错误 笔者找了很长时间错误,代码没问题,后端接口也没问题,后来发现问题出在实体类上了 当前端post请…

BGP服务器租用价格表_腾讯云PK阿里云

BGP云服务器像阿里云和腾讯云均是BGP多线网络,速度更快延迟更低,阿里云BGP服务器2核2G3M带宽优惠价格108元一年起,腾讯云BGP服务器2核2G3M带宽95元一年起,阿腾云分享更多云服务器配置如2核4G、4核8G、8核16G等配置价格表如下&…

list(链表)

文章目录 功能迭代器的分类sort函数(排序)merage(归并)unique(去重)removesplice(转移) 功能 这里没有“[]"的实现;原因:实现较麻烦;这里使用迭代器来实…

《数据结构、算法与应用C++语言描述》-栈的应用-迷宫老鼠问题

迷宫老鼠 问题描述 迷宫(如图 8-9 所示)是一个矩形区域,有一个入口和一个出口。迷宫内部包含不能穿越的墙壁或障碍物。这些障碍物沿着行和列放置,与迷宫的边界平行。迷宫的入口在左上角,出口在右下角。 假定用 nxm 的…

正则表达式 Regular Expression学习

该文章内容为以下视频的学习笔记: 10分钟快速掌握正则表达式_哔哩哔哩_bilibili正则表达式在线测试工具:https://regex101.com/, 视频播放量 441829、弹幕量 1076、点赞数 19330、投硬币枚数 13662、收藏人数 26242、转发人数 2768, 视频作者 奇乐编程学…

【iptables 实战】07 iptables NAT实验

在上一节中,我们将两个网段的机器,通过中间机器的网络转发,能达到互通。再来回顾一下这个网络连接的图 上一节我们在防火墙实验中,设置了主机B的的转发规则,我们先清空主机B的转发规则 [rootlocalhost ~]# iptables…

飞桨EasyDL-Mac本地部署离线SDK-Linux集成Python

前言:本文对使用飞桨EasyDL桌面版实现本地部署物体检测做一下说明 一、训练模型 如何使用飞桨EasyDL桌面版这里就不再赘述,直接参照官方文档进行物体检测模型训练。 飞桨EasyDL桌面版-用零代码开发实现物体检测https://ai.baidu.com/ai-doc/EASYDL/Tl2…

基于监督学习的多模态MRI脑肿瘤分割,使用来自超体素的纹理特征(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

国庆作业 day1

C语言基础考题(40) 选择题 20分每题2分 1、已知字母A的ASCII码为十进制数值65,且S为字符型,则执行语句SA6-3;后S中的值为 ( ) A.D B.68 C.不确定的值 D.C 2、若有定义语句:int a12;,则执…

Linux配置命令

一&#xff1a;HCSA-VM-Linux安装虚拟机后的基础命令 1.代码命令 1.查看本机IP地址&#xff1a; ip addr 或者 ip a [foxbogon ~]$ ip addre [foxbogon ~]$ ip a 1&#xff1a;<Loopback,U,LOWER-UP> 为环回2网卡 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP&g…

10个与AI相关的技术领域

**10个与AI相关的技术领域** 除了与各个科学领域相关的具体挑战之外&#xff0c;AI在科学领域还存在一些共同的技术挑战。特别是&#xff0c;我们确定了以下四个共同的技术挑战&#xff1a;超出分布的泛化、可解释性、由自监督学习提供支持的基础模型和不确定性量化。尽管这些…