掘金 阅读 ( ) • 2024-07-01 10:50

theme: qklhk-chocolate

1、 数据库简介

1.1 DBMS 数据库管理系统

  • Database:数据库,简称DB。是数据的汇集,结构是库中有表,表中有数据。
  • DBMS:是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心
  • DBA:数据库管理员 database admin。负责数据库的规划、设计、协调、维护和管理等工作

小拓展1:

  • 操作系统的核心:内核
  • 数据库的核心:存储引擎 DBMS

小拓展2:什么是持久化?

持久化就是把数据永久保存。怎么永久保存?就是将数据存储在硬盘上。

1.2 数据库系统的架构

  • 单机架构
  • 大型主机/终端架构
  • 主从式架构(C/S)⭐
  • 分布式架构

1.3 数据库类型

  • 关系型数据库⭐:Relational Database Management System,最初由 IBM公司开发
  • 非关系型数据库:非关系型不仅仅是关系型,也就是非关系型包含关系型。
  • 键值对型数据库

1.4 关系型数据库 相关概念

  • 关系:关系就是二维表,其中:表中的行、列次序并不重要
  • 行row:表中的每一行,又称为一条记录record
  • 列column:表中的每一列,称为属性,字段,域field
  • 主键Primary key:PK , 用于唯一确定一个记录的字段,一张表只有一个主键
  • 域domain:属性的取值范围,如 性别只能是'男'和'女'两个值

1.5 mysql 与 mariadb

MariaDB和MySQL都是流行的关系型数据库管理系统(RDBMS)。它们是开源软件,MariaDB是MySQL的分支,是由MySQL的创始人之一创立的。

版本演变

MySQL:5.1 --> 5.5 --> 5.6 --> 5.7 --> 8.0

MariaDB:5.1 -->5.5 -->10.0--> 10.1 --> 10.2 --> 10.3 --> 10.4 --> 10.5

2、数据库安装

工具名 类型 说明 mysql 客户端工具 用来连接数据库,命令结尾不需加分号; mysqld 服务端工具 要加分号;结束符

客户端工具不能补全

配置文件路径:/etc/my.cnf

2.1 yum安装

2.1.1 mariadb

yum安装的没有密码,不安全。

 yum info mariadb  //列出MariaDB软件包的这些信息,帮助了解该软件包的当前状态和配置。
 [root@localhost ~]# yum install mariadb-server -y
 [root@localhost ~]# systemctl start mariadb.service
 [root@localhost ~]# mysql
 [root@localhost ~]# mysql_secure_installation    //安全配置脚本,会跳出来一些初始化设置  先输入密码 一路回车     

2.1.2 mysql

 ***********官方源和清华源二选一,推荐官方源**********
 官方源:
 [root@centos7 ~]# tee /etc/yum.repos.d/mysql.repo <<EOF
 [mysql57-community]
 name=MySQL 5.7 Community Server
 baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
 enabled=1
 gpgcheck=0
 EOF
 ​
 清华源:
 [root@centos7 ~]# tee /etc/yum.repos.d/mysql.repo <<EOF
 [mysql]
 name=mysql5.7
 baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
 gpgcheck=0
 EOF
 ​
 [root@centos7 ~]# yum -y install mysql-community-server     //社区版
 [root@localhost yum.repos.d]# systemctl start mysqld
 [root@localhost yum.repos.d]# ss -ntap |grep 3306
 [root@centos7 ~]# grep password /var/log/mysqld.log    //查看密码
 [root@localhost yum.repos.d]# mysql -u root -p'+8saq%5+ljzG'     //特殊符号用单引号引起来,注意密码必须要引起来
 ​
 ​
 mysql> set global validate_password_policy=0;
 mysql> set global validate_password_length=1;
 //修改密码策略
 ​
 mysql> alter user root@'localhost' identified by 'abc123';
 ​
 mysql -uroot -pabc123     //按照新密码重新登录
 ​
 ​
 mysql> \h
 //查看帮助

2.2 编译

编译和yum不能同时安装在同一台设备上。

 [root@localhost ~]# yum install -y ncurses-devel autoconf cmake    //安装cmake等依赖环境
 ​
 useradd -s /sbin/nologin  mysql
 ​
 cd /data
 ###上传mysql-boost-5.7.20.tar.gz到data目录下###
 tar xf mysql-boost-5.7.20.tar.gz
 cd /data/mysql-5.7.20/
 ​
 ###########下面这部分一起复制,复制完再点回车!#########
 cmake \
 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
 -DSYSCONFDIR=/etc \
 -DSYSTEMD_PID_DIR=/usr/local/mysql \
 -DDEFAULT_CHARSET=utf8  \
 -DDEFAULT_COLLATION=utf8_general_ci \
 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
 -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
 -DMYSQL_DATADIR=/usr/local/mysql/data \
 -DWITH_BOOST=boost \
 -DWITH_SYSTEMD=1
 ​
 make -j6        //这步特别特别慢!   j6注意修改虚拟机的设置
 make install    //这步快
 ​
 chown -R mysql:mysql /usr/local/mysql/
 ​
 vi /etc/my.cnf    //原始里面的删掉,粘贴下面的
 ​
 [client]
 port = 3306
 default-character-set=utf8
 socket = /usr/local/mysql/mysql.sock
 ​
 [mysql]
 port = 3306
 default-character-set=utf8
 socket = /usr/local/mysql/mysql.sock
 ​
 [mysqld]
 user = mysql
 basedir = /usr/local/mysql
 datadir = /usr/local/mysql/data
 port = 3306
 character_set_server=utf8
 pid-file = /usr/local/mysql/mysqld.pid
 socket = /usr/local/mysql/mysql.sock
 server-id = 1
 ​
 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES      //调优
 ​
 chown mysql:mysql /etc/my.cnf
 ​
 echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
 echo 'export PATH' >> /etc/profile
 source /etc/profile
 ​
 cd /usr/local/mysql/     //下面的脚本不能以绝对路径执行,必须是相对路径,所以要cd切换
 ​
 bin/mysqld \
 --initialize-insecure \
 --user=mysql \
 --basedir=/usr/local/mysql \
 --datadir=/usr/local/mysql/data
 ​
 cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
 systemctl daemon-reload
 systemctl enable mysqld
 systemctl start mysqld
 systemctl status mysqld
 netstat -anpt | grep 3306
   
 mysqladmin -u root -p password "abc123"     //⭐一定要直接回车!!!输入密码就会破解密码,那样只能重装!!!
 ​
 mysql -u root -p     //这个命令敲下,提示要输入密码,这个就是刚才设置的密码abc123

2.3 二级制安装⭐

生产环境中,一般多用二进制安装。

  1. 准备用户
 groupadd -r -g 306 mysql
 useradd -r -g 306 -u 306 -d /data/mysql mysql
  1. 准备数据目录,建议使用逻辑卷
 #可选做,后面的脚本mysql_install_db可自动生成此目录
 mkdir /data/mysql -p
 chown mysql:mysql /data/mysql
  1. 准备二进制程序
 tar xf mysql-VERSION-linux-x86_64.tar.gz -C /usr/local
 cd /usr/local
 ln -sv mysql-VERSION mysql
 chown -R root:root /usr/local/mysql/
  1. 准备配置文件
 cd /usr/local/mysql        //主程序目录
 cp -b support-files/my-default.cnf   /etc/my.cnf
 vim /etc/my.cnf
 #mysql语句块中添加以下三个选项
 [mysqld]
 datadir = /data/mysql
 innodb_file_per_table = on  #在mariadb5.5以上版的是默认值,可不加
 skip_name_resolve = on      #禁止主机名解析,建议使用 可选项
  1. 创建数据库文件
 cd /usr/local/mysql/
 ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
 mysqld --initialize-insecure --user=mysq1 --datadir=/data/mysql   //生成空密码,如果去掉-insecure,就是生成随机密码
 ll /data/mysql/
  1. 准备服务脚本,并启动服务
 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
 chkconfig --add mysqld
 service mysqld start
 ​
 #如果有对应的service 文件可以执行下面
 cp /usr/local/mysql/support-files/systemd/mariadb.service 
 /usr/lib/systemd/system/
 systemctl daemon-reload
 systemctl enable --now mariadb
  1. PATH路径
 echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
 . /etc/profile.d/mysql.sh
  1. 安全初始化
 /usr/local/mysql/bin/mysql_secure_installation

2.4 mycli 插件⭐

mycli是基于python开发的,pip37是python的安装工具,类似于yum。

 cd /opt
 [root@localhost opt]#yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
 **********加载Python-3.7.7_.tgz**********
 [root@localhost opt]#tar zxvf Python-3.7.7_.tgz
 [root@localhost Python-3.7.7]#cd Python-3.7.7/
 [root@localhost Python-3.7.7]#./configure --prefix=/usr/local/Python-3.7.7/
 [root@localhost Python-3.7.7]#make  
 [root@localhost Python-3.7.7]#make install
 [root@localhost Python-3.7.7]#ln -s  /usr/local/Python-3.7.7/bin/python3.7  /usr/bin/python37
 [root@localhost Python-3.7.7]#ln -s /usr/local/Python-3.7.7/bin/pip3.7 /usr/bin/pip37
 [root@localhost Python-3.7.7]#pip37 install --upgrade pip -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
 [root@localhost Python-3.7.7]#pip37 install mycli -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
 [root@localhost Python-3.7.7]#ln -s /usr/local/Python-3.7.7/bin/mycli /usr/bin/mycli
 [root@localhost Python-3.7.7]#mycli  -u root -p 123123
 ​
 [root@localhost ~]#vim /etc/my.cnf                     
 [mysql]
 prompt=(\u@\h) [\d]>\_
 auto-rehash
 ​
 图形化界面:
 [mysqld]
 skip_grant_tables

小拓展:rpm包的依赖关系

 yum remove mysq1-libs    //卸载 mariadb的安装联系
 rpm -ivh mysql-community-client-5.7.44-1.el7.x86_64.rpm
 rpm -ivh mysql-community-common-5.7.44-1.el7.x86_64.rpm
 rpm -ivh mysql-community-libs-5.7.44-1.el7.x86_64.rpm
 rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm

3、 数据库优化(客户端)

3.1 修改提示符

 [root@localhost ~]# vim /etc/my.cnf             
 [mysql]     //加在客户端
 prompt=(\u@\h) [\d]>\_
 ​
 [mysqld]    //如果在d下面,就是加在服务端
 ​
 systemctl restart mysqld
 [root@7-2 ~]# mysql -uroot -pabc123
 (root@localhost) [(none)]> use mysql;    //切换到mysql数据库
 (root@localhost) [mysql]>    //通过前面的提示符,可以看到当前的位置

3.2 自动补全

mariadb默认补全,mysql不默认补全

 [root@localhost ~]# vim /etc/my.cnf  
 [mysql]
 prompt=(mysql) [\d]>\_
 auto-rehash
 //不是完全生效,有时只能补全敲过的命令。