一.基本概念
1.数据(Data)
描述事物的符号记录 包括数字,文字、图形、图像、声音、档案记录等 以“记录”形式按统一的格式进行存储
2.表
将不同的记录组织在一起 用来存储具体数据 数据库 表的集合,是存储数据的仓库 以一定的组织方式存储的相互有关的数据组合 数据库管理系统(DBMS) 是实现对数据库资源有效组织、管理和存取的系统软件
3.数据库系统
是一个人机系统,田便件、U、效伯)牛、uUMo、/I1Ntt -数据库用户组成 用户可以通过DBMS或应用程序操作数据库 DBMS数据库管理系统
- Database:数据库是数据的汇集,它以一定的组织形式存于存储介质上
- DBMS:是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心
- DBA:负责数据库的规划、设计、协调、维护和管理等工作
- 应用程序:指以数据库为基础的应用程序
4.数据库管理系统的优点
- 相互关联的数据的集合
- 较少的数据冗余
- 程序与数据相互独立
- 保证数据的安全、可靠
- 最大限度地保证数据的正确性
- 数据可以并发使用并能同时保证一致性
5.数据库管理系统的基本功能
6.数据库系统的架构
- 单机架构
- 大型主机/终端架构
- 主从式架构(C/S)
- 分布式架构
二.关系型数据库和非关系型数据库
1.关系型数据库:
Mysql(Oracle公司) 、 SQL server(微软) 、access(微软公司office产品) Oracle 、DB2(IBM公司),sybase(sybase) 等等
2.关系型数据库和非关系型数据库的区别
关系数据库: 关系数据库结构是二维数据库表,二维表当中每个字段(列)用来描述对象的一个属性, 每个记录(行)用来描述一个对象的信息(完整信息),关系数据库写到哪里也就是存储在硬盘当中 读写系统就会受到的IO限制或者瓶颈
其他 关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织 优点: 1、易于维护:都是使用表结构,格式一致; 2、使用方便:SQL语言通用,可用于复杂查询; 3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。 缺点: 1、读写性能比较差,尤其是海量数据的高效率读写; 2、固定的表结构,灵活度稍欠; 3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。 缓存加速软件 非关系型数据库(NoSQL): MongoDB 、 Redis(内存数据库/缓存数据库)K-V键值对、与之类似的Memcache,K-V键值对 redis-memecache对比: 相同点:存储高热数据(在内存中高速运行) 不同点:redis可以做持久化保存,可以存储对象
3.非关系型数据库
严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。 优点: 1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、 图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。 2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘; 3、高扩展性; 4、成本低:nosql数据库部署简单,基本都是开源软件。 缺点: 1、不提供sql支持,学习和使用成本较高; 2、无事务处理; 3、数据结构相对复杂,复杂查询方面稍欠。
三.安装mysql
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
输入密码后#一路回车
[root@localhost ~]
> [mysql]
> name=mysql5.7
> baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
> gpgcheck=0
> EOF
[root@localhost ~]
启动并查看状态
[root@localhost ~]
[root@localhost ~]
LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=3475,fd=13))
[root@localhost ~]
四.基本操作
1.设置密码和改密
第一次登录不知道密码 查看密码
[root@centos7 ~]
[root@localhost yum.repos.d]
表明多线程 改密码可能会报错
mysql> alter user root@'localhost' identified by 'zy44123';
ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found 42. Created with MySQL 50568, now running 50736. Please use mysql_upgrade to fix this error.
需要退出数据库
[root@localhost ~]
mysql> alter user root@'localhost' identified by 'zy44123';
Query OK, 0 rows affected (0.00 sec)
2.检测数据库是否在线
[root@localhost ~]
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
mysqld is alive
3.查看支持的字符集
mysql> show charset;
4.查看表
mysql> show databases;
5.使用表
mysql> use mysql;
6.创建数据库
mysql> create database zy;
Query OK, 1 row affected (0.00 sec)
mysql> show create database zy;
mysql> create database zy2 charset=utf8;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
7.修改数据库
mysql> ALTER DATABASE zy character set utf8;
Query OK, 1 row affected (0.00 sec)
8.删除数据库 (慎用)
mysql> drop database zy;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> show databases;
五.多实例应用
1.什么是数据库多实例
多实例类似微信双开,端口号类比微信账号,数据库类比聊天窗口,表类比聊天记录 MySQL多实例就是在一台服务器上同时开启多个不同的服务端口(如:3306、3307等),同时运 行多个MySQL服务进程,这些服务进程通过不同的Socket监听不同的服务端口来提供服务。 多实例可能是MySQL的不同版本,也可能是MySQL的同一版本实现
2.多实例的好处
可有效利用服务器资源。当单个服务器资源有剩余时,可以充分利用剩余资源提供更多的服务,且 可以实现资源的逻辑隔离节约服务器资源。例如公司服务器资源紧张,但是数据库又需要各自尽量 独立的提供服务,并且还需要到主从复制等技术,多实例就是最佳选择
3.多实例弊端
存在资源互相抢占的问题。比如:当某个数据库实例并发很高或者SQL查询慢时,整个实例会消耗 大量的CPU、磁盘I/O等资源,导致服务器上面其他的数据库实例在提供服务的质量也会下降,所以 具体的需求要根据自己的实际情况而定。
4.实际操作
[root@localhost ~]
[root@localhost ~]
建立实例文件夹
[root@localhost ~]
uid=27(mysql) gid=27(mysql) groups=27(mysql)
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[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
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
port=3306
mysql_user="root"
mysql_pwd=""
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 --defaults-file=${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
}
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@localhost ~]
[root@localhost ~]
给文件加权限
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
启动mysql
[root@localhost ~]
Starting MySQL...
[root@localhost ~]
Starting MySQL...
[root@localhost ~]
Starting MySQL...
[root@localhost ~]
[root@localhost ~]
六.安装mycli插件 (补全命令)
[root@localhost ~]
[root@localhost ~]
把软件拖入系统里
[root@localhost opt]
[root@localhost opt]
[root@localhost opt]
[root@localhost Python-3.7.7]
[root@localhost Python-3.7.7]
[root@localhost Python-3.7.7]
[root@localhost Python-3.7.7]
[root@localhost Python-3.7.7]
[root@localhost Python-3.7.7]
[root@localhost Python-3.7.7]
[root@localhost Python-3.7.7]
密码要输入你数据库的密码 这里提示信息需要在
[root@localhost ~]
|