云计算第三阶段---DBA数据库管理

Day1

一.数据库概述

计算机中数据存放的仓库,可以按数据类型划分数据库,又可以在数据库中划分更细节的分类存放到相应的表中。

抽象来说就是生活中的菜市场、五金店之类的场所,根据用途开设;划分广泛的还有百货商场、批发市场等。

生活中的数据包括 图片、文字、视频、音乐等各种各种渠道信息。

数据库常见格式:.sql #方便后续学习过程中,数据库导入导出内容测试,

常见数据库系统有以下几种:

我上大学时候使用的是MySQLTomcat两种类型,同学们想要下载推荐都下个免费版,或者开源的免费版。因为在工作中有的数据库软件公司发现你用的是破解版,时机到了会找你索要赔偿。

 ̄□ ̄||

数据库类型分为:

#tomcat图形数据库,就需要建模,而建模需要换成收费版,有包括建模的更多功能#

二.部署MySQL服务

特点:

部署MySQL环境:

1 案例1:构建MySQL服务器

1.1 问题

  1. 在IP地址192.168.88.50主机和192.168.88.51主机上部署mysql服务
  2. 练习必备命令的使用

1.2 方案

准备2台虚拟机,要求如下:

表-1

#练习环境中,记得配置yum源、关闭selinux和防火墙

1.3 步骤

步骤一:安装软件

命令操作如下所示:
#装mysql-server自动补全依赖,以防万一,就一起下。

mysql-server 提供服务软件

mysql 提供命令软件

//安装提供服务和命令软件

root@mysql50 \~\]# yum -y install mysql-server mysql 软件已安装 \[root@mysql50 \~\]# rpm -q mysql-server mysql mysql-server-8.0.26-1.module+el8.4.0+652+6de068a7.x86_64 mysql-8.0.26-1.module+el8.4.0+652+6de068a7.x86_64 \[root@mysql50 \~\]# **//查看软件信息** \[root@mysql50 \~\]# rpm -qi mysql-server Name : mysql-server Version : 8.0.26 Release : 1.module+el8.4.0+652+6de068a7 Architecture: x86_64 Install Date: 2023年03月13日 星期一 12时09分38秒 Group : Unspecified Size : 126674945 License : GPLv2 with exceptions and LGPLv2 and BSD Signature : RSA/SHA256, 2021年09月22日 星期三 07时27分14秒, Key ID 15af5dac6d745a60 Source RPM : mysql-8.0.26-1.module+el8.4.0+652+6de068a7.src.rpm Build Date : 2021年09月22日 星期三 07时06分32秒 Build Host : ord1-prod-x86build005.svc.aws.rockylinux.org Relocations : (not relocatable) Packager : [email protected] Vendor : Rocky URL : http://www.mysql.com Summary : The MySQL server and related files Description : MySQL is a multi-user, multi-threaded SQL database server. MySQL is a client/server implementation consisting of a server daemon (mysqld) and many different client programs and libraries. This package contains the MySQL server and some accompanying files and directories. \[root@mysql50 \~\]# systemctl start mysqld **//启动服务** \[root@mysql50 \~\]# systemctl enable mysqld **//开机运行** #### **步骤二:查看端口号和进程名** 1. \[root@mysql50 \~\]# ps -C mysqld //仅查看mysqld进程 2. PID TTY TIME CMD 3. 21912 ? 00:00:00 mysqld 4. \[root@mysql50 \~\]# 5. \[root@mysql50 \~\]# ss -utnlp \| grep 3306 查看端口 6. tcp LISTEN 0 70 \*:33060 \*:\* users:(("mysqld",pid=21912,fd=22)) 7. tcp LISTEN 0 128 \*:3306 \*:\* users:(("mysqld",pid=21912,fd=25)) 8. \[root@mysql50 \~\]# 9. 或 10. \[root@mysql50 \~\]# netstat -utnlp \| grep mysqld //仅查看mysqld进程 11. tcp6 0 0 :::33060 :::\* LISTEN 21912/mysqld 12. tcp6 0 0 :::3306 :::\* LISTEN 21912/mysqld 13. \[root@mysql50 \~\]# **#MySQL 8中的3306端口是MySQL服务默认使用的端口,主要用于建立客户端与MySQL服务器之间的连接。** **支持协议: TCP。** **#两个配置文件都是可以tab补全的** ##### **主配置文件位置: /etc/my.cnf.d/mysql-server.conf** ##### 错误日志文件: /var/log/mysql/mysqld.log #### **步骤三:连接服务。** 说明: 数据库管理员本机登陆默认没有密码 1. \[root@mysql50 \~\]# mysql //连接服务 2. Welcome to the MySQL monitor. Commands end with ; or \\g. 3. Your MySQL connection id is 8 4. Server version: 8.0.26 Source distribution 5. 6. Copyright (c) 2000, 2021, Oracle and/or its affiliates. 7. 8. Oracle is a registered trademark of Oracle Corporation and/or its 9. affiliates. Other names may be trademarks of their respective 10. owners. 11. Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement. 12. mysql\> 登陆后的提示符 13. mysql\> exit //断开连接 14. Bye 15. \[root@mysql50 \~\]# **步骤四:配置第2台数据库服务器MySQL51。** 命令操作如下所示: 1. \[root@mysql51 \~\]# yum -y install mysql-server mysql 2. \[root@mysql51 \~\]# systemctl start mysqld 3. \[root@mysql51 \~\]# systemctl enable mysqld 4. \[root@mysql51 \~\]# mysql 5. mysql\> exit 6. Bye 7. \[root@mysql51 \~\]# ### **三.基础查询语句** #### **MySQL语句规范:** **-P:** 数据服务器端口 **-h:** IP地址 。 **exit:** 退出数据库 **ctrl+D**也可以退出。 **1.不区分大小写。 2.** 语句以**" ;" , "\\g", "\\G"** 结尾**。** **3.注释** : **单行注释 :"** **-- "** **多行注释:** **/\*** 内容 **/\*** #### **SQL语句分类** | DQL查询语句 | DML 操作语言 | **DDL 定义语言** | TCL 事务控制语言 | DCL 控制语言 | |---------------------|-----------------------------------|-----------------------------|--------------------------------------------------------------|-------------------------| | **【不修改本身数据】**select | insert插入数据、update更新数据、delete删除数据。 | create、alter、 drop。 针对:表库索引 | commit提交 ,rollback:回滚savepoint:设置保存点。 set transaction 设置事务特性 | grant:授予权限。 revoke:撤销权限 | ##### **查看MySQL版本:** select version(); ##### **查看系统时间:** select now(); ##### **查看当前用户:** select user(); ![](https://i-blog.csdnimg.cn/direct/0e7dfb77a31e409e8c97eb293f448f4e.png) #### **脚本案例:** 1. \[root@mysql50 \~\]# mysql //连接服务 2. mysql\> select version() ; //查看数据库软件版本 3. +-----------+ 4. \| version() \| 5. +-----------+ 6. \| 8.0.26 \| 7. +-----------+ 8. 1 row in set (0.00 sec) 9. 10. mysql\> select user() ; //查看登陆的用户和客户端地址 11. +----------------+ 12. \| user() \| 13. +----------------+ 14. \| root@localhost \| 管理员root本机登陆 15. +----------------+ 16. 1 row in set (0.00 sec) 17. mysql\> show databases; //查看已有的库 18. +--------------------+ 19. \| Database \| 20. +--------------------+ 21. \| information_schema \| 22. \| mysql \| 23. \| performance_schema \| 24. \| sys \| 25. +--------------------+ 26. 4 rows in set (0.00 sec) 27. 28. mysql\> **以下是MySQL自带数据库介绍** 默认4个库 不可以删除,存储的是 服务运行时加载的不同功能的程序和数据。 **information_schema:**是MySQL数据库提供的一个虚拟的数据库,存储了MySQL数据库中的相关信息,比如数据库、表、列、索引、权限、角色等信息。它并不存储实际的数据,而是提供了一些视图和存储过程,用于查询和管理数据库的元数据信息。 **mysql:**存储了MySQL服务器的系统配置、用户、账号和权限信息等。它是MySQL数据库最基本的库,存储了MySQL服务器的核心信息。 *** ** * ** *** #**MySQL** 数据库中有user表,里面有一个**user** 表,**想要在其他软件连接MySQL数据库,就需要设置该表的user=root 位置,host的localhost:本地 设置为 % . 意思:所有机器都可以登录#** *** ** * ** *** **performance_schema:**存储了MySQL数据库的性能指标、事件和统计信息等数据,可以用于性能分析和优化。 **sys:**是MySQL 8.0引入的一个新库,它基于information_schema和performance_schema视图,提供了更方便、更直观的方式来查询和管理MySQL数据库的元数据和性能数据。 1. mysql\> select database();**//查看当前在那个库里 null 表示没有在任何库里** 2. +------------+ 3. \| database() \| 4. +------------+ 5. \| NULL \| 6. +------------+ 7. 1 row in set (0.00 sec) 8. mysql\> use mysql ;**//切换到mysql库** 9. mysql\> select database(); **// 再次显示所在的库** 10. +------------+ 11. \| database() \| 12. +------------+ 13. \| mysql \| 14. +------------+ 15. 1 row in set (0.00 sec) 16. mysql\> show tables; **//显示库里已有的表** 17. +------------------------------------------------------+ 18. \| Tables_in_mysql \| 19. +------------------------------------------------------+ 20. \| columns_priv \| 21. \| component \| 22. \| db \| 23. \| default_roles \| 24. \| engine_cost \| 25. \| func \| 26. \| general_log \| 27. \| global_grants \| 28. \| gtid_executed \| 29. \| help_category \| 30. \| help_keyword \| 31. \| help_relation \| 32. \| help_topic \| 33. \| innodb_index_stats \| 34. \| innodb_table_stats \| 35. \| password_history \| 36. \| plugin \| 37. \| procs_priv \| 38. \| proxies_priv \| 39. \| replication_asynchronous_connection_failover \| 40. \| replication_asynchronous_connection_failover_managed \| 41. \| replication_group_configuration_version \| 42. \| replication_group_member_actions \| 43. \| role_edges \| 44. \| server_cost \| 45. \| servers \| 46. \| slave_master_info \| 47. \| slave_relay_log_info \| 48. \| slave_worker_info \| 49. \| slow_log \| 50. \| tables_priv \| 51. \| time_zone \| 52. \| time_zone_leap_second \| 53. \| time_zone_name \| 54. \| time_zone_transition \| 55. \| time_zone_transition_type \| 56. \| user \| 57. +------------------------------------------------------+ 58. 37 rows in set (0.00 sec) 59. mysql\> exit ; **断开连接** 60. Bye 61. \[root@mysql50 \~\]# #### **设置数据库登录账号密码** ### 案例2:密码管理 #### 2.1 问题 1) 在192.168.88.50主机做如下练习: 1. 设置root密码为123 2. 修改root密码为 456 3. 破解root密码为 123456 #### **设置root密码为123** 1. \[root@mysql50 \~\]# mysqladmin -uroot -p password "123" 2. Enter password: //敲回车 3. mysqladmin: \[Warning\] Using a password on the command line interface can be insecure. 4. Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety 5. **#设置完成后,不能直接用MySQL 进入数据库。需要使用用户密码。** #### **修改root密码为 456** 1. \[root@mysql50 \~\]# mysqladmin -uroot -p123 password "456" 2. mysqladmin: \[Warning\] Using a password on the command line interface can be insecure. 3. Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety. **#修改新密码后,旧密码作废,需要设置新密码登录。** *** ** * ** *** #### 破解root密码 在mysql50主机做此练习 **修改主配置文件** 1. \[root@mysql50 \~\]# vim /etc/my.cnf.d/mysql-server.cnf 2. \[mysqld

  1. skip-grant-tables //手动添加此行 作用登陆时不验证密码
  2. ......
  3. ......
  4. :wq
  5. root@mysql50 \~\]# systemctl restart mysqld //重启服务 让服务以新配置运行

连接服务

  1. root@mysql50 \~\]# mysql

  2. Your MySQL connection id is 7
  3. Server version: 8.0.26 Source distribution
  4. Copyright (c) 2000, 2021, Oracle and/or its affiliates.
  5. Oracle is a registered trademark of Oracle Corporation and/or its
  6. affiliates. Other names may be trademarks of their respective
  7. owners.
  8. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

查看存放密码的表头名

  1. Mysql> desc mysql.user ;

删除不知道的密码

  1. mysql> update mysql.user set authentication_string="" where user="root" and host="localhost";

删除后的效果

  1. mysql> select host , user , authentication_string from mysql.user where user="root";
  2. +-----------+------+-------------------------------------------+
  3. | host | user | authentication_string |
  4. +-----------+------+-------------------------------------------+
  5. | localhost | root | |
  6. +-----------+------+-------------------------------------------+
  7. 1 row in set (0.01 sec)
  8. mysql> exit; 断开连接

编辑配置文件

  1. root@mysql50 \~\]# vim /etc/my.cnf.d/mysql-server.cnf

  2. #skip-grant-tables //破完密码需要添加注释。

  3. :wq

  4. root@mysql50 \~\]# systemctl restart mysqld //重启服务 作用让注释生效

  5. root@localhost \~\]# mysql

  6. Your MySQL connection id is 8

  7. Server version: 8.0.26 Source distribution

  8. Copyright (c) 2000, 2021, Oracle and/or its affiliates.

  9. Oracle is a registered trademark of Oracle Corporation and/or its

  10. affiliates. Other names may be trademarks of their respective

  11. owners.

  12. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


设置root用户本机登陆密码

  1. mysql> alter user root@"localhost" identified by "123456";
  2. Query OK, 0 rows affected (0.00 sec)
  3. mysql> exit 断开连接

不输密码无法登陆

  1. root@localhost \~\]# mysql

使用破解的密码登陆

  1. root@localhost \~\]# mysql -uroot -p123456

  2. Welcome to the MySQL monitor. Commands end with ; or \g.
  3. Your MySQL connection id is 10
  4. Server version: 8.0.26 Source distribution
  5. Copyright (c) 2000, 2021, Oracle and/or its affiliates.
  6. Oracle is a registered trademark of Oracle Corporation and/or its
  7. affiliates. Other names may be trademarks of their respective
  8. owners.
  9. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  10. mysql>
  11. mysql> 登陆成功
  12. mysql> show databases; 查看已有的库
  13. +--------------------+
  14. | Database |
  15. +--------------------+
  16. | information_schema |
  17. | mysql |
  18. | performance_schema |
  19. | sys |
  20. +--------------------+
  21. 4 rows in set (0.01 sec)
  1. root@localhost \~\]# mysql


案例3:筛选条件

#没有文件的话,可以看看。或者网上下几个来测试。知识点是想通的#

3.1 问题

  1. 准备练习环境
  2. 练习数值比较
  3. 练习范围匹配
  4. 练习模糊匹配
  5. 练习正则匹配
  6. 练习逻辑比较
  7. 练习字符比较/空/非空
  8. 练习别名/去重/合并

3.2 方案

拷贝tarena.sql文件到mysql50主机里,然后使用tarena.sql创建练习使用的数据。

3.3 步骤

实现此案例需要按照如下步骤进行。#这是我们上课的教学环境。#

步骤一:准备练---+

步骤八:练习别名/去重/合并

定义别名使用 as 或 空格

复制代码
  1. mysql> select name , homedir from tarena.user;
  2. mysql> select name as 用户名 , homedir 家目录 from tarena.user;

拼接 concat()

复制代码
  1. mysqlcat(name,"-",uid) as 用户信息 from tarena.user where uid <= 5;
  2. +--------------+
  3. |
  4. | bin-1 |
  5. | daemon-2 |
  6. | adm-3 |
  7. | lp-4 |
  8. | sync-5 |
  9. +--------------+
  10. 6 rows in set (0.00 sec)
  11. //拼接
  12. mysql> select concat(name , "-" , uid) as 用户信息 from tarena.user where uid <= 5;

多列拼接

复制代码
  1. mysql> select concat(name , "-" , uid , "-" , gid) as 用户信息 from tarena.user where uid <= 5;
  2. +--------------+
  3. | 用户信息 |
  4. +--------------+
  5. | root-0-0 |
  6. | bin-1-1 |
  7. | daemon-2-2 |
  8. | adm-3-4 |
  9. | lp-4-7 |
  10. | sync-5-0 |
  11. +--------------+

去重显示 distinct 字段名列表

复制代码
  1. //去重前输出
  2. mysql> select shell from tarena.user where shell in ("/bin/bash","/sbin/nologin") ;
  3. +---------------+
  4. | shell |
  5. +---------------+
  6. | /bin/bash |
  7. | /sbin/nologin |
  8. | /sbin/nologin |
  9. | /sbin/nologin |
  10. | /sbin/nologin |
  11. | /sbin/nologin |
  12. | /sbin/nologin |
  13. | /sbin/nologin |
  14. | /sbin/nologin |
  15. | /sbin/nologin |
  16. | /sbin/nologin |
  17. | /sbin/nologin |
  18. | /sbin/nologin |
  19. | /sbin/nologin |
  20. | /sbin/nologin |
  21. | /sbin/nologin |
  22. | /sbin/nologin |
  23. | /sbin/nologin |
  24. | /sbin/nologin |
  25. | /sbin/nologin |
  26. | /bin/bash |
  27. | /sbin/nologin |
  28. +---------------+
  29. 22 rows in set (0.00 sec)
  30. //去重后查看
  31. mysql> select distinct shell from tarena.user where shell in ("/bin/bash","/sbin/nologin") ;
  32. +---------------+
  33. | shell |
  34. +---------------+
  35. | /bin/bash |
  36. | /sbin/nologin |
  37. +---------------+
  38. 2 rows in set (0.01 sec)
  39. mysql>

4 案例4:安装图形软件

#可以在网络服务器上设置 数据库的增删改查

4.1 问题

  • 在IP地址192.168.88.50主机安装phpmyadmin软件
  • 客户端通过访问phpmyadmin软件管理数据库

4.2 方案

把用到的软件拷贝的虚拟机mysql50里

在mysql50主机,首先配置运行环境LNP,然后安装phpmyadmin软件,最后打开真机的浏览器输入phpmyadmin的网址访问。

4.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:准备运行环境

命令操作如下所示:

  1. gcc 源码包编译工具

  2. unzip 提供解压.zip 压缩包命令

  3. make 源码软件编译命令

  4. pcre-devel 支持正则表达式

  5. zlib-devel 提供数据压缩命令

  6. root@mysql50 \~\]# yum -y install gcc unzip make pcre-devel zlib-devel //安装依赖

  7. root@mysql50 \~\]# cd nginx-1.22.1 //进源码目录

  8. root@mysql50 nginx-1.22.1\]# make \&\& make install //编译并安装

  9. conf html logs sbin

  10. //修改主配置文件

  11. root@mysql50 nginx-1.22.1\]# vim /usr/local/nginx/conf/nginx.conf

  12. 44 root html;

  13. 45 index index.php index.html index.htm; //添加首页名

  14. 46 }

  15. 65 location ~ \.php$ {

  16. 66 root html;

  17. 67 fastcgi_pass 127.0.0.1:9000; //访问.php的请求转给本机的9000端口

  18. 68 fastcgi_index index.php;

  19. 69 #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

  20. 70 include fastcgi.conf; //保存nginx变量文件

  21. 71 }

  22. :wq

  23. root@mysql50 nginx-1.22.1\]# /usr/local/nginx/sbin/nginx //启动服务

  24. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 42182/nginx: master

  25. root@mysql50 nginx-1.22.1\]#

  26. php 解释php代码

  27. php-devel php扩展包

  28. php-mysqlnd 连接mysql命令包

  29. php-json 支持json代码

  30. php-fpm 提供fpm服务

安装软件

  1. root@mysql50 \~\]# yum -y install php php-devel php-mysqlnd php-json php-fpm

  2. root@mysql50 \~\]# vim +38 /etc/php-fpm.d/www.conf

  3. :wq

  4. root@mysql50 \~\]# systemctl start php-fpm //启动服务

复制代码
  1. root@mysql50 \~\]# netstat -utnlp \| grep 9000

  2. root@mysql50 \~\]#

  3. root@mysql50 \~\]# vim /usr/local/nginx/html/test.php

  4. $name = "qq" ;

  5. echo $name ;

  6. echo "\n" ;

  7. ?>

步骤二:安装phpmyadmin软件

解压软件

  1. root@mysql50 \~\]# which unzip \|\| yum -y install unzip

移动并改名

  1. root@mysql50 \~\]# mv phpMyAdmin-5.2.1-all-languages /usr/local/nginx/html/phpmyadmin

  2. root@mysql50 \~\]# cd /usr/local/nginx/html/phpmyadmin/

步骤三:客户端访问

打开浏览器输入此网址 效果如图-1所示

http://192.168.88.50/phpmyadmin

说明:输入数据库管理员root 和 密码 成功后如图-2所示

在数据库服务器里创建普通用户

  1. 创建库
  2. mysql> create database gamedb;
  3. Query OK, 1 row affected (0.01 sec)
  4. 创建用户
  5. mysql> create user dc@"localhost" identified by "123456";
  6. Query OK, 0 rows affected (0.01 sec)
  7. 授权权限
  8. mysql> grant all on gamedb.* to dc@"localhost" ;
  9. Query OK, 0 rows affected (0.00 sec)
  10. mysql>

客户端以上用户密码 登陆 mysqladmin

可以看到


第一天涉及到的内容太多了,软件依赖下载,配置 mysqladmin,mysql 和 具体语法的介绍,还有密码用户的授权管理。

后续内容我放到下几篇文章,不然眼睛看不过来了。O(∩_∩)O

相关推荐
RestCloud4 小时前
4中常见的数据集成方式
数据库
Databend5 小时前
超 10 倍查询加速,N-Gram Index 设计与优化全解析
数据库
爱可生开源社区6 小时前
SCALE:一个面向专业级任务的大语言模型 SQL 能力开源评测框架
数据库
Jooolin6 小时前
【Linux】虚拟机、服务器、双系统,谁才是 Ubuntu 的最佳方案?
linux·ubuntu·ai编程
星环科技TDH社区版6 小时前
星环科技产品可存储的表格式功能介绍以及创建示例
大数据·数据库
容器魔方7 小时前
华为云亮相 KubeCon China 2025,开源生态引领 AI 时代技术跃迁
云原生·容器·云计算
Tapdata10 小时前
全球 DaaS 市场研究报告上线,聚焦数据服务化趋势与行业演进路径
数据库
K·Herbert11 小时前
最新CentOS 7 yum源失效的解决方案(2025年6月)
linux·运维·centos
李少兄11 小时前
MySQL 默认连接数
数据库·mysql
刘一说11 小时前
资深Java工程师的面试题目(六)数据存储
java·开发语言·数据库·面试·性能优化