企业级 MySQL数据库的搭建及管理

阿里云服务器优惠

数据库简介

数据库(英文Dtabase)就是一个存放数据的仓库,这个仓库是按照一定的数据结果(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的、我们可以通过数据库提供的多种方法来管理数据库里的数据更简单的形象理解,更简单的来说数据库其实就是一个高级的Excel 表格。

而在当今的互联网中,最常用的数据库模型主要是两种,即关系型数据库和非关系型数据库。

(一)关系型数据库

关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。 Oracle 在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大市场,而MySQL也是不容忽视的数据库,以至于被Oracle重金收购 。

MySQL 互联网市场 (而我今天要部署的就是mysql 数据库分支的 mariadb 数据库。)
Oracle 传统企业

(二)非关系型数据库

非关系型数据库也被成为NoSQL数据库,NOSQL的本意是“Not Olnly SQL” 。随着互联网Web2.0网站的星期,传统的关系型数据库在应付web2,0网站,特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。 NOSQL(非关系型)类的数据就是在这样的情景下诞生并得到了非常迅速的发展 。

高性能、高并发、对数据一致性要求不高
开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了广泛认同,Redis,mongb也逐渐越来越受到各类大中小型公司的欢迎和追捧

NOSQL非关系型数据库小结:
1、NOSQL不是否定关系数据库,而是作为关系数据库的一个重要补充
2、NOSQL为了高性能、高并发而生,忽略影响高性能,高并发的功能
3、NOSQL典型产品memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库)

搭建数据库环境

1 . 安装数据库软件

yum install mariadb-server -y

image.png

  1. 运行数据库软件
  systemctl start mariadb

image.png

mysql -uroot 可进入数据库
3. 安全初始化的配置

mysql_secure_installation

image.png
image.png

初始化的myaql数据库管理员并没有任何密码,按回车进行下一步,设置root用户的密码,为了安全剩下的都选y

  1. 查看数据库在网络中对外的接口
 netstat -antlupe | grep mysql
 ```
![image.png](https://i.loli.net/2021/07/13/mnFSU9d6HAPQ7Iq.png)

 vim /etc/my.cnf   ##如果我们的数据库对外开通网络接口,那我们的数据是非常不安全的。需要关闭数据库在网络中的对外接口。

写入skip-networking=1
systemctl restart mariadb.service
netstat -antlupe | grep mysql ##重启 数据库,查看网络接口状态


![image.png](https://i.loli.net/2021/07/13/JIGPYsWEUeRlmKo.png) 5. 用户登陆测试

mysql -uroot
mysql -uroot -p

![image.png](https://i.loli.net/2021/07/13/Oe3gWXrJcICam8n.png)


需要认证。

### 数据库的管理
mysql -uroot -p 该命令登陆数据库

1. SHOW DATABASES;   ##列出存在的库
![image.png](https://i.loli.net/2021/07/13/TSnf9chI5D6WBvt.png)


2. CREATE DATABASE westos;   ##新建库westos
![image.png](https://i.loli.net/2021/07/13/1jVaYzGRuMfIXki.png)


3. USE westos;  进入westos库
![image.png](https://i.loli.net/2021/07/13/Fk839xUAB12HwcL.png)

4. MariaDB [westos]> CREATE TABLE linux (    ##新建表linux,包含两个字段 username 和 password
    -> username varchar(10) not null,
    -> password varchar(10) not null
    -> );
![image.png](https://i.loli.net/2021/07/13/5tdDZ4juMAkNOVr.png)

5. SHOW TABLES;  ##查看表
![image.png](https://i.loli.net/2021/07/13/QKJhrCumjHonGqx.png)

6.  DESC linux;         ##查看表结构
![image.png](https://i.loli.net/2021/07/13/OJpranwQ8vPoh1b.png)

7. INSERT INTO  linux VALUES ('lee','456');       ##向表中存储数据
![image.png](https://i.loli.net/2021/07/13/qxzmIFULAN9t5OG.png)

8. SELECT * FROM linux;      ##查询linux表中所有字段
![image.png](https://i.loli.net/2a021/07/13/EC8rYPmO5Flq3dG.png)


   SELECT username FROM linux;         ##查询linux表中username字段
![image.png](https://i.loli.net/2021/07/13/avLZMc2tPODx74E.png)


9. 在linux 表中增加 age 字段(默认添加到最后)
ALTER TABLE linux ADD age varchar(4);
![image.png](https://i.loli.net/2021/07/13/7AXuHEDPW1tcYlq.png)

ALTER TABLE linux DROP age;      ##删除表中的age 字段

![image.png](https://i.loli.net/2021/07/13/Kd5hBDzt6xPlYi8.png)

在linux 表中增加 age 字段,并指定其位置在username 之后
ALTER TABLE linux ADD age varchar(4) AFTER username;
![image.png](https://i.loli.net/2021/07/13/taERuBOI2KpChgX.png)


10 . 修改表中age属性的值(默认全部修改)

UPDATE linux SET age='20';
SELECT * FROM linux;
![image.png](https://i.loli.net/2021/07/13/gOqRalGnXSZA9MP.png)


修改表中指定位置的 age 属性(满足 username=gq)
UPDATE linux SET age='18' WHERE username='gq';
SELECT * FROM linux;
![image.png](https://i.loli.net/2021/07/13/K3VsSb42zk9C7YR.png)


11 . 删除数据列表及库
DELETE FROM linux  WHERE username='gq';    删除表中满足条件的某一行
![image.png](https://i.loli.net/2021/07/13/q3tC2h4QvPHS5cV.png)


DROP TABLE linux;                                                   删除表

![image.png](https://i.loli.net/2021/07/13/CjLxh4nQYO6HEuU.png)
DROP DATABASE westos;                                     删除库
![image.png](https://i.loli.net/2021/07/13/qevyu6jNcTo8WHw.png)


### 数据库的访问控制
1. 创建数据库用户lee ,登陆密码lee,并查看数据库中的所有用户

![image.png](https://i.loli.net/2021/07/13/KdV7tC8f9mwSJex.png)

2. lee 用户登陆数据库(无法查看 库信息)
![image.png](https://i.loli.net/2021/07/13/WcMiVzY482QEDdU.png)


3. 显示lee 对数据库所有的权限

![image.png](https://i.loli.net/2021/07/13/swe9uOGycNQzLrB.png)

4. 授权(GRANT  权限   on westos.*   TO  lee@localhost;)

>对lee用户添加创建表的权限GRANTCREATE on westos.* TO lee@localhost;
对lee用户添加删除表信息的权限GRANT DELETE on westos.* TO lee@localhost;
对lee用户添加删除表的权限GRANT DROP on westos.* TO lee@localhost;


GRANT SELECT on westos.*  TO  lee@localhost;   授予lee 列出 westos 库中表权限

![image.png](https://i.loli.net/2021/07/13/9XKDrl8FnBAmzRh.png)

测试

![image.png](https://i.loli.net/2021/07/13/l4ne21voIxtWkq9.png)

5. 去除授权
REVOKE DELETE on westos.* FROM lee@localhost;   撤销用户的DELETE权限

REVOKE CREATE on westos.*  FROM lee@localhost;        去除lee用户创建表的权限

REVOKE SELECT on westos.*  FROM lee@localhost;        去除lee用户查看库信息的权限

![image.png](https://i.loli.net/2021/07/13/eQtuaSvLlwof4pr.png)

REVOKE DROP on westos.*  FROM lee@localhost;             去除lee用户添加删除表的权限
6. 清除用户

![image.png](https://i.loli.net/2021/07/13/Q5P3B6ULrsNO9fw.png)

### 数据备份与恢复
(备份)

1. 备份所有库(包括框架和内容)

[root@target ~]# mysqldump -uroot -predhat –all-databases > /westos/alldate

2. 备份框架

[root@target ~]# mysqldump -uroot -predhat –all-databases –no-data > /westos/allshuju

3. 备份指定westos库到指定位置

[root@target ~]# mysqldump -uroot -predhat westos > /westos/westos
“`
image.png

(恢复)

删除库westos, 测试无法列出 westos 库

image.png
image.png

因为数据库中已经没有westos这个数据库了,所以恢复的时候会报错

第一种方式恢复:先创建一个库再恢复

image.png

第二种恢复方式:

编辑vim /westos/westos

写入CREATE DATABASE westos;
USE westos;

image.png

image.png

数据库密码管理

  1. 知道密码想要更改数据库密码
    image.png

image.png

2.忘记密码
1. > systemctl stop mariadb.service ##关闭数据库
image.png

  1. >mysqld_safe –skip-grant-tables & ##跳过授权表直接登陆数据库,打入后台
    image.png
  2. mysql ##直接登陆数据库
    UPDATE mysql.user SET Password=Password(‘redhat’) WHERE User=’root’; ##修改数据库超级用户密码,密码是以密文显示
    image.png

  3. 查看mysql的所有进程,并结束掉

[root@target ~]# ps aux | grep mysql
[root@target ~]# kill -9 2028 清掉数据库的进程

image.png

  1. >打开数据库,用新密码登陆
    image.png

登陆成功!!!

安装phpmyadmin 数据库图形管理

  1. 安装 apach

image.png

开启服务

[root@target ~]# systemctl start httpd

  1. 下载适合自己主机版本的phpMyAdmin,我的已经下好了,直接安装就可以了。

image.png

tar jxf phpMyAdmin-2.11.3-all-languages.tar.bz2 解压
image.png
mv phpMyAdmin-2.11.3-all-languages/ mysqladmin 给解压文件重命名
image.png
3. 安装php 和 php-mysql 软件
image.png
image.png

php -m 查看php支持的服务
4 . 进入mysqladmin目录下,根据模板,创建config.inc.php

image.png
less Documentation.txt
image.png

vim config.inc.php

image.png
5. systemctl restart httpd ##重启apach 服务

测试

在真机网页编辑
http://172.25.254.102/mysqladmin
进入数据库图形管理界面

image.png
image.png
有时候界面出不来是因为缓存的原因
清除缓存的方法:ctrl+shift+delete