1.數據庫服務基礎管理操作
1)數據庫服務連接管理
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⭐
......
企業應用數據庫連接管理時可以採用什麼方法:
方法一:利用數據庫自帶客户端命令進行管理
mysql -- 登錄訪問數據庫程序
mysqladmin -- 實現多數據庫進行管理 (密碼管理/運行管理/日誌切割管理)
mysqldump -- 實現將數據庫數據做備份/數據遷移
方法二:利用第三方工具進行連接管理(有圖形界面-方便管理)
1.mysql workbench:數據庫管理工具(官方-免費)⭐
直接下一步下一步安裝即可
使用前要創造一個遠程用户,以連接軟件與數據庫
create user root@'%' identified by '123456';
grant all on *.* to root@'%' with GRANT OPTION;
用户root,可連接範圍%,密碼123456
並授權所有權限給root
2.DBeaver(連接數據庫種類多)
3.NAVICAT(界面簡潔,使用廣泛-默認收費,需要購買激活碼,或者破解使用)
方法三:利用連接器實現數據庫服務連接管理(瞭解)
需要開發人員進行配合 代碼程序 -- 控制連接器 -- 連接數據庫
2)數據庫服務配置管理
方式一:採用默認方式加載配置文件
/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 &
如何規範編寫文件信息
1.合理設置標籤信息
客户端標籤:[client][mysql][mysqladmin][mysqldump]
用於定義客户端功能-- 簡化客户端命令參數應用
服務端標籤:[server][mysqld][mysqld_safe]
用户定義服務端功能
2.合理設置配置項信息
客户端標籤下配置項信息符合規範要求:
mysql --help 執行後,輸出的配置信息可以在配置文件中編寫,沒輸出的不能編寫
服務端標籤下配置項信息符合規範要求:
mysqld --help --verbose 執行後,輸出的配置信息可以在配置文件中編寫,沒輸出的不能編寫
客户端標籤下的內容修改後,無需重啓服務即可生效
服務端標籤下的內容修改後,需要重啓服務才能生效❗️
/etc/init.d/mysqld restart
3)數據庫服務實例管理
什麼是數據庫服務實例:一個服務程序運行,產生相應進程和線程信息,進程或線程佔用內存/CPU/磁盤資源情況,就稱為實例
數據庫服務在單一系統運行會有多實例(多個不同數據庫進程,分別佔用系統硬件資源)
多實例應用的目的
1.充分利用系統硬件資源
2.可以拆分/隔離數據庫應用 www-實例01 -- 1G bbs-實例02 -- 1G game-實例03 --1G
3.可以便於做業務監控 CPU 內存 磁盤IO 數據變化 ...
單一系統創建多實例,如何實現多實例部署
1.多個實例數據庫是統一版本環境
2.多個實例數據庫是不同版本環境
步驟一:下載不同版本數據庫程序包
mysql-8.0.36
mysql-5.6.48
mysql-5.7.28
將下載好的程序包放入數據庫主機中(目錄是/usr/local/)
步驟二:解壓並安裝程序包
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
步驟三:為每個實例分別創建數據存儲目錄並做初始化操作
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
步驟四:編寫不同實例配置文件信息
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
步驟五:運行啓動不同數據庫實例程序
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)數據庫語句分類
數據庫語句分類介紹:
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操作語句
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操作語句
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語句應用方法
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;
# 數據表數據量多,可以採用此方式清理數據
注意:如果在軟件中不可以執行,就去命令行中執行,軟件會有操作保護,不允許刪除
今日小結
數據庫服務基礎管理知識
數據庫連接管理(連接方式-本地/遠程 連接方法-命令/工具/程序)
數據庫配置管理(加載配置文件-默認/自定義 編寫配置文件規範-標籤,必須要有服務端標籤,而且標籤下的配置項要滿足規則條件)
數據庫實例管理(單一系統中構建數據庫多實例 相同版本/不同版本)
數據庫服務應用管理方法
數據庫SQL語句類型(DDL DML DCL DQL) 熟練掌握MySQL數據庫DDL/DML/DCL/DQL語句應用
數據庫SQL語句應用 -- DDL (庫表操作語句 create alter show drop)
數據庫SQL語句應用 -- DML(數據信息操作 insert update delete)
其他
1.命令後面加一個&,意思是放到後台繼續運行
2.select version(); 查看數據庫當前運行版本
獲取sql語句的方式
填寫完內容後,點擊apply應用,就會生成對應的sql語句