MySQL 安装和基本使用
MySQL 介绍
MySQL 的特性
-
MySQL 是基于开源协议发布的,可以免费使用,也可以基于源码进行二次开发。
-
MySQL 使用标准 SQL 语言进行管理。
-
MySQL 可以运行于多个系统上,具有跨平台特性,并且支持多种语言。
-
MySQL 使用插件式存储引擎,不同的存储引擎,有着不同的功能和特性,使用者可以根据需要灵 活选择。
-
MySQL 基于单进程,多线程的模式进行工作。
-
MySQL 提供了大量的测试组件和诸多的扩展
MySQL 安装
MySQL 主流的三种安装方式
安装方式 | 说明 |
---|---|
包管理器进行安装 | 配置好 MySQL 仓库源,用包管理器进行在线安装 |
二进制包本地安装 | 下载己编译完成的压缩包,展开至特定路径,并经过简单配置后即可使用 |
源码编译安装 | 下载指定版本源码在本地进行编译安装 |
包管理器进行安装
yum list mysql mysql-server#安装 mysql-server,会自动安装客户端包
yum install -y mysql-server#服务状态
systemctl status mysqld.service#启动服务
systemctl enable --now mysqld.service#自动创建的账户getent passwd mysql
mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin#查看家目录
ll /var/lib/mysql
二进制包安装
这里的二进制包是指己经编译完成,以压缩包提供下载的文件,下载到本地之后释放到自定义目录,再进行配置即可
#安装依赖
yum -y install libaio numactl-libs ncurses-compat-libs#创建组和用户
groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql#下载包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql8.0.20-linux-glibc2.12-x86_64.tar.xz#解压至指定目录,这个目录只能写 /usr/local/
tar xf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
cd /usr/local/
ln -s mysql-8.0.20-linux-glibc2.12-x86_64/ mysql
chown -R root.root mysql/#创建环境变量
echo 'PATH=/usr/local/mysql/bin:$PATH' >/etc/profile.d/mysql.sh
. /etc/profile.d/mysql.shecho $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin#创建主配置文件
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock#创建数据目录
mkdir -pv /data/mysql#初始化,本地root用户空密码
#如果使用 --initialize 选项会生成随机密码,要去 /data/mysql/mysql.log中查看mysqld --initialize-insecure --user=mysql --datadir=/data/mysql#加启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqld#启动服务
systemctl start mysqld.service
源码编译安装
源码编译安装与前面的二进制包安装相比较,只多了编译过程
#安装依赖
yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel perl-Data-Dumper#创建用户
useradd -r -s /sbin/nologin -d /data/mysql mysql#创建目录,修改权限
mkdir -pv /data/mysql
chown mysql.mysql /data/mysql#下载源码
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.51.tar.gz
tar xf mysql-5.6.51.tar.gz
cd mysql-5.6.51cmake . -DCMAKE_INSTALL_PREFIX=/apps/mysql -DMYSQL_DATADIR=/data/mysql/ -DSYSCONFDIR=/etc/ -DMYSQL_USER=mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITHOUT_MROONGA_STORAGE_ENGINE=1 -DWITH_DEBUG=0 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DENABLED_LOCAL_INFILE=1 -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_cimake -j 2 && make install#配置环境变量
echo 'PATH=/apps/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh#初始化
cd /apps/mysql/
./scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql#生成配置文件
cp -b /apps/mysql/support-files/my-default.cnf /etc/my.cnf#生成服务脚本
cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld#加开机启动项
chkconfig --add mysqld#启动服务
service mysqld start
MySQL 多实例
拿 MySQL 数据库来说明,就是在一台服务器上运行多个 MySQL 服务端进程,每个进程监听一个端口 (3306,3307,3308),维护一套属于其自己的配置和数据,客户端使用不同的端口来连接具体服端 进程,从而实现对不同的实例的操作
多实例的优点
-
节约硬件资源:在某些场景下(比如说测试,调研,新旧业务并存等),需要配置不同的 MySQL 数据库版本,而又没有足够多的服务器资源,则可以选择在一台服务器上用不同的版本实现多开来 满足需求
-
便于对比:在一个完全相同的硬件环境中,运行不同的 MySQL 版本,使用相同的参数进行测试, 调研时,可以最大程度的减少外部环境因素的影响,便于得出更准确的结论
-
便于管理:在一台服务器上运行多个实例,同理,只需要在这一台服务器上配置安全规则,就可以完成对多个实例的访问授权,而且对于数据库的备份,停启等工作,也只需要在这一台服务器上完成
多实例的缺点
-
资源抢占:一台服务器上运行多个服务实例,资源总量恒定,一个实例占用的资源无法被另一个实 例所使用,在这种情况下,服务性能会受到影响,无法体现 MySQL 服务的实际性能
-
存在单点风险:一台服务器上部署多个服务实例,如果该服务器当机,则这多个服务实例都会受影响
MySQL 组成和常用工具
MySQL 主要组成
mysql 基于 C/S 模式提供服务,主要有客户端程序和服务端程序组成,另外还有一些管理工具
服务端主要组成 客户端主要组成
程序 | 功能 |
---|---|
mysqld_safe | 安全启动脚本 |
mysqld | 服务端程序,是mysql服务的核心程序 |
mysqld_multi | 多实例工具 |
客户端主要组成
程序 | 功能 |
---|---|
mysql | 基于mysql 协议的交互式 CLI 工具 |
mysqldump | 备份工具 |
mysqladmin | 服务端管理工具 |
mysqlimport | 数据导入工具 |
MyISAM存储引擎的管理工具
程序 | 功能 |
---|---|
myisamchk | 检查MyISAM库 |
myisampack | 打包MyISAM表,只读 |
MySQL 客户端使用
MySQL 服务基于 C/S 架构,用户主要使用客户端工具来与远程服务端进行连接,从而与 MySQL 服务进 行交互
MySQL 客户端常用选项
mysql [OPTIONS] [database]#常用选项
-V|--version #显示客户端版本
-u|--user=name #指定远程连接用户名
-p|--password[=name] #指定密码, 默认为空
-h|--host=host #指定服务端主机
-P|--port=port #指定端口,默认3306
-S|--socket=name #指定连接时使用的socket文件,该文件在服务端启动后生成
-D|--database=db #指定数据库
-H|--html #以html格式输出
-X|--xml #以xml格式输出
-t|--table #以table格式输出,默认项
-E|--vertical #垂直显示执行结果
-v|--verbose #显示详细信息,配合 -t 选项
-C|--compress #启用压缩
-G|--named-commands #启用长命令
-e|--execute=sql #执行完就退出,非交互式运行
--prompt=name #修改命令提示符
--line-numbers #输出行号
--print-defaults #打印参数列表,放在最前面
--connect-timeout=N #连接超时时长,单位S
--max-allowed-packet=N #一次查交互发送或反回数据的大小,默认16MB,最大值为1GB,最小值为4096字节
MySQL 客户端常用命令
MariaDB [(none)]> CMD#常用命令
?|\? #显示帮助
help|\h #显示帮助
clear|\c #清屏,直接使用无法生效,要配合 system 命令使用
exit|\q #退出客户端
quit|\q #退出客户端
status|\s #显示当前状态
use|\u #切换数据库
system|\! #调用系统命令
prompt|\R #修改提示符
source|\. #执行SQL脚本文件
connect|\r #客户端重新连接,使用之前的参数
tee|\T #设置文件名,将输出结果同时保存一份到指定文件
notee|\t #不保存输出结果至文件
delimiter|\d #自定义SQL语句分隔符
go|\g #将语句送到服务端执行
ego|\G #将语句送到服务端执行,垂直显示
print|\p #输出语句,但不执行
warnings|\W #总是输出告警信息
nowarning|\w #不输出告警信息
charset|\C #设置编码
edit|\e #先编辑SQL语句,再执行mysql> \s
--------------
mysql Ver 8.0.39-0ubuntu0.24.04.2 for Linux on x86_64 ((Ubuntu))Connection id: 8 #连接ID
Current database: #当前使用的数据库
Current user: root@localhost #连接时的用户名
SSL: Not in use #是否使用ssl
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.39-0ubuntu0.24.04.2 (Ubuntu)
Protocol version: 10 #协议版本
Connection: Localhost via UNIX socket
Server characterset: utf8mb4 #服务器编码
Db characterset: utf8mb4 #数据库编码
Client characterset: utf8mb4 #客户端编码
Conn. characterset: utf8mb4
UNIX socket: /var/run/mysqld/mysqld.sock #连接使用的socket 文件
Binary data as: Hexadecimal
Uptime: 7 hours 3 min 21 sec #服务器运行时长Threads: 2 Questions: 5 Slow queries: 0 Opens: 119 Flush tables: 3 Open tables: 38 Queries per second avg: 0.000#性能相关内容
在配置文件中修改提示符
vim /etc/my.cnf.d/client.cnf[client]
prompt=(\\u@\\h) [\\d]>\\#提示符中可用的变量
\C #计数器
\D #年月日时分秒
\d #当前使用的数据库
\h #服务器主机名
\l #命令分隔符,默认;
\m #当前时间,分钟
\n #换行
\O #月份,以英文显示
\o #月份,数字显示
\P #pm/am
\R #小时,24小时制
\r #小时,12小时制
\S #分号
\s #秒,数字显示
\t #tab键
\U #客户端用户名和主机
\u #客户端用户名
\v #服务端版本
\w #星期几,英文显示
\Y #年份,四位,数字显示
\y #年份,两位,数字显示
执行sql脚本
\. /root/test.sqlsource /root/test.sql
mysqladmin 工具
mysqladmin 也是用于管理 mysql 服务的本地工具
mysqladmin [OPTIONS] command command...#常用选项
-?|--help #显示帮助信息
-V|--version #显示客户端版本
-f|--force #删库时不确认
-C|--compress #启用压缩
-h|--host=name #指定服务器地址
-u|--user=name #指定用户名
-p|--password[=name] #指定连接服务器的密码
-P|--port=N #指定连接端口,默认3306
-l|--local #在本地执行,语句不写入binlog
-b|--no-beep #执行出错时不发出告警音
-s|--silent #如果无法连接,则静默退出
-c|--count=N #总共执行多少次,配合-i选项使用
-i|--sleep=N #持续执行命令,间隔N秒执行一次
-S|--socket=name #指定连接时使用的socket文件
-w|--wait[=#] #如果连接失败,是否等待重试,如果指定了具体数字,则表示重试几次
--plugin-dir=name #客户端查件目录
--print-defaults #显示运行参数,
--defaults-file=path #从指定文件中读取选项
--connect-timeout=N #指定连接超时时长
--shutdown-timeout=N #指定关机超时时长
--protocol=name #指定连接方式 (tcp|socket|pipe|memory)
--ssl #使用ssl安全功能#命令
create databasename #创建新的数据库
debug #开启调试模式,将调试信息写入log
drop databasename #删除指定数据库
extended-status #显示扩展状态
flush-all-statistics #刷新所有统计表
flush-all-status #刷新状态和统计信息
flush-client-statistics #刷新客户端统计信息
flush-hosts #刷新所有缓存的主机
flush-index-statistics #刷新索引统计信息
flush-logs #刷新所有日志
flush-privileges #刷新访问权限
flush-binary-log #刷新二进制日志
flush-engine-log #刷新引擎日志
flush-error-log #刷新错误日志,开一个新日志文件
flush-general-log #刷新执行日志
flush-relay-log #刷新中继日志
flush-slow-log #刷新慢查询日志
flush-status #清除状态变量
flush-table-statistics #清除表统计信息
flush-tables #刷新所有表,会强制关闭己打开的表
flush-threads #刷新线程缓存
flush-user-statistics #刷新用户统计信息
flush-user-resources #刷新用户资源
kill id,id,... #关闭指定的线程
password [new-password] #修改密码
old-password [new-password] #修改密码时指定旧密码
ping #心跳检测
processlist #显示活动线程列表
reload #刷新授权信息
refresh #刷新所有数据表,重新打开日志文件
shutdown #关闭服务
status #简短显示服务端状态
start-slave #开启主从同步
stop-slave #停止主从同步
variables #显示服务端所有变量
version #显示客户端和服务端版本
mycli 工具
MyCLI 是基于 Python 开发的 MySQL 的命令行工具,具有自动完成和语法突出显示功能
yum install python38#使用国内源
pip3.8 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip-3.8 install myclimycli -u用户名 -p密码
相关文章:
MySQL 安装和基本使用
MySQL 介绍 MySQL 的特性 MySQL 是基于开源协议发布的,可以免费使用,也可以基于源码进行二次开发。 MySQL 使用标准 SQL 语言进行管理。 MySQL 可以运行于多个系统上,具有跨平台特性,并且支持多种语言。 MySQL 使用插件式存储…...

RequestBody接收参数报错com.fasterxml.jackson.databind.exc.MismatchedInputException
目录: 1、错误现象2、解决办法3、最终验证 1、错误现象 报错的现象和代码如下: 2、解决办法 查了很多都说参数类型对不上,最后只有换接收方式后验证是可以的;最终想了一下,觉得是请求的是json,需要用json接…...
大数据治理的关键技术:构建稳固的数据基石
在这个信息爆炸的时代,数据已经成为企业最宝贵的资产之一。然而,随着数据量的爆炸性增长,如何有效治理这些数据成为了一个巨大的挑战。今天,我们就来聊聊大数据治理的关键技术,看看如何构建一个稳固的数据基石…...

OS管理和进程的学习
1.冯诺依曼体系结构 1.1 输入设备:键盘,鼠标,键盘,网卡(网络接受),磁盘... 输出设备:显示器,磁盘,网卡(网络发送) .... 存储器&…...

Linux 部署 Harbor 镜像仓库详解
文章目录 安装 Docker安装 Harbor访问 Harbor 安装 Docker 本次部署流程使用的是1台阿里云ECS,Ubuntu 22.04,2核4G。 首先需要做的是在当前服务器上,安装好 Docker,参考链接如下: https://blog.csdn.net/weixin_4659…...

怎么把flv格式转换成mp4?将flv格式换成MP4格式的简单方法
怎么把flv格式转换成mp4?flv这一昔日网络视频领域的璀璨明星,凭借其小巧的文件体积与卓越的流媒体传输性能,曾在网络视频时代初期大放异彩,成为无数网络视频爱好者的首选。然而,随着科技的日新月异与多媒体设备的多元化…...

原型模式和建造模式的区别
原型模式(Prototype Pattern)和建造者模式(Builder Pattern)虽然都是创建型设计模式,但它们的应用场景和实现方式有着显著的区别。以下是二者的详细对比: 1. 意图和应用场景 原型模式: 意图&a…...
最新 client-java 调用 k8s ApiServer
创建权限绑定 sa-role.yaml apiVersion: v1 kind: ServiceAccount metadata:name: my-admin #账号名namespace: kube-system--- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata:annotations:rbac.authorization.kubernetes.io/autoupdate: "true…...
TCP单包数据大于1460字节会被拆包的问题
关于TCP单包数据大于1460字节会被拆包的问题 1、问题背景: 最近在用STM32W5500做项目,需要STM32通过TCP协议发送数据到上位机并显示。当数据量小的时候上位机显示正常,一旦数据量大过大上位机就会出现数据丢失的情况,甚至数据直接…...
苏宁关键字搜索接口技术解析与实战
在当今的电商领域,搜索功能无疑是用户寻找心仪商品的最重要途径之一。苏宁作为国内知名的电商平台,其提供的API接口服务为开发者提供了丰富的商品数据。本文将详细介绍如何使用苏宁的关键字搜索接口,通过编写代码实现商品搜索功能。 接口概述…...
Java学习教程,从入门到精通,Java 基本数据类型详解(5)
Java 基本数据类型详解 Java是一种强类型语言,这意味着在Java程序中,每个变量都必须明确声明其数据类型。Java提供了八种基本数据类型(Primitive Data Types),这些类型都是预先定义好的,并且每种类型都占用…...

使用Flask实现本机的模型部署
前言 模型部署是指将大模型运行在专属的计算资源上,使模型在独立的运行环境中高效、可靠地运行,并为业务应用提供推理服务。其目标是将机器学习模型应用于实际业务中,使最终用户或系统能够利用模型的输出,从而发挥其作用。 一、设…...

基于SSM的校园跑腿网站的设计与实现
文未可获取一份本项目的java源码和数据库参考。 课题来源及研究的目的和意义 随着网络技术的不断完善与发展,各种互联网公司不断如雨后春笋般不断涌现,丰富了人们生活的各个方面。近年来由于 Online To 0ffline即线上到线下(020)模式的发展和兴起&…...

【Java】正则表达式详解
目录 引言 一、基本概念 1.1 元字符 1.2 预定义字符类 1.3 边界匹配符 1.4 数量标识符 1.5 捕获与非捕获分组 二、Java中的正则表达式支持 三、正则表达式的使用示例 3.1 匹配字符串 3.2 替换字符串 3.3 分割字符串 3.4 使用Pattern和Matcher 3.5 捕获组和后向…...

Java知识巩固(七)
目录 面向对象 面向对象三大特征 封装 继承 多态 多态 深拷贝和浅拷贝区别了解吗?什么是引用拷贝? 浅拷贝 深拷贝 面向对象 万物皆为对象,也就是描述某个事物解决问题的过程中所发生的事情。 面向对象三大特征 封装 封装是指把一个对象的状态信息&…...
Ubuntu22.04 更换源
Ubuntu22.04 更换网易163源 1、编辑/etc/apt/sources.list文件 1 sudo nano /etc/apt/sources.list 2、清空文件内容,拷贝下列163源到文本。 1 2 3 4 5 6 7 8 deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse deb http://mirro…...

江恩理论和波浪理论的结合
结合波浪理论和江恩理论需要综合考虑市场波动的形态以及时间和价格的关系。这两者都是技术分析中的重要工具,能够帮助投资者更好地理解市场的趋势和未来的走势。 波浪理论(Elliott Wave Theory) 波浪理论是由Ralph Nelson Elliott提出的&…...

AJAX——AJAX 取消请求
利用 abort()方法取消请求 本文分享到此结束,欢迎大家评论区相互讨论学习,下一篇继续分享AJAX中请求重复发送问题的学习。...

ruoyi域名跳转缓存冲突问题(解决办法修改:session名修改session的JSESSIONID名称)
【版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任】【创作不易,点个赞就是对我最大的支持】 前言 仅作为学习笔记,供大家参考 总结的不错的话,记得点赞收藏关注哦! 目录 前…...

嵌入式QT中基本工程模板分析
大家好,今天主要来分享一下,如何分析一下QT的工程代码文件。 第一:QT工程分析...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

密码学基础——SM4算法
博客主页:christine-rr-CSDN博客 专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 编辑…...

CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...
LangChain【6】之输出解析器:结构化LLM响应的关键工具
文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器?1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...

深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学
一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件,其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时,价带电子受激发跃迁至导带,形成电子-空穴对,导致材料电导率显著提升。…...