首页 > 数据库 >mysql阶段02 数据库基本操作, 误删用户案例解决, 数据库体系结构, mysql服务构成, mysql的逻辑/物理结构

mysql阶段02 数据库基本操作, 误删用户案例解决, 数据库体系结构, mysql服务构成, mysql的逻辑/物理结构

时间:2024-06-05 22:13:53浏览次数:27  
标签:数据库 mysql user db03 基本操作 root 连接

一、数据库基本操作

1.设置数据库密码

[root@db03 ~]# mysqladmin -uroot password '123456'

2.使用密码登录

#1.正确的登录方式
[root@db03 ~]# mysql -uroot -p123456
[root@db03 ~]# mysql -u root -p123456

#2.错误的登录方式
[root@db03 ~]# mysql -u root -p 123456

#3.原因:
#如果使用-p或者--password参数,他们与密码之间不能有空格
#如果只写-p或者--password参数什么都不接,意思是让你手动输入密码

#4.登录数据库直接进行库
[root@db03 ~]# mysql -u root -p mysql

3.查询用户

mysql> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
|      | db03      |
| root | db03      |
|      | localhost |
| root | localhost |
+------+-----------+
6 rows in set (0.00 sec)

4.删除用户(优化)

mysql> drop user root@'::1';
Query OK, 0 rows affected (0.00 sec)

mysql> drop user ''@'db03';
Query OK, 0 rows affected (0.00 sec)

mysql> drop user ''@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | db03      |
| root | localhost |
+------+-----------+
3 rows in set (0.00 sec)

 

二、企业中误删除

1.不小心执行了删除所有用户的命令

mysql> delete from mysql.user where 1=1;
Query OK, 3 rows maffected (0.00 sec)

mysql> select user,host from mysql.user;
Empty set (0.00 sec)

#删除所有用户后还是可以登录,重启后登录失效
[root@db03 ~]# systemctl restart mysql
[root@db03 ~]# mysql -uroot -p123456
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

2.解决办法

1)停止数据库

[root@db03 ~]# systemctl stop mysql

2)跳过授权表和网络启动数据库

#1.跳过授权表启动(不推荐)   &后台启动
[root@db03 ~]# mysqld_safe --skip-grant-tables &

#2.跳过授权表与网络启动数据库(只允许本机连接)
[root@db03 ~]# mysqld_safe --skip-grant-tables --skip-networking &

#注意:只跳过授权表登录很不安全,任何人都可以远程登录,所以还要限制只允许本机登录数据库

#如果要停止 mysqladmin shutdown

3)插入用户数据

#1.切换到mysql库
mysql> use mysql;

#2.插入用户数据
mysql> insert into mysql.user values ('localhost','root',PASSWORD('123456'),
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'',
'',
'',
'',0,0,0,0,'mysql_native_password','','N');

#3.查看用户
mysql> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.00 sec)

4)正常启动数据库测试

[root@db03 ~]# mysqladmin shutdown
[root@db03 ~]# systemctl start mysql
[root@db03 ~]# mysql -uroot -p123456
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.46 MySQL Community Server (GPL)
...

3.另一种解决方法

1)停止数据库

2)跳过授权表和网络登录

3)直接授权创建新用户

#刷新系统权限注册表
mysql> flush privileges;
#授权一个新用户,要特别加上grant权限,否则没有
mysql> grant all on *.* to root@'localhost' identified by '123456' with grant option;

 

三、mysql体系结构管理

1.客户端与服务器模型

1)mysql是一个典型的C/S服务结构

1.mysql自带的客户端程序(/usr/local/mysql/bin)
    mysql
    mysqladmin
    mysqldump
    
2.mysqld一个二进制程序,后台的守护进程
    单进程
    多线程

2)mysql的两种连接方式

1.TCP/IP的连接方式
2.套接字连接方式,也就是socket连接

3.举例 (通过status可以查看连接方式)
    3.1    TCP/IP连接
    mysql -uroot -p -h127.0.0.1
    mysql -uroot -p -h127.0.0.1 -S /tmp/mysql.sock
    3.2    socket连接
    mysql -uroot -p -hlocalhost
    mysql -uroot -p123456
    
4.注意:
    4.1    -h后跟IP地址是TCP/IP连接,-hlocalhost就是socket连接
    4.2 socket连接速度比TCP/IP连接快,因为TCP/IP连接需要建立三次握手

 

四、mysql服务构成

1.实例

1.MySQL的后台进程+线程+预分配的内存结构
2.MySQL在启动的过程中会启动后台守护进程,并生成工作线程,预分配内存结构供MySQL处理数据使用。

3.什么是实例?
    一个进程 + 多个线程 + 分配内存空间
4.多实例?
    多个进程 + 多个线程 + 分配内存空间

2.mysqld服务器程序构成

mysqld是一个守护进程

1)连接层

1.验证用户的身份,用户名密码是否匹配
2.提供两种连接方式(TCP/IP连接、socket连接)
3.连接层提供了一个与sql层交互的线程

2)SQL层

1.接收连接层传过来的SQL语句
2.验证执行的SQL语法
3.验证SQL的语义(DDL,DML,DQL,DCL)
4.解析器:解析SQL语句,生成执行计划
5.优化器:将解析器传来的执行计划选择最优的一条执行
6.执行器:将最优的一条执行
    6.1 与存储引擎层建立交互的线程
    6.2 将要执行的sql发给存储引擎层
7.如果有缓存,则走缓存
8.记录日志(binlog)

3)储存引擎层

1.接收SQL层传来的语句
2.与磁盘交互,获取数据,返回给sql层
3.建立与sql层交互的线程

 

五、mysql的结构

1.mysql的逻辑结构

1、库
2、表:元数据+真实数据行
3、元数据:列+其他属性 (行数+占用空间大小+权限)
4、列:列名字+数据类型+其他约束(非空、唯一、主键、非负数、自增长、默认值)

2.mysql物理结构

1)MySQL的最底层的物理结果是数据文件,也就是说,存储引擎层,打交道的文件,是数据文件。
2)存储引擎分为很多种类(Linux中的FS)
3)不同存储引擎的区别:存储方式、安全性、性能

#注意:开发创建数据库及表的时候全都要小写

 

标签:数据库,mysql,user,db03,基本操作,root,连接
From: https://www.cnblogs.com/ludingchao/p/18234000

相关文章

  • node.js + mysql实现基本的增删改查功能(保姆级教程---1)
    node.js+mysql实现基本的增删改查(保姆级教程---1)工具:sqlyog可视化工具,vscode,nodejs环境(我的node.js版本号是18.16.0)前提条件:电脑上要有node.js、npm、mysql服务器、可视化工具(navicat或sqlyog都行)步骤:新建文件夹node-mysql-cruid(根目录),终端打开该目录初始化项目:npm......
  • node.js + mysql实现基本的增删改查功能(保姆级教程---2优化版)
    node.js+mysql实现基本的增删改查(保姆级教程---2优化版)上一个实现对增删改查功能都写在同一个文件里,代码过于冗余,我认为可以优化,分开写在不同文件里面,使得更加直观。废话不多说,直接进入主题:对之前的代码进行抽离:db.js文件(用于数据库的连接,并导出连接供其他模块使用):......
  • Oracle数据库面试题-6
    1.请解释Oracle数据库中的SGA和PGA的区别。Oracle数据库中的SGA和PGAOracle数据库中的SGA(SystemGlobalArea)和PGA(ProgramGlobalArea)是数据库内存管理的两个核心区域,它们在数据库性能和资源分配方面扮演着不同的角色。SGA(SystemGlobalArea)全局内存区域:SGA......
  • Oracle数据库面试题-5
    81.请解释Oracle数据库中的自动空间重新压缩(AutomaticSpaceRecompression)的概念。Oracle数据库中的自动空间重新压缩(AutomaticSpaceRecompression)自动空间重新压缩是Oracle数据库中的另一个重要特性,它用于减少数据文件的大小,回收未使用的存储空间。这个过程通过压......
  • JavaWeb_MySQL数据库
    数据库:MySQL数据模型:    MySQL是关系型数据库。SQL:简介分类:数据库设计-DDL对数据库操作:表操作:小练习:    创建下表SQL代码:createtabletb_user(idintprimarykeyauto_incrementcomment'ID,唯一标识',usernameva......
  • Flask Web开发基础:数据库与ORM实战
    FlaskWeb开发基础:数据库与ORM实战该文介绍了如何使用Flask、SQLAlchemy和SQLite实现数据库操作。首先,通过创建虚拟环境和安装flask-sqlalchemy(版本2.5.1)及sqlalchemy(版本1.4.47)来设置环境。接着,配置数据库URI,定义User和Movie模型类表示数据库表,并通过db.create_all......
  • 【包邮送书】不同数据库背后的数据存储方案
    欢迎关注博主Mindtechnist或加入【智能科技社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关注公粽号《机器和智能》回复关键词“python项目实战......
  • 在Windows上安装mysql-8.0.28-winx64.zip
    1.解压2.配置文件点击查看代码MicrosoftWindows[版本10.0.17763.316](c)2018MicrosoftCorporation。保留所有权利。D:\mysql\bin>mysqldinstallmysql8Servicesuccessfullyinstalled.D:\mysql\bin>mysqld--initialize-insecureD:\mysql\bin>mysql-uroot......
  • 请自行构建一个Mysql容器并将Python开发数据保存到此数据库 用户名数据库名不限制
    下面是一个完整的示例,展示如何构建一个MySQL容器,并使用Python脚本将数据保存到数据库中。启动MySQLDocker容器首先,确保Docker已经安装。然后打开终端或命令提示符,运行以下命令来拉取MySQLDocker镜像并启动容器:dockerpullmysql:latestdockerrun--namemy-mys......
  • mysql 查询数据库响应时长的方法
    要查询MySQL数据库的响应时长,通常我们需要测量查询执行的时间。MySQL本身并不直接提供一个查询来显示每个查询的响应时长历史记录,但我们可以使用MySQL的内置函数和工具来测量和记录查询的执行时间。以下是一些方法,我们可以用来测量MySQL查询的响应时长:1.使用SHOWPROFILES(注意......