MySQL介绍以及数据库源码安装、二进制安装、yum安装

文章目录

数据库简介
数据库系统(Database System),是由数据库及其管理软件组成的系统

 数据库从字面上的理解就是数据的仓库,其实我们平时说的数据库是指数据库管理系统(Database Management System),它是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。严格来说数据库是数据库管理系统的实例,一个数据库管理系统可以有多个数据库实例。

1、程序所有的组件就不可能运行在一台机器上

#因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。

#于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。

2、数据安全问题

#根据1的描述,我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。

#于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。

3、并发

根据2的描述,我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能:

#1.远程连接(支持并发)
#2.打开文件
#3.读写(加锁)
#4.关闭文件

总结:

#我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专

关系型数据库:方便管理

关系型数据库需要有表结构

常见的关系型数据库:
mysql、oracle、db2、sqlserver、mariadb =====》注意:sql语句通用

非关系型数据库:查询快

非关系型数据库是key-value存储的,没有表结构

常见的非关系型数据库:
mongodb,redis,memcache =====》现在企业更多会把redis,memcache当作缓存用
redis,memcache是把数据存入内存的,并不是直接存入硬盘

Mysql数据库管理软件

安装数据库,需要安装客户端和服务端

yum -y install mariadb mariadb-server

	1、数据库管理软件本质就是一个socket套接字软件

	2、CS架构====》客户端和服务端
	   BS架构====》浏览器和服务端

一个软件分为两部分   
1.代码 
2.代码运行中产生的一系列数据
#描述:mysql是基于网路通信的软件 他是CS架构有客户端和服务端,mysql客户端沿着网络发送请求发给服务端建立好三次握手,他是基于TCP协议。

关系型数据库的基本概念

字段: 表的标题
记录:文件中每一行内容
表:文件
库:文件夹
数据库管理软件:本质就是一个socket软件
数据库服务器:运行数据库管理软件服务端的计算机

我们可以把shell语句和mysql语句做一个对比,如下所示:

 shell命令 <---------------------> sql语句
 shell解释器 <---------------------> mysql服务端软件    
 linux操作系统 <----------------------> linux操作系统
 计算机硬件 <----------------------> 计算机硬件

数据库排行:https://db-engines.com/en/ranking

SQL语句增删改查

#热身	
2、关系型数据库基本概念
		字段:表的标题
		记录:文件中的一行内容
		表:文件
		库:文件夹
		数据库管理软件:本质就是一个socket软件
		数据库服务器:运行数据库管理软件服务端的计算机


#  库==》文件夹
	增
		create database db1 charset utf8mb4;
	改
		alter database db1 charset gbk;
	查
		show databases;
		show create database db1;
	删
		drop database db1;


#  表==》文件
	create database db1;
	use db1;

	增
		create table t1(id int,name varchar(16));
	改
		alter table t1 modify name varchar(20);
	查
		show tables;
		desc t1;
		show create table t1;
	删
		drop table t1;

# 记录
	create database db1;
	use db1;
	create table t1(id int,name varchar(16));

	增
		insert db1.t1 values(1,"egon"),(2,"tom"),(3,"jack");
		
		insert db1.t1(name,id) values("lili",4);
		
		insert db1.t1(id) values(5);
	改
		update db1.t1 set name="JACK" where id=3;select * from db1.t1;
		select id,name from db1.t1;
		select id,name from db1.t1 where id=3;
		select id,name from db1.t1 where id<3;
	删
		delete from db1.t1 where id=3;
	
	
	
# 查看用户
	select user(); 
# 查看所在哪个库
    select databade();

清空表内容(记录)

truncate db1.t1;   ##把表所有状态还原成初始状态

忘记密码登录数据库

[root@egon ~]# vim /etc/my.cnf    #mysql主配置文件
[mysqld]
skip-grant-table
[root@egon ~]# systemctl restart mariadb
[root@egon ~]# mysql
MariaDB [(none)]> update mysql.user set password=password("123") where user="root" and host="localhost";
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> \q
[root@egon ~]# #打开/etc/my.cnf去掉skip-grant-table,然后重启
[root@egon ~]# systemctl restart mariadb
[root@egon ~]# mysql -u root -p123 #以新密码登录

修改字符编码


[root@egon ~]# vim /etc/my.cnf 
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

#2. 重启服务
#3. 查看修改结果:
show variables like '%char%'

系统默认的数据库

我们好数据库后,系统会默认生成一些库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+

information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等
performance_schema: MySQL5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象
mysql: 授权库,主要存储系统用户的权限信息
test: MySQL数据库系统自动创建的测试数据库

数据库部署安装

数据库官网下载地址

1.源码安装数据库(自定义目录安装)

1)上传或下载代码包
[root@db01 ~]# rz mysql-5.6.46.tar.gz
2)安装依赖
[root@db01 ~]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf openssl openssl-devel
3)解压
[root@db01 ~]# tar xf mysql-5.6.46.tar.gz
4)创建目录
[root@db01 ~]# mkdir /service
5)生成cmake
[root@db01 ~]# cd mysql-5.6.46/
[root@db01 ~]# cmake . -DCMAKE_INSTALL_PREFIX=/service/mysql-5.6.46 \
-DMYSQL_DATADIR=/service/mysql-5.6.46/data \
-DMYSQL_UNIX_ADDR=/service/mysql-5.6.46/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

#程序存放位置
cmake . -DCMAKE_INSTALL_PREFIX=/service/mysql-5.6.46 \
#数据存放位置
-DMYSQL_DATADIR=/service/mysql-5.6.46/data \
#socket文件存放位置
-DMYSQL_UNIX_ADDR=/service/mysql-5.6.46/tmp/mysql.sock \
#使用utf8字符集
-DDEFAULT_CHARSET=utf8 \
#校验规则
-DDEFAULT_COLLATION=utf8_general_ci \
#使用其他额外的字符集
-DWITH_EXTRA_CHARSETS=all \
#支持的存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#禁用的存储引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
#启用zlib库支持(zib、gzib相关)
-DWITH_ZLIB=bundled \
#启用SSL库支持(安全套接层)
-DWITH_SSL=bundled \
#启用本地数据导入支持
-DENABLED_LOCAL_INFILE=1 \
#编译嵌入式服务器支持
-DWITH_EMBEDDED_SERVER=1 \
# mysql5.6支持了google的c++mock框架了,允许下载,否则会安装报错。
-DENABLE_DOWNLOADS=1 \
#禁用debug(默认为禁用)
-DWITH_DEBUG=0
#编译
5)编译 make
[root@db01 mysql-5.6.46]# make
6)安装 make install
[root@db01 mysql-5.6.46]# make install
7)做软连接
[root@db01 ~]# ln -s /service/mysql-5.6.46 /service/mysql
8)创建数据库用户
[root@db01 ~]# useradd mysql -s /sbin/nologin -M
9)拷贝配置文件和启动文件
#1.进入配置文件和脚本的目录
[root@db01 ~]# cd /service/mysql/support-files/

#2.拷贝配置文件
[root@db01 support-files]# cp my-default.cnf /etc/my.cnf
10)配置system管理MySQL服务
#1.配置system管理MySQL
[root@db01 ~]# vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/service/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

#2.重新加载启动文件列表
[root@db01 ~]# systemctl daemon-reload
11)初始化数据库
#1.进入初始化目录
[root@db01 support-files]# cd /service/mysql/scripts/

#2.执行初始化命令
[root@db01 scripts]# ./mysql_install_db --user=mysql --basedir=/service/mysql --datadir=/service/mysql/data
12)创建socket文件目录(二进制安装没有)
#先创建tmp目录
[root@db01 ~]# mkdir /service/mysql/tmp
13)授权数据库目录
[root@db01 ~]# chown -R mysql.mysql /service/mysql
[root@db01 ~]# chown -R mysql.mysql /service/mysql-5.6.46
14)system管理启动MySQL
[root@db01 ~]# systemctl start mysql
[root@db01 ~]# ps -ef | grep [m]ysql
mysql     23509      1  3 22:36 ?        00:00:01 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
[root@db01 ~]# netstat -lntp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      23509/mysqld
15)配置环境变量直接使用mysql
[root@db01 ~]# vim /etc/profile
export PATH=/service/mysql/bin:$PATH
[root@db01 ~]# source /etc/profile
16)修改root用户密码
[root@db01 ~]# mysql -u root -p			#默认root用户密码为空,有多种方式重置root密码
第一种:
MySQL > SET PASSWORD=PASSWORD('123456');
Query OK, 0 rows affected (0.00 sec)

第二种:
MySQL > grant all privileges on *.* to root@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

注意:两种重置密码方式有区别。

#查看用户
mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

二进制安装前准备环境

#删除之前的安装残留
[root@db01 ~]# rm -rf mysql-5.6.46
[root@db01 ~]# rm -rf mysql-5.6.46.tar.gz 
[root@db01 ~]# rm -rf /service/mysql
[root@db01 ~]# rm -rf /etc/my.cnf
[root@db01 ~]# rm -rf /usr/lib/systemd/system/mysql.service 


[root@db01 ~]# vim /etc/profile
export PATH=/service/mysql/bin:$PATH   #删除

2.二进制安装(自定义安装目录)

1)上传二进制包
[root@db01 ~]# rz mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
2)安装依赖
[root@db01 ~]# yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf
3)解压安装包
[root@db01 ~]# tar xf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
4)创建自定义目录
[root@db01 ~]# mkdir /service
5)移动目录并改名
[root@db01 ~]# mv mysql-5.6.46-linux-glibc2.12-x86_64 /service/mysql-5.6.46
6)做软连接
[root@db01 ~]# ln -s /service/mysql-5.6.46 /service/mysql
7)创建数据库用户
[root@db01 ~]# useradd mysql -s /sbin/nologin -M
8)拷贝配置文件和启动文件
#1.进入配置文件和脚本的目录
[root@db01 ~]# cd /service/mysql/support-files/

#2.拷贝配置文件
[root@db01 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y


#3.拷贝启动脚本
[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld

#加上时间戳
[root@db01 mysql]# vim /etc/my.cnf
[mysqld]
explicit_defaults_for_timestamp=true
basedir=/service/mysql
datadir=/service/mysql/data

9)初始化数据库
#1.进入初始化目录
[root@db01 support-files]# cd /service/mysql/scripts/

#2.执行初始化命令
[root@db01 scripts]# ./mysql_install_db --user=mysql --basedir=/service/mysql --datadir=/service/mysql/data
10)启动数据库
[root@db01 scripts]# /etc/init.d/mysqld start
/etc/init.d/mysqld: line 244: my_print_defaults: command not found
/etc/init.d/mysqld: line 264: cd: /usr/local/mysql: No such file or directory
Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe)
11)如果是二进制安装到自定义目录下需要修改脚本目录
[root@db01 scripts]# sed -i 's#/usr/local#/service#g' /etc/init.d/mysqld /service/mysql/bin/mysqld_safe
12)授权数据库目录
[root@db01 ~]# chown -R mysql.mysql /service/mysql
[root@db01 ~]# chown -R mysql.mysql /service/mysql-5.6.46
13)再次启动
[root@db01 scripts]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/service/mysql/data/db04.err'.
 SUCCESS! 
[root@db01 scripts]#
14)检查进程和端口
[root@db01 scripts]# ps -ef | grep [m]ysql
root      23083      1  0 20:36 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/db02.pid
mysql     23191  23083  0 20:36 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=db02.err --pid-file=/usr/local/mysql/data/db02.pid
[root@db01 scripts]# netstat -lntp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      23191/mysqld        
[root@db01 scripts]# 
15)配置system管理MySQL服务
#1.配置system管理MySQL
[root@db01 ~]# vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/service/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

#2.重新加载启动文件列表
[root@db01 ~]# systemctl daemon-reload
16)system管理启动mysql
#1.system管理启动MySQL
[root@db01 ~]# systemctl start mysql
[root@db01 ~]# ps -ef | grep [m]ysql

#一定是启动失败的,因为不只有启动脚本里面指定了/usr/local,很多都有
[root@db01 scripts]# grep -r '/usr/local' /service/mysql/*

#怎么办?一个一个修改吗?
17)查看MySQL配置文件检索顺序
[root@db01 mysql]# /service/mysql/bin/mysql --help|grep 'my.cnf'
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 
18)配置my.cnf
#1.配置指定数据库安装目录与数据目录
[root@db01 scripts]# vim /etc/my.cnf
[mysqld]
basedir=/service/mysql
datadir=/service/mysql/data

#2.再次启动
[root@db01 scripts]# systemctl start mysql

#3.一定成功
19)配置环境变量直接使用mysql
[root@db01 ~]# vim /etc/profile.d/mysql.sh 
export PATH=/service/mysql/bin:$PATH
[root@db01 ~]# source /etc/profile

3.YUM安装

1)配置MySQL5.6的yum源
[root@db01 ~]# vim /etc/yum.repos.d/mysql-community.repo
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/x86_64/
enabled=1
gpgcheck=0
2)安装MySQL5.6
#安装之前先检查有其他版本,有就yum remove 之后在安装
[root@db01 ~]# rpm -qa |grep mysql


[root@db01 ~]# yum install mysql* mysql-server -y
3)启动MySQL
[root@db01 ~]# systemctl start mysql
1)配置MySQL5.7的yum源
[root@db01 ~]# vim /etc/yum.repos.d/mysql-community.repo
[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
2)安装MySQL5.7
#安装之前先检查有其他版本,有就yum remove 之后在安装
[root@db01 ~]# rpm -qa |grep mysql
[root@db01 ~]# yum install mysql* mysql-server -y

3)启动MySQL
[root@db01 ~]# systemctl start mysqld.service 

1)另外一种安装MySQL5.7需要过滤密码才能登录
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server
2)启动之后登录会报错
[root@db01 yum.repos.d]# systemctl start mysqld
[root@db01 yum.repos.d]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
3)过滤密码修改密码
#5.7之后升级为密码加密

[root@db01 ~]# cat /var/log/mysqld.log | grep password	#查看密码
 k1(%aIcNVF,x
 
 #登录数据库修改密码(必须是大小写字母加数字格式)
 [root@db01 yum.repos.d]# mysql -uroot -p'k1(%aIcNVF,x'
mysql> set password=password('Yang@123');
mysql> flush privileges;


#可以加入配置文件方便登录数据库
[root@db01 yum.repos.d]# vim /etc/my.cnf
[mysql]
user='root'
password='Yang@123'
[root@db01 yum.repos.d]# systemctl restart mysqld

#直接登录
[root@db01 yum.repos.d]# mysql

windows平台安装部署MySQL-5.7

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琴声浮或沉__听懂只一人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值