1 数据库原理
1.1 数据得分类
- 结构化数据:即有固定格式和有限长度得数据。例如填得表格就是结构化数据,国籍:中华人民共和国,民族:汉,性别:男,这都叫结构化数据
- 非结构化得数据:非结构化得数据越来越多,就是不定长、无固定格式得数据,例如:网页,图片文件,有时候非常大,有时候很小;例如语音,视频都是非结构化得数据
- 半结构化数据:比如:XML或者HTML得格式的数据
1.2 数据库的发展史
数据库与芯片,操作系统并列为计算机技术的三大件,也是企业IT系统必不可少的核心技术
1.2.1 数据库系统发展阶段
-
萌芽阶段:文件系统
使用磁盘文件来存储数据
-
初级阶段:第一代数据库
出现了网状模型、层次模型的数据库
-
中级阶段:第二代数据库
关系型数据库和结构化查询语言
-
高级阶段:新一代数据库
"关系-对象"型数据库
1.2.2 文件管理系统的确定
- 编写应用程序不方便
- 不支持对文件的并发访问
- 无安全控制功能
- 难以按用户视图表示数据
- 数据间联系弱
- 数据冗余不可避免
- 应用程序依赖性
1.3 数据库管理系统
1.3.1 相关概念
- Database:数据库是数据的汇集,它以一定的组织形式存于存储介质上
- DBMS:Database Management System,是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心
- DBA:Database Administrator,负责数据库的规划、设计、协调、维护和管理等工作
- Application:应用程序,指以数据库为基础的应用程序
1.3.2 数据库管理系统的优点
- 程序与数据相互独立
- 保证数据的安全、可靠
- 最大限度地保证数据地正确性
- 数据可以并发使用并能同时保证一致性
- 相互关联地数据地集合
- 较少地数据冗余
1.3.3 数据库管理系统地基本功能
- 数据定义
- 数据处理
- 数据安全
- 数据备份
1.3.4 各种数据库管理系统
1.3.4.1 层次数据库

分层结构由IBM在20世纪60年代开发,并在早期大型机DBMS中使用。记录的关系形成了一个树状模型。这种结构简单,但缺乏灵活性,因为这种关系仅限于一对多关系。
代表数据库:IBM IMS(信息管理系统)
1.3.4.2 网状数据库

1964年通用电气GE公司的Charles Bachman成功开发出世界上第一个网状数据库IDS(集成数据存储),IDS具有数据模式和日志的特征,只能在GE主机运行。
1.3.4.3 关系型数据库RDBMS
Relational Database Management System,关系模型最初由IBM公司的英国计算机科学家。。。
1.3.4.3.1 关系型数据库相关概念
属性就是字段、列
- 关系Relational:关系就是二维表,其中:表中的行、列次序不重要
- 行row:表中的每一行,又称为一条记录record
- 列column:表中的每一列,称为属性,字段,域field
- 主键Primary key:PK,一个或多个字段的组合,用于唯一确定一个记录的字段,一张表只有一个主键,主主键字段不能为空NULL
- 唯一键Unique key:一个或多个字段的组合,用于唯一确定一个记录的字段,一张表可以有多个UK,而且UK字段可以为NULL
- 域domain:属性的取值范围,如,性别只能是'男'和'女'两个值,人类的年龄只能是0-150
1.3.4.3.2 常用关系数据库
- Mysql mariadb
- PostgreSQL
1.4 关系型数据库理论
1.4.1 实体-联系模型E-R
E-R模型即实体-关系模型,E-R模型就是描述数据库存储数据的结构模型
对于大型公司开发项目,需要根据产品经理的设计,先使用建模工具来画出实体-关系模型(E-R模型)
- 实体Entity:客观存在并可以相互区分的客观事物或抽象事件称为实体即表,在E-R图中用矩形表示实体,把实体名写在框内
- 属性Attribute:实体所具有的特征或性质,描述实体里面的单个信息,使用椭圆形表示
- 联系Relationship:描述了实体的属性之间的关联规则
- 实体内部的联系:指组成同一个实体内的各属性之间的联系。如职工实体中,职工号和部门经理号之间有一种关联关系
- 实体之间的联系:指不同实体之间的属性的联系。例:学生选课实体和学生基本信息实体之间
- 实体之间的联系用菱形表示
E-R模式范例:

1.4.2 联系类型
- 一对一联系(1:1):在表A或表B中创建一个字段,存储另一个表的主键值 如:一个人只有一个身份证
- 一对多联系(1:n):外键,如:部门和员工
- 多对多联系(m:n):增加第三张表,如:学生和课程
1.4.3 数据的操作
CURD(create,update,read,delete)
1.4.4 数据库的正规化分析
数据库规范化,又称数据库或资料库的正规化、标准化,是数据库设计中的一系列原理和技术,以减少数据库中数据冗余,增加数据的一致性。关系模型的发明者提出这一概念,并于1970年定义了第一范式、第二范式、第三范式概念。
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,不同的规范要求被称为不同范式,各种范式呈递次规范,越高的范式数据库冗余越少
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般数据库只需要满足第三范式(3NF)即可。
1.4.4.1 第一范式:1NF(每一列不可区分)
无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,确保每一列的原子性。除去同类型的字段,就是无重复的列。
说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库
1.4.4.2 第二范式:2NF(非主键要完全依赖主键)
第二范式必须先满足第一范式,属性完全依赖于主键,要求表中的每个行必须可以被唯一地区分,通常为表加上每行地唯一标识主键PK,非PK地字段需要与整个PK有直接相关性,即非PK地字段不能依赖于部分主键
1.4.4.3 第三范式:3NF
满足第三范式必须先满足第二范式属性,非主键属性不依赖于其它非主键属性。第三范式要求一个数据表中不包含已在其它表中已包含地非主关键字信息,非PK地字段间不能有从属关系。
1.4.5 SQL结构化查询语言简介
SQL:Structure Query Language,结构化查询语言是1974年由Boyce和Chamberlin提出的一个通用的、功能极强的关系型数据库语言
SQL解释器:讲SQL语句接解释成机器语言
数据存储协议:应用层协议,C/S
- S:server,监听于套接字,接收并处理客户端的应用请求
- C:Client
客户端程序接口
- CLI
- GUI
应用程序接口
- ODBC:Open Database Connectivity
- JDBC:Java Data Base Connectivity
2 MySQL安装和基本使用
2.1 MySQL介绍
略
2.1.1MySQL的特性
- 开源免费
- 插件式存储引擎:也称为"表类型",存储管理器有多种实现版本,功能和特性可能略有差别;用户根据需要灵活选择,Mysql5.5.5开始innoDB引擎是MySQL默认引擎
bash
MyISAM ==> Aria
InnoDB ==> XtraDB
- 单进程,多线程
- 诸多扩展和新特性
- 提供了较多测试组件
2.2 MySQL安装方式介绍和快速安装
2.2.1 安装方式介绍
- 程序包管理器管理的程序包
- 源代码编译安装
- 二进制包格式的程序包:展开至特定路径,并经过简单配置后即可使用
2.3 MySQL组成和常用工具
2.3.1 客户端程序
- mysql:基于mysql协议交互式或非交互式的CLI工具
- mysqldump:备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中
- mysqladmin:基于mysql协议管理mysqld
- mysqlimport:数据导入工具
MyISAM存储引擎的管理工具:
- myisamchk:检查MyISAM库
- myisampack:打包MyISAM表,只读
2.3.2 服务器端程序
- mysqld_safe
- mysqld
- mysqld_multi
2.3.3 用户账号
mysql用户账号由两部分组成:
bash
'username'@'HOST'
wang@'10.0.0.100'
wang@'10.0.0.%'
wang@'%'
说明:
HOST限制此用户可通过哪些远程主机连接mysql服务器
支持使用通配符:
bash
% 匹配任意长度的任意字符,相当于shell中*,示例:172.16.0.0/255.255.0.0 或172.16.%.% _ 匹配任意单个字符
2.3.4 mysql客户端命令
2.3.4.1 mysql运行命令类型
- 客户端命令:本地执行,每个命令都完整形式或简写格式
范例:查看版本
bash
mysql -v
范例:
bash
\h,help
\u,use
\s,status
\!,system
-
服务端命令:通过mysql协议发往服务器执行并取回结果,命令末尾都必须使用命令结束符号,默认为分号
#示例:
mysql>select version();
2.3.4.2 mysql使用模式
- 交互模式
- 脚本模式
bash
mysql -uUSERNAME -pPASSWORD < /path/somefile.sql
cat /path/somefile.sql |mysql -uUSERNAME -pPASSWORD
mysql>source /path/form/somefile.sql
mysql客户端常用选项:
-A, --no-auto-rehash 禁止补全
-u, --user= 用户名,默认为root
-h, --host= 服务器主机,默认为localhost
-p, --password= 用户主机,默认为localhost
-S, --socket= 指定连接socket文件路径
-D, --database= 指定默认数据库
-C, --compress 启用压缩
-e "SQL" 执行SQL命令
-V, --version 显示版本
-v --verbose 显示详细信息
--print-defaults 获取程序默认使用的配置
2.3.5 服务器端配置
2.3.5.1 服务器端配置文件
服务器端(mysqld):工作特性有多种配置方式
1、命令行选项:
2、配置文件:类ini格式,集中式的配置,能够为mysql的各应用程序提供配置信息
服务器端配置文件:
/etc/my.cnf #Global选项
/etc/mysql/my.cnf #Global选项
~/.my.cnf #User-specific选项
配置文件格式:
bash
[mysqld]
[mysqld_safe]
[mysqld_multi]
[mysql]
[mysqladmin]
[mysqldump]
[server]
[client]
说明:
_和-相同
1. ON,TRUE 意义相同,0,OFF,FLASE意义相同,无区分大小写
2.3.5.2 socket连接说明
服务器监听的两种socket地址:
- ip socket:监听在tcp的3306端口,支持远程通信,侦听3306/tcp端口可以绑定有一个或全部接口IP商
- unix sock:监听在sock文件上,仅支持本机通信,如:/var/lib/mysql/mysql.sock
说明:host为localhost时自动使用unix sock
2.3.5.3 关闭mysqld网络连接
只侦听本地客户端,所有客户端和服务器的交互都通过一个socket文件实现,socket的配置存放在/var/lib/mysql/mysql.sock)可在/etc/my.cnf修改
范例:
vim /etc/my.cnf
[mysqld]
skip-networking=1
bind-address=127.0.0.1
2.5 通用二进制格式安装MySQL
2.5.1 实战案例:通用二进制格式安装MySQL5.6
2.5.1.1 准备用户
bash
groupadd -r -g 306 mysql
useradd -r -g 306 -u 306 -d /data/mysql mysql
2.5.1.2 准备数据目录,建议使用逻辑卷
bash
#可选做,后面的脚本mysql_install_db可自动生成此目录
mkdir -p /data/mysql
chown mysql:mysql /data/mysql
2.5.1.3 准备二进制程序
bash
tar xf mysql-VERSION-linux-x86_64.tar.gz -C /usr/local
cd /usr/local
ln -sv mysql-VERSION mysql
chown -R root:root /usr/local/mysql
2.5.1.4 准备配置文件
bash
cd /usr/local/mysql
cp -b support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf
#mysql语句块中添加以下三个选项
[mysqld]
datadir = /data/mysql
innodb_file_per_table = on #在mariadb5.5以上版的是默认值,可不加
skip_name_resolve = on #禁止主机名解析,建议使用
2.5.1.5 创建数据库文件
cd /usr/local/mysql
./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
2.5.1.6 在线安装mysql
#!/bin/bash
#
#********************************************************************
#Author: 高帆
#QQ: 29308620
#Date: 2022-05-05
#FileName: install_mysql.sh
#URL:
#Description: The test script
#Copyright (C): 2022 All rights reserved
#********************************************************************
#MySQL5.7 Download URL: https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
#http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
#MySQL8.0 Download URL: https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
#http://mirrors.163.com/mysql/Downloads/MySQL-8.0/mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz
. /etc/init.d/functions
SRC_DIR=`pwd`
#MYSQL='mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz'
MYSQL='mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz'
COLOR='echo -e \E[01;31m'
END='\E[0m'
MYSQL_ROOT_PASSWORD=magedu
check (){
if [ $UID -ne 0 ]; then
action "当前用户不是root,安装失败" false
exit 1
fi
cd $SRC_DIR
if [ ! -e $MYSQL ];then
$COLOR"缺少${MYSQL}文件"$END
$COLOR"请将相关软件放在${SRC_DIR}目录下"$END
exit
elif [ -e /usr/local/mysql ];then
action "数据库已存在,安装失败" false
exit
else
return
fi
}
install_mysql(){
$COLOR"开始安装MySQL数据库..."$END
yum -y -q install libaio numactl-libs ncurses-compat-libs
cd $SRC_DIR
tar xf $MYSQL -C /usr/local/
MYSQL_DIR=`echo $MYSQL| sed -nr 's/^(.*[0-9]).*/\1/p'`
ln -s /usr/local/$MYSQL_DIR /usr/local/mysql
chown -R root.root /usr/local/mysql/
id mysql &> /dev/null || { useradd -s /sbin/nologin -r mysql ; action "创建mysql用户"; }
echo 'PATH=/usr/local/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
ln -s /usr/local/mysql/bin/* /usr/bin/
cat > /etc/my.cnf <<-EOF
[mysqld]
server-id=1
log-bin
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
EOF
[ -d /data ] || mkdir /data
mysqld --initialize --user=mysql --datadir=/data/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
service mysqld start
[ $? -ne 0 ] && { $COLOR"数据库启动失败,退出!"$END;exit; }
sleep 3
MYSQL_OLDPASSWORD=`awk '/A temporary password/{print $NF}' /data/mysql/mysql.log`
mysqladmin -uroot -p$MYSQL_OLDPASSWORD password $MYSQL_ROOT_PASSWORD &>/dev/null
action "数据库安装完成"
}
check
install_mysql
2.6 源码编译安装MySQL
建议:内存6G以上,否则可能会编译出错,CPU核数越多越好
说明:本操作过程适用于以下版本
bash
mysql-5.6.51.tar.gz
mariadb-10.2.18.tar.gz
centos 7
2.6.1 安装相关依赖包
bash
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
2.6.2 做准备用户和数据目录
bash
useradd -r -s /sbin/nologin -d /data/mysql mysql
2.6.3 准备数据库目录
bash
mkdir /data/mysql
chown mysql.mysql /data/mysql
2.6.4 源码编译安装
编译安装说明
利用cmake编译,而利用传统方法,cmake的重要特性之一是其独立于源码的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译
编译选项:
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
2.6.4.1 下载并解压缩源码包
bash
tar xvf mysql-5.6.51.tar.gz -C /usr/local/src
#mariadb-10.2.18.tar.gz
2.6.4.2 源码编译安装MySQL
bash
cd mysql-5.6.51
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STOREATE_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_ci
make -j 8 && make install
提示:如果 出错,执行rm -rf CMakeCache.txt
2.6.5 准备环境变量
bash
echo 'PATH=/apps/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
2.6.6 生成的数据库文件
bash
cd /apps/mysql
scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql
2.6.7 准备配置文件
bash
cp -b /apps/mysql/support-files/my-default.cnf /etc/my.cnf
#针对旧版本或mariadb-10.2.18.tar.gz
cp /apps/mysql/support-files/my-huge.cnf /etc/my.cnf
2.6.8 准备启动脚本,并启动服务
bash
cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
2.6.9 安全初始化
bash
mysql_secure_installtion
2.7 基于docker容器创建MySQL
范例:
docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.30
2.8 MySQL多实例
2.8.1 多实例介绍和方案
2.8.1.1多实例介绍
-
什么是数据库多实例
多实例类似微信双开,端口号类比微信账号,数据库类比聊天窗口,表类比聊天记录
MySQL多实例就是在一台服务器上同时开启多个不同的服务端口(如:3306、3307等),同时运行多个MySQL服务进程,这些服务进程通过不通的Socket监听不同的服务端口来提供服务。
多实例可能是MySQL的不同版本,也可能是MySQL的同意版本实现
-
多实例的好处
可有效利用服务器资源。当单个服务器资源有剩余时,可以充分利用剩余资格提供更多的服务,且可以实现资源的逻辑隔离节约服务器资源。例如公司服务器资源紧张,但是数据库又需要各自尽量独立的提供服务,并且还需要到主从复制等技术,多实例就是最佳选择。
-
多实例弊端
存在资源互相抢占的问题。比如:当某个数据库并发很高或者SQL查询慢时,整个实例会消耗大量的CPU、磁盘I/O等资源,导致服务器上面其他的数据库实例在提供服务的质量也会下降,所以具体的需求要根据自己的实际情况而定。
2.8.1.2 MySQL多实例常见的配置方案
-
单一的配置文件、单一启动程序多实例部署方式
MySQL官方文档提到的单一配置文件、单一启动程序多实例部署方式
耦合度太高,一个配置文件不好管理。不是很推荐。
-
多配置文件、多启动程序部署方式
多配置文件、多启动程序部署方式是针对每个实例都有独立的配置文件和目录,管理灵活,此方案耦合度较低
工作开发和运维统一原则:降低耦合度。所以建议此方式
2.8.2 实战案例:CentOS 8实现mariadb的yum安装多实例
2.8.2.1 实战目的
bash
CentOS 8 yum安装mariadb-10.3.17 并实现三个实例
2.8.2.2 环境要求
一台CentOS 8.X主机
2.8.2.3 前提准备
关闭SElinux
关闭防火墙
时间同步
2.8.2.4 实现步骤
2.8.2.4.1 安装mariadb
yum install -y mariadb-server
2.8.2.4.2 准备三个实例的目录
bash
[root@cf8abdf916a9 /]# mkdir -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}
chown -R mysql.mysql /mysql
[root@cf8abdf916a9 /]# tree -d /mysql/
/mysql/
|-- 3306
| |-- bin
| |-- data
| |-- etc
| |-- log
| |-- pid
| `-- socket
|-- 3307
| |-- bin
| |-- data
| |-- etc
| |-- log
| |-- pid
| `-- socket
`-- 3308
|-- bin
|-- data
|-- etc
|-- log
|-- pid
`-- socket
21 directories
2.8.3.4.3 生产数据库文件
bash
[root@cf8abdf916a9 /]# mysql_install_db --user=mysql --datadir=/mysql/3306/data
[root@cf8abdf916a9 /]# mysql_install_db --user=mysql --datadir=/mysql/3307/data
[root@cf8abdf916a9 /]# mysql_install_db --user=mysql --datadir=/mysql/3308/data
2.8.2.4.4 准备配置文件
bash
vim /mysql/3306/etc/my.cnf
[mysqld]
port=3306
datadir=/mysql/3306/data
socket=/mysql/3306/socket/mysql.sock
log-error=/mysql/3306/log/mysql.log
pid-file=/mysql/3306/pid/mysql.pid
#重复上面步骤设置3307,3308
[root@cf8abdf916a9 etc]# sed 's/3306/3307/' /mysql/3306/etc/my.cnf > /mysql/3307/etc/my.cnf
[root@cf8abdf916a9 etc]# sed 's/3306/3307/' /mysql/3308/etc/my.cnf > /mysql/3308/etc/my.cnf
2.8.2.4.5 准备启动脚本
[root@centos8 ~]#vim /mysql/3306/bin/mysqld
#!/bin/bash
port=3306
mysql_user="root"
mysql_pwd="magedu"
cmd_path="/usr/bin"
mysql_basedir="/mysql"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"
function_start_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
${cmd_path}/mysqld_safe --defaultsfile=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
else
printf "MySQL is running...\n"
exit
fi
}
function_stop_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit
else
printf "Stoping MySQL...\n"
${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock}
shutdown
fi
2.8.2.4.6 启动服务
2.8.2.4.7 登录实例
}
function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2
function_start_mysql
}
case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac
[root@centos8 ~]#chmod +x /mysql/3306/bin/mysqld
#重复上述过程,分别建立3307,3308的启动脚本
rintf "MySQL is running...\n"
exit
fi
}
function_stop_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit
else
printf "Stoping MySQL...\n"
{cmd_path}/mysqladmin -u mysqluser−p{mysql_user} -pmysqluser−p{mysql_pwd} -S {mysql_sock}
shutdown
fi
2.8.2.4.6 启动服务
2.8.2.4.7 登录实例
}
function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2
function_start_mysql
}
case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: mysqlbasedir/{mysql_basedir}/mysqlbasedir/{port}/bin/mysqld {start|stop|restart}\n"
esac
root@centos8 \~\]#chmod +x /mysql/3306/bin/mysqld #重复上述过程,分别建立3307,3308的启动脚本 ``` ```