数据库服务基础管理操作
<h1 id="1数据库服务基础管理操作">1.数据库服务基础管理操作</h1><h2 id="1数据库服务连接管理">1)数据库服务连接管理</h2>
<pre><code class="language-bash">MySQL数据库服务应用架构:C/S
利用C/S架构管理数据库服务端时会有两种方式:
1.采用本地方式连接管理
mysql -uxxx -pxxx -S 套接字文件(/tmp/mysql.sock--数据库服务端启动时自动生成 关闭后自动删除)
2.采用远程方式连接管理
mysql -uxxx -pxxx -h地址/域名 -P端口号
附加内容
1./tmp/mysql.sock文件只在数据库服务端启动时,将自动生成,关闭后自动删除
#/etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!
#ll /tmp/mysql.sock
ls: 无法访问/tmp/mysql.sock: 没有那个文件或目录
#/etc/init.d/mysqld start
Starting MySQL... SUCCESS!
#ll /tmp/mysql.sock
srwxrwxrwx 1 mysql mysql 0 2月27 08:48 /tmp/mysql.sock
2.socket文件在配置文件中已定义
#cat /etc/my.cnf
port=3306
user=mysql
datadir=/data/3306/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock⭐
或者在进程中也能筛选出来
#ps aux |grep mysql
......
--socket=/tmp/mysql.sock⭐
......
</code></pre>
<h3 id="企业应用数据库连接管理时可以采用什么方法">企业应用数据库连接管理时可以采用什么方法:</h3>
<h4 id="方法一利用数据库自带客户端命令进行管理">方法一:利用数据库自带客户端命令进行管理</h4>
<pre><code class="language-sh">mysql -- 登录访问数据库程序
mysqladmin-- 实现多数据库进行管理 (密码管理/运行管理/日志切割管理)
mysqldump -- 实现将数据库数据做备份/数据迁移
</code></pre>
<h4 id="方法二利用第三方工具进行连接管理有图形界面-方便管理">方法二:利用第三方工具进行连接管理(有图形界面-方便管理)</h4>
<pre><code class="language-sh">1.mysql workbench:数据库管理工具(官方-免费)⭐
直接下一步下一步安装即可
使用前要创造一个远程用户,以连接软件与数据库
create user root@'%' identified by '123456';
grant all on *.* to root@'%' with GRANT OPTION;
用户root,可连接范围%,密码123456
并授权所有权限给root
</code></pre>
<pre><code class="language-bash">2.DBeaver(连接数据库种类多)
3.NAVICAT(界面简洁,使用广泛-默认收费,需要购买激活码,或者破解使用)
</code></pre>
<h4 id="方法三利用连接器实现数据库服务连接管理了解">方法三:利用连接器实现数据库服务连接管理(了解)</h4>
<pre><code class="language-sh">需要开发人员进行配合代码程序 -- 控制连接器 -- 连接数据库
</code></pre>
<h2 id="2数据库服务配置管理">2)数据库服务配置管理</h2>
<pre><code class="language-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 &
</code></pre>
<h3 id="如何规范编写文件信息">如何规范编写文件信息</h3>
<pre><code class="language-bash">1.合理设置标签信息
客户端标签:
用于定义客户端功能-- 简化客户端命令参数应用
服务端标签:
用户定义服务端功能
2.合理设置配置项信息
客户端标签下配置项信息符合规范要求:
mysql --help 执行后,输出的配置信息可以在配置文件中编写,没输出的不能编写
服务端标签下配置项信息符合规范要求:
mysqld --help --verbose 执行后,输出的配置信息可以在配置文件中编写,没输出的不能编写
客户端标签下的内容修改后,无需重启服务即可生效
服务端标签下的内容修改后,需要重启服务才能生效❗️
/etc/init.d/mysqld restart
</code></pre>
<h2 id="3数据库服务实例管理">3)数据库服务实例管理</h2>
<pre><code class="language-bash">什么是数据库服务实例:一个服务程序运行,产生相应进程和线程信息,进程或线程占用内存/CPU/磁盘资源情况,就称为实例
数据库服务在单一系统运行会有多实例(多个不同数据库进程,分别占用系统硬件资源)
多实例应用的目的
1.充分利用系统硬件资源
2.可以拆分/隔离数据库应用 www-实例01 -- 1G bbs-实例02 -- 1G game-实例03 --1G
3.可以便于做业务监控 CPU 内存 磁盘IO 数据变化 ...
</code></pre>
<h3 id="单一系统创建多实例如何实现多实例部署">单一系统创建多实例,如何实现多实例部署</h3>
<pre><code class="language-bash">1.多个实例数据库是统一版本环境
2.多个实例数据库是不同版本环境
</code></pre>
<h4 id="步骤一下载不同版本数据库程序包">步骤一:下载不同版本数据库程序包</h4>
<pre><code class="language-bash">mysql-8.0.36
mysql-5.6.48
mysql-5.7.28
将下载好的程序包放入数据库主机中(目录是/usr/local/)
</code></pre>
<h4 id="步骤二解压并安装程序包">步骤二:解压并安装程序包</h4>
<pre><code class="language-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
</code></pre>
<h4 id="步骤三为每个实例分别创建数据存储目录并做初始化操作">步骤三:为每个实例分别创建数据存储目录并做初始化操作</h4>
<pre><code class="language-bash">mysql-80: /data/3306/datamkdir -p /data/3306/data && chown -R mysql.mysql /data/3306/data
mysql-57: /data/3357/datamkdir -p /data/3357/data && chown -R mysql.mysql /data/3357/data
mysql-56: /data/3356/datamkdir -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
</code></pre>
<h4 id="步骤四编写不同实例配置文件信息">步骤四:编写不同实例配置文件信息</h4>
<pre><code class="language-sh">cat >/data/3306/my80.cnf<<EOF
port=3306
user=mysql
datadir=/data/3306/data
basedir=/usr/local/mysql
socket=/tmp/mysql80.sock
EOF
cat >/data/3357/my57.cnf<<EOF
port=3357
user=mysql
datadir=/data/3357/data
basedir=/usr/local/mysql57
socket=/tmp/mysql57.sock
EOF
cat >/data/3356/my56.cnf<<EOF
port=3356
user=mysql
datadir=/data/3356/data
basedir=/usr/local/mysql56
socket=/tmp/mysql56.sock
EOF
</code></pre>
<h4 id="步骤五运行启动不同数据库实例程序">步骤五:运行启动不同数据库实例程序</h4>
<pre><code class="language-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数据库
</code></pre>
<h1 id="2数据库服务基础应用操作">2.数据库服务基础应用操作</h1>
<h2 id="1数据库语句分类">1)数据库语句分类</h2>
<pre><code class="language-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
</code></pre>
<h2 id="2数据库语句应用实现">2)数据库语句应用实现</h2>
<h3 id="ddl语句应用方法">①DDL语句应用方法</h3>
<h4 id="1数据库ddl操作语句">1.数据库DDL操作语句</h4>
<pre><code class="language-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 库名; # 释放存储资源❗️(谨慎使用)
对于数据库的操作注意事项:
创建的数据库信息最好符合业务需要
删除数据库时需要做操作审核,需要在业务不繁忙时操作
</code></pre>
<h4 id="2数据表ddl操作语句">2.数据表DDL操作语句</h4>
<pre><code class="language-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;
</code></pre>
<h3 id="dml语句应用方法">②DML语句应用方法</h3>
<pre><code class="language-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;
# 数据表数据量多,可以采用此方式清理数据
注意:如果在软件中不可以执行,就去命令行中执行,软件会有操作保护,不允许删除
</code></pre>
<h1 id="今日小结">今日小结</h1>
<pre><code class="language-sh">数据库服务基础管理知识
数据库连接管理(连接方式-本地/远程 连接方法-命令/工具/程序)
数据库配置管理(加载配置文件-默认/自定义 编写配置文件规范-标签,必须要有服务端标签,而且标签下的配置项要满足规则条件)
数据库实例管理(单一系统中构建数据库多实例 相同版本/不同版本)
数据库服务应用管理方法
数据库SQL语句类型(DDL DML DCL DQL) 熟练掌握MySQL数据库DDL/DML/DCL/DQL语句应用
数据库SQL语句应用 -- DDL (库表操作语句 create alter show drop)
数据库SQL语句应用 -- DML(数据信息操作 insert update delete)
</code></pre>
<h1 id="其他">其他</h1>
<pre><code class="language-bash">1.命令后面加一个&,意思是放到后台继续运行
2.select version(); 查看数据库当前运行版本
</code></pre>
<h2 id="获取sql语句的方式">获取sql语句的方式</h2>
<pre><code class="language-sh">填写完内容后,点击apply应用,就会生成对应的sql语句
</code></pre><br><br>
来源:https://www.cnblogs.com/jindongyan666/p/19648082
頁:
[1]