第一章节 数据库介绍
什么是数据?
在一个网站中,哪些可以被称之为数据?
咱们认为的数据:
文字、数字、符号、表格、图片、视频。。。。。
计算机认为的数据:
二进制(机器语言)
用来登录的数据有哪些?
用户 、密码 和 评论类 的数据有什么不一样吗?
用户 、密码该怎么存?
txt
excel
word
…
如果用以上方式会遇到什么问题?
不安全、查找不方便、管理、限制。
数据库管理系统(软件:DBMS)
数据库的发展历程
第一时代架构 : RDBMS时代
什么是RDBMS?
关系型数据库关系系统:Oracle 、 MSSQL 、 IBM DB2
第二时代架构: RDBMS(MySQL、PG、云数据库) + NoSQL(Not ONLY SQL)时代
数据量、业务量随着互联网的发展,变的越来越大。所以传统的RDBMS已经不能承载所有业务需求了。
NoSQL :MongoDB 、ES 、Redis
第三时代架构:
NewSQL 分布式数据库时代
Aliyun: PolarDB
Pincap: TiDB
第二章节 MySQL介绍和安装
MySQL 产品线
分支
Oracle
MariaDB
Percona
MySQL 企业版本选择
分支
E : 企业版 (收费),可以下载30天试用
C : 社区版 (开源)
社区版选择
免费服务期限: 1-5年
扩展服务期限: 6-10年
5.7 :一般建议升级到最新版本,5.7.18-5.7.30 最好是双数版。
5.6 :一般建议选用GA6-12月区间,5.6.34-max,最好是双数版本。
8.0 :一般建议使用8.0.18+
手撕 安装 MySQL 5.7.28 二进制版本
-
克隆虚拟机
IP: 10.0.0.51/24
hostname: db01
防火墙关闭
selinux关闭 -
清理历史环境
yum remove -y mariadb-libs
\rm -rf /etc/my.cnf* -
创建用户
useradd mysql -
创建相关目录并授权
mkdir -p /data/app /data/3306/data /data/3306/logs
chown -R mysql.mysql /data -
上传 5.7.28 软件至/data/app,并解压、软连接
[root@db01 ~]# cd /data/app
[root@db01 app]# tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
[root@db01 app]# ln -s mysql-5.7.28-linux-glibc2.12-x86_64 mysql -
设置环境变量
vim /etc/profile
#添加最后一行
export PATH=/data/app/mysql/bin:$PATH
#生效配置:
source /etc/profile
-
安装关键依赖软件包
yum install -y libaio-devel -
初始化数据(建库)
/data/app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3306/data
命令作用:
将数据启动所需要的系统数据(/data/3306/data)
参数介绍:
–initialize-insecure 初始化核心参数(必加)
–user=mysql 初始化用户和组
–basedir=/data/app/mysql 软件安装目录
–datadir=/data/3306/data 数据存放位置
彩蛋1:
5.7 版本初始化参数介绍:
初始化 不安全
–initialize-insecure
说明:
初始化完成后是无密码的。
--initialize : 安全的初始化方式
说明:
1. 自动生成临时密码,第一次使用时需要修改此密码
2. 4种密码复杂度,12位。
彩蛋2:
5.7 初始化命令:
/data/app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3306/data
5.6初始化区别()
/data/app/mysql56/scripts/mysql_install_db --user=mysql --basedir=/data/app/mysql --datadir=/data/3306/data
-
准备启动脚本
[root@db01 data]# cp /data/app/mysql/support-files/mysql.server /etc/init.d/mysqld -
准备配置文件
[root@db01 data]# vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/data/app/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock -
启动数据库
[root@db01 data]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
[root@db01 data]# service mysqld restart
Shutting down MySQL… SUCCESS!
Starting MySQL. SUCCESS!
-
使用systemd管理mysql
[root@db01 data]# chkconfig --add mysqld
[root@db01 data]# /etc/init.d/mysqld stop
Shutting down MySQL… SUCCESS!
[root@db01 data]# systemctl start mysqld
[root@db01 data]# mysql
[root@db01 data]# ps -ef |grep mysqld
root 17275 1 0 16:00 ? 00:00:00 /bin/sh /data/app/mysql/bin/mysqld_safe --datadir=/data/3306/data --pid-file=/data/3306/data/db01.pid
mysql 17416 17275 4 16:00 ? 00:00:00 /data/app/mysql/bin/mysqld --basedir=/data/app/mysql --datadir=/data/3306/data --plugin-dir=/data/app/mysql/lib/plugin --user=mysql --log-error=db01.err --pid-file=/data/3306/data/db01.pid --socket=/tmp/mysql.sock
root 17448 16288 0 16:00 pts/1 00:00:00 grep --color=auto mysqld
[root@db01 data]#
[root@db01 data]# netstat -tulnp |grep 3306
tcp6 0 0 :::3306 ::😗 LISTEN 17416/mysqld
[root@db01 data]# systemctl stop mysqld
[root@db01 data]# netstat -tulnp |grep 3306 -
基于initialize模式,修改临时密码
[root@db01 data]# mysqladmin -uroot -p password 123
Enter password:
彩蛋: 如果启动报错,如何排查?
[root@db01 data]# /etc/init.d/mysqld start
Starting MySQL.Logging to ‘/data/3306/data/db01.err’.
. ERROR! The server quit without updating PID file (/data/3306/data/db01.pid).
vim /data/3306/data/db01.err
—》 从后往前排查 [ERROR]信息。
2020-06-29T07:32:32.533458Z 0 [ERROR] InnoDB: The innodb_system data file ‘ibdata1’ must be writable
2020-06-29T07:32:32.533512Z 0 [ERROR] InnoDB: The innodb_system data file ‘ibdata1’ must be writable
2020-06-29T07:32:32.533523Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2020-06-29T07:32:33.139530Z 0 [ERROR] Plugin ‘InnoDB’ init function returned error.
2020-06-29T07:32:33.139840Z 0 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
2020-06-29T07:32:33.140017Z 0 [ERROR] Failed to initialize builtin plugins.
2020-06-29T07:32:33.140055Z 0 [ERROR] Aborting
—》 得到结果: 权限问题