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
复制代码 ②DML语句应用方法
- 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数据库
复制代码 今日小结
- 数据库语句分类介绍:
- 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
复制代码 其他
- 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 库名; # 释放存储资源❗️(谨慎使用)
- 对于数据库的操作注意事项:
- 创建的数据库信息最好符合业务需要
- 删除数据库时需要做操作审核,需要在业务不繁忙时操作
复制代码 获取sql语句的方式
- 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;
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |