1.数据库服务基础管理操作
1)数据库服务连接管理
bash
复制代码
MySQL数据库服务应用架构:C/S
利用C/S架构管理数据库服务端时会有两种方式:
1.采用本地方式连接管理
mysql -uxxx -pxxx -S 套接字文件(/tmp/mysql.sock--数据库服务端启动时自动生成 关闭后自动删除)
2.采用远程方式连接管理
mysql -uxxx -pxxx -h地址/域名 -P端口号
附加内容
1./tmp/mysql.sock文件只在数据库服务端启动时,将自动生成,关闭后自动删除
[root@mysql2 ~]#/etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!
[root@mysql2 ~]#ll /tmp/mysql.sock
ls: 无法访问/tmp/mysql.sock: 没有那个文件或目录
[root@mysql2 ~]#/etc/init.d/mysqld start
Starting MySQL... SUCCESS!
[root@mysql2 ~]#ll /tmp/mysql.sock
srwxrwxrwx 1 mysql mysql 0 2月 27 08:48 /tmp/mysql.sock
2.socket文件在配置文件中已定义
[root@mysql2 ~]#cat /etc/my.cnf
[mysqld]
port=3306
user=mysql
datadir=/data/3306/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock⭐
或者在进程中也能筛选出来
[root@mysql2 ~]#ps aux |grep mysql
......
--socket=/tmp/mysql.sock⭐
......
企业应用数据库连接管理时可以采用什么方法:
方法一:利用数据库自带客户端命令进行管理
sh
复制代码
mysql -- 登录访问数据库程序
mysqladmin -- 实现多数据库进行管理 (密码管理/运行管理/日志切割管理)
mysqldump -- 实现将数据库数据做备份/数据迁移
方法二:利用第三方工具进行连接管理(有图形界面-方便管理)
sh
复制代码
1.mysql workbench:数据库管理工具(官方-免费)⭐
直接下一步下一步安装即可
使用前要创造一个远程用户,以连接软件与数据库
create user root@'%' identified by '123456';
grant all on *.* to root@'%' with GRANT OPTION;
用户root,可连接范围%,密码123456
并授权所有权限给root
bash
复制代码
2.DBeaver(连接数据库种类多)
3.NAVICAT(界面简洁,使用广泛-默认收费,需要购买激活码,或者破解使用)
方法三:利用连接器实现数据库服务连接管理(了解)
sh
复制代码
需要开发人员进行配合 代码程序 -- 控制连接器 -- 连接数据库
2)数据库服务配置管理
sh
复制代码
方式一:采用默认方式加载配置文件
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
方式二:采用自定义方式加载配置文件
mv /etc/my.cnf /data/oldboy.conf
mysqld --defaults-file=/data/oldboy.conf &
如何规范编写文件信息
bash
复制代码
1.合理设置标签信息
客户端标签:[client][mysql][mysqladmin][mysqldump]
用于定义客户端功能-- 简化客户端命令参数应用
服务端标签:[server][mysqld][mysqld_safe]
用户定义服务端功能
2.合理设置配置项信息
客户端标签下配置项信息符合规范要求:
mysql --help 执行后,输出的配置信息可以在配置文件中编写,没输出的不能编写
服务端标签下配置项信息符合规范要求:
mysqld --help --verbose 执行后,输出的配置信息可以在配置文件中编写,没输出的不能编写
客户端标签下的内容修改后,无需重启服务即可生效
服务端标签下的内容修改后,需要重启服务才能生效❗️
/etc/init.d/mysqld restart
3)数据库服务实例管理
bash
复制代码
什么是数据库服务实例:一个服务程序运行,产生相应进程和线程信息,进程或线程占用内存/CPU/磁盘资源情况,就称为实例
数据库服务在单一系统运行会有多实例(多个不同数据库进程,分别占用系统硬件资源)
多实例应用的目的
1.充分利用系统硬件资源
2.可以拆分/隔离数据库应用 www-实例01 -- 1G bbs-实例02 -- 1G game-实例03 --1G
3.可以便于做业务监控 CPU 内存 磁盘IO 数据变化 ...
单一系统创建多实例,如何实现多实例部署
bash
复制代码
1.多个实例数据库是统一版本环境
2.多个实例数据库是不同版本环境
步骤一:下载不同版本数据库程序包
bash
复制代码
mysql-8.0.36
mysql-5.6.48
mysql-5.7.28
将下载好的程序包放入数据库主机中(目录是/usr/local/)
步骤二:解压并安装程序包
bash
复制代码
mysql-8.0.36------已创建
tar xf mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz
tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.xz
ln -s mysql-8.0.36------已创建
ln -s mysql-5.6.48-linux-glibc2.12-x86_64 mysql56
ln -s mysql-5.7.28-linux-glibc2.12-x86_64 mysql57
步骤三:为每个实例分别创建数据存储目录并做初始化操作
bash
复制代码
mysql-80: /data/3306/data mkdir -p /data/3306/data && chown -R mysql.mysql /data/3306/data
mysql-57: /data/3357/data mkdir -p /data/3357/data && chown -R mysql.mysql /data/3357/data
mysql-56: /data/3356/data mkdir -p /data/3356/data && chown -R mysql.mysql /data/3356/data
rm -f /etc/my.cnf
mysqld --initialize-insecure --user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql (省略,已创建的话)
/usr/local/mysql57/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/3357/data --basedir=/usr/local/mysql57
/usr/local/mysql56/scripts/mysql_install_db --user=mysql --datadir=/data/3356/data --basedir=/usr/local/mysql56
步骤四:编写不同实例配置文件信息
sh
复制代码
cat >/data/3306/my80.cnf<<EOF
[mysqld]
port=3306
user=mysql
datadir=/data/3306/data
basedir=/usr/local/mysql
socket=/tmp/mysql80.sock
EOF
cat >/data/3357/my57.cnf<<EOF
[mysqld]
port=3357
user=mysql
datadir=/data/3357/data
basedir=/usr/local/mysql57
socket=/tmp/mysql57.sock
EOF
cat >/data/3356/my56.cnf<<EOF
[mysqld]
port=3356
user=mysql
datadir=/data/3356/data
basedir=/usr/local/mysql56
socket=/tmp/mysql56.sock
EOF
步骤五:运行启动不同数据库实例程序
bash
复制代码
mysqld --defaults-file=/data/3306/my80.cnf &
/usr/local/mysql/bin/mysqld --defaults-file=/data/3306/my80.cnf &
/usr/local/mysql57/bin/mysqld --defaults-file=/data/3357/my57.cnf &
/usr/local/mysql56/bin/mysqld --defaults-file=/data/3356/my56.cnf &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3306/my80.cnf &
/usr/local/mysql57/bin/mysqld_safe --defaults-file=/data/3306/my80.cnf &
/usr/local/mysql56/bin/mysqld_safe --defaults-file=/data/3306/my80.cnf &
mysql -S /tmp/mysql80.sock www数据库
mysql -S /tmp/mysql57.sock bbs数据库
mysql -S /tmp/mysql56.sock blog数据库
2.数据库服务基础应用操作
1)数据库语句分类
bash
复制代码
数据库语句分类介绍:
1.DDL (Data Definition Language) 数据定义语句
对数据库和数据表进行管理的语句 create,alter,drop,show
2.DML (Data Manipulation Language) 数据操作语句
对数据表中具体数据进行管理数据 insert,update,delete,select
3.DCL (Data Control Language) 数据操控语句
对数据库服务安全有功能做的设置 grant,revoke,create user,alter,user,commit,rollback
4.DQL (Data Query Language) 数据查询语句
对数据库中数据查询的语句信息 select show
2)数据库语句应用实现
①DDL语句应用方法
1.数据库DDL操作语句
sh
复制代码
1.create------------创建数据库####################################################################################
create database 库名;
create schema 库名;
create database oldboy charset utf8 collate utf8_general_mysql500_ci;
2.show------------查看数据库######################################################################################
1).确认数据库是否创建的方法
show databases;
show databases like 'oldboy'; # 查看oldboy数据库
show databases like 'old%'; # 查看以old开头的数据库
2).查看数据库创建的方法(会显示SQL语句)
show create databases 库名;
3.alter------------修改数据库(修改数据库字符集或字符校对规则)(了解即可)###############################################
alter database 库名 CHARACTER SET 字符集名称 COLLATE 校对规则信息;
4.drop------------删除数据库######################################################################################
drop database 库名; # 释放存储资源❗️(谨慎使用)
对于数据库的操作注意事项:
创建的数据库信息最好符合业务需要
删除数据库时需要做操作审核,需要在业务不繁忙时操作
2.数据表DDL操作语句
sh
复制代码
1.create------------创建数据表语句#################################################################################
格式:
create table 表名 (
字段名01 数据类型(必须定义) 约束属性设置(可选),
字段名02 数据类型(必须定义) 约束属性设置(可选),
字段名03 数据类型(必须定义) 约束属性设置(可选),
) 引擎设置 字符集设置 字符校对规则设置 (忽略);
例子:
CREATE TABLE `student` (
`id` int NOT NULL,
`name` char(10) NOT NULL,
`gender` enum('男','女','未知') DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
# 如何获取sql语句的创建表❗️❗️❗️
mysql进入数据库
use 数据库;
show tables; # 展示所有表,选择想要查看的表
show create table 表;
即可获得sql语句的创建表格式
数据类型:保证数据录入合理性,保证有效使用磁盘空间
约束设置:保证数据快速检索,保证单列数据录入合理性
有四种特殊约束:
PK(primary key): 主键约束/主键索引,保证单列数据录入必须非空且唯一
UK(unique key): 唯一约束/唯一索引,保证单列数据录入必须唯一
NN(not null): 非空约束,保证单列数据录入必须非空
FK(foreign key): 外键约束,保证多个数据表数据增删改查操作逻辑顺序
属性设置:进一步保证录入数据的合理性
default 自动信息填充功能,避免空字段填充空值,影响数据查询效率
auto_increment 实现主键列数值信息自增功能
comment 实现库/表/字段注释信息设置
unsigned 控制数值类型必须是正数,不能非负
2.show------------数据表查看##################################################################################
查看确认库中是否存在指定数据表
show tables;
show tables like 'user';
show tables like 'old%';
查看数据表创建的语句信息(可以帮助数据库做数据迁移和数据修复)
show create table student;
可以获取指定表的字段结构------获取表结构
desc student;
例子:
mysql> show databases; # 展示所有数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| oldboy |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.06 sec)
mysql> use oldboy; # 使用oldboy数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables; # 展示所有数据表
+------------------+
| Tables_in_oldboy |
+------------------+
| student |
| ti |
+------------------+
2 rows in set (0.05 sec)
mysql> desc students; # 获取student的表结构
ERROR 1146 (42S02): Table 'oldboy.students' doesn't exist
mysql> desc student;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| name | char(10) | NO | | NULL | |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.05 sec)
3.alter------------数据表做修改##################################################################################
数据表字符集校对规则
ALTER TABLE `oldgirl`.`student` CHARACTER SET = gbk , COLLATE = gbk_chinese_ci ;
数据表名称修改
alter table student rename student_new;
rename table student_new to student;
数据表结构修改
添加新的字段
ALTER TABLE student ADD COLUMN age TINYINT UNSIGNED NOT NULL AFTER `gender`;
ALTER TABLE student ADD COLUMN telnum char(11) NOT NULL first,ADD UNIQUE INDEX `telnum_UNIQUE` (`telnum` ASC) VISIBLE;
删除原有字段
ALTER TABLE student DROP COLUMN `telnum`,DROP INDEX `telnum_UNIQUE`;
ALTER TABLE student DROP COLUMN `age`;
数据表字段名称 或 类型 或 约束属性修改
ALTER TABLE student CHANGE COLUMN `gender` `ssex` CHAR(2) NOT NULL DEFAULT '未知' ;
ALTER TABLE student CHANGE COLUMN `gender` CHAR(2) NOT NULL DEFAULT '未知' ;
4.drop------------数据表删除操作##################################################################################
drop table student;
②DML语句应用方法
sh
复制代码
1.insert------------插入数据信息##################################################################################
格式:insert into 表名 (字段名01,字段名02,......) values (值01,值02,......);
标准写法:insert into oldboy.student (id,name,gender) values (01,'xiaoA','男');
简化写法1:insert into oldboy.student (name) values ('xiaoA');
# 当字段允许为空时,可以省略不写
简化写法2:insert into oldboy.student values (03,'xiaoC','女');
# 如果记得对应字段,就不用写了,直接写数值也可以
批量录入;
insert into oldgirl.student values
(04,'xiaoD','男'),
(05,'xiaoE','女'),
(06,'xiaoF','男');
2.update------------修改数据信息##################################################################################
格式:update oldboy.student set 字段01=新值01,字段01=新值02,...... where 修改数据行条件信息;
例子:
update oldboy.student set name='xiaoAA',gender='男' where id=2;
3.delete------------删除数据信息##################################################################################
删除指定数据信息
格式:delete from oldboy.student where 删除数据行条件信息;
例子:delete from oldboy.student where gender='男';
清理数据表中所有数据
delete from oldboy.student;
# 数据表数据量少,可以采用此方式清理数据
truncate table oldboy.student;
# 数据表数据量多,可以采用此方式清理数据
注意:如果在软件中不可以执行,就去命令行中执行,软件会有操作保护,不允许删除
今日小结
sh
复制代码
数据库服务基础管理知识
数据库连接管理(连接方式-本地/远程 连接方法-命令/工具/程序)
数据库配置管理(加载配置文件-默认/自定义 编写配置文件规范-标签,必须要有服务端标签,而且标签下的配置项要满足规则条件)
数据库实例管理(单一系统中构建数据库多实例 相同版本/不同版本)
数据库服务应用管理方法
数据库SQL语句类型(DDL DML DCL DQL) 熟练掌握MySQL数据库DDL/DML/DCL/DQL语句应用
数据库SQL语句应用 -- DDL (库表操作语句 create alter show drop)
数据库SQL语句应用 -- DML(数据信息操作 insert update delete)
其他
bash
复制代码
1.命令后面加一个&,意思是放到后台继续运行
2.select version(); 查看数据库当前运行版本
获取sql语句的方式
sh
复制代码
填写完内容后,点击apply应用,就会生成对应的sql语句