MySQL用户管理和高级SQL语句

 一、用户管理

1.新建用户

mysql> create user 'zhangsan'@'localhost' identified by 'pwd123';
Query OK, 0 rows affected (0.00 sec)mysql> create user 'lisi'@localhost identified by 'pwd123';
Query OK, 0 rows affected (0.00 sec)mysql> create user 'wangwu'@'localhost' identified by 'pwd123';
Query OK, 0 rows affected (0.00 sec)

备注:
localhost:本地主机,可以使用IP地址,网段,主机名形式。用户可以从任意远程主机登录可以使用%。

创建的用户在MySQL数据库user里,使用查询语句可以查询创建的用户。

mysql> use mysql;
Database changedmysql> select * from user\G
或
mysql> select  user,authentication_string from user;
+---------------+-------------------------------------------+
| user          | authentication_string                     |
+---------------+-------------------------------------------+
| root          | *353C33BC20A4B4B2281F3DAAE901DBD0A5224E24 |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| zhangsan      | *353C33BC20A4B4B2281F3DAAE901DBD0A5224E24 |
| lisi          | *353C33BC20A4B4B2281F3DAAE901DBD0A5224E24 |
| wangwu        | *353C33BC20A4B4B2281F3DAAE901DBD0A5224E24 |
+---------------+-------------------------------------------+
6 rows in set (0.00 sec)

2.删除用户

mysql> drop user 'wangwu'@localhost;
Query OK, 0 rows affected (0.01 sec)mysql> select  user,authentication_string from user;
+---------------+-------------------------------------------+
| user          | authentication_string                     |
+---------------+-------------------------------------------+
| root          | *353C33BC20A4B4B2281F3DAAE901DBD0A5224E24 |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| zhangsan      | *353C33BC20A4B4B2281F3DAAE901DBD0A5224E24 |
| lisi          | *353C33BC20A4B4B2281F3DAAE901DBD0A5224E24 |
+---------------+-------------------------------------------+
5 rows in set (0.00 sec)
或
mysql> delete from mysql.user where user='zhangsan';
Query OK, 1 row affected (0.01 sec)

备注:
直接使用delete也可以进行删除。drop不仅删除了用户,而且还对相关权限也进行删除;delete只删除用户,权限依旧保留存在。

如果是同一个名称,多个账户。权限,登陆方式不同,需要在之后+and
mysql> delete from mysql.user where user='zhangsan'  and host='localhost'
语法解读:删除本地登陆的zhangsan。

3.重命名用户

mysql> rename user'zhangsan'@localhost to 'zhaoliu'@localhost;
Query OK, 0 rows affected (0.00 sec)mysql> select  user,authentication_string from user;
+---------------+-------------------------------------------+
| user          | authentication_string                     |
+---------------+-------------------------------------------+
| root          | *353C33BC20A4B4B2281F3DAAE901DBD0A5224E24 |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| zhaoliu       | *353C33BC20A4B4B2281F3DAAE901DBD0A5224E24 |
| lisi          | *353C33BC20A4B4B2281F3DAAE901DBD0A5224E24 |
+---------------+-------------------------------------------+
5 rows in set (0.00 sec)

4.修改密码

(1)修改root登陆密码

方法一:当前登录者的密码

mysql> set password=password('pwd321');
Query OK, 0 rows affected, 1 warning (0.00 sec)

 方法二:

[root@localhost ~]# mysqladmin -uroot -ppwd123 password '123456'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

备注:
-ppwd123 旧密码;password '123456'  新密码。
会存在警告信息:提醒您在命令行 输入密码会不安全。

(2)root修改普通用户密码

方法一:

mysql> set password for 'lisi'@'localhost'=password('pwd321');
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> set password for 'zhaoliu'@'localhost'=password('pwd123');
Query OK, 0 rows affected, 1 warning (0.01 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

方法二: 

mysql> update mysql.user set authentication_string=password('pwd123') where user='zhangsan';
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 1mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

备注:password('pwd123')  是一个函数,将括号内的明文密码生成为加密密码。

(3)忘记密码

方法一:

[root@localhost ~]# vim /etc/my.cnf
[client]
skip-grant-tables  (跳过密码)
[root@localhost ~]# systemctl restart mysqld
[root@localhost ~]# mysql -urootmysql> update mysql.user set authentication_string='pwd123' where user='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

 方法二:

[root@localhost ~]# /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
[root@localhost ~]# mysql -uroot
mysql> update mysql.user set authentication_string='pwd123' where user='root';mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

5.权限管理

(1)给予权限

mysql> grant select on *.* to 'zhangsan'@'localhost' identified by 'pwd123';
Query OK, 0 rows affected, 2 warnings (0.00 sec)

备注:
*.*: 前一个*表示所有库;后一个*表示所有表。
语法解读:给予zhangsan在所有库,所有表中select的权限。

mysql> grant all on *.* to 'zhangsan'@'localhost' identified by 'pwd123';
Query OK, 0 rows affected, 2 warnings (0.00 sec)mysql> show grants for 'lisi'@'localhost';
或
mysql> select * from mysql.user\G;

备注:
语法解读:给予zhangsan所有库,所有表中所有权限。

(2)收回权限

mysql> revoke update on *.* from 'zhangsan'@'localhost';
Query OK, 0 rows affected, 1 warning (0.01 sec)

6.远程登陆

101服务器端

mysql> grant all on *.* to 'aaa'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

备注:
% :  任意一个IP地址,但不包括local host。

192.168.10.%: 可以登录192.168.10.0的网段。

102客户端

[root@localhost ~]# yum -y install mysql
[root@localhost ~]# mysql -uaaa -p123456 -h 192.168.10.101 -P 3306

备注:
-h 192.168.10.101 :允许主机登陆的主机

-P 3306 : 端口

二、MySQL 高级语句

1.select  

(1)按关键字排序

mysql> select name,level from t1 where level>=30 order by level desc;

语法解读:
根据t1表中level中大于等于30的等级用户进行降序排列

备注:

dese 降序;asc升序(默认升序)

order  by  A,B  desc  :  A升序,B降序

 order  by  A  desc,B desc : A降序,B降序

order  by A asc,B  desc :A升序,B降序

(2)对结果进行分组

对查询结果进行分组,可以通过group  by 实现,常见的聚合函数:计数(count)、求和(sum)、平均数(avg)、最大值(max)、最小值(min)。

mysql> select count(name),level from t1 where level>=40 group by level;

语法解读:
统计在t1表中等级在40以上进行分组,每个等级有多少人。
 

mysql> select count(name),level from t1 where level>=40 group by 
level order by count(name) desc;

语法解读:
等级在40以上,按照等级进行排序,并将每个等进行降序。

(3)限制结果条目

mysql> select * from t1  order by level desc limit 5;

语法解读: 查询t1表中等级按照降序排列,取五条记录。

(4)设置别名

mysql> select count(name) 人数,level 等级 from t1 where level>=45 group by level;
+--------+--------+
| 人数   | 等级   |
+--------+--------+
|      1 |     45 |
|      1 |     47 |
|      2 |     48 |
|      3 |     52 |
|      2 |     58 |
+--------+--------+
5 rows in set (0.00 sec)

(5)通配符

查询以l开头的名字记录.

mysql> select * from t1 where name like 'l%';  
+------+---------+-------+
| id   | name    | level |
+------+---------+-------+
|  298 | leslieF |    40 |
|  271 | lisi    |    52 |
+------+---------+-------+

 替换结尾的一个字符

mysql> select * from t1 where name like 'lis_';
+------+------+-------+
| id   | name | level |
+------+------+-------+
|  271 | lisi |    52 |
+------+------+-------+
1 row in set (0.00 sec)

备注:
% : 表示零个,一个或多个字符。

_:表示单个字符。

(6)子查询

       子查询又称内查询或者嵌套查询,指在一个查询语句中还嵌套着另一个查询语句。子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一步的查询过滤。子查询不仅可以在 SELECT 语句中使用,在 INERT、UPDATE、DELETE中也同样适用。在嵌套的时候,子查询内部还可以再次嵌套新的子查询,也就是说可以多层嵌套。

mysql> select name,level from t1 where id in (select id from t1 wherelevel>=45);

语法解读:
先查出等级大于等于45的id,在判断t1表中id是否在内。

2.Null 值

(创建表)
mysql> create table test (-> id int(10) not null auto_increment,-> name char(20),-> pass char(50),-> primary key (id)) engine=innodb charset=utf8;
Query OK, 0 rows affected (0.01 sec)(在该表中输入信息)
mysql> insert into test(name,pass) values('aaa',password('pwd123'));
Query OK, 1 row affected (0.00 sec)mysql> select * from test;  (查询表内容)

备注1:
mysql> create table test (                            (创建名为test的表)
    -> id int(10) not null auto_increment,    (id不允许为空且自动增长)
    -> name char(20),                                        (name字符长度)
    -> pass char(50),                                            (pass字符长度)
    -> primary key (id)) engine=innodb charset=utf8;         (主键是id,引擎,字符集)
Query OK, 0 rows affected (0.01 sec)

备注2:

NULL值和空值有什么区别:

  • 空值的长度为 0,不占用空间的;而 NULL 值的长度是 NULL,是占用空间的。
  • IS NULL 或者 IS NOT NULL,是用来判断字段是不是为 NULL 或者不是 NULL,不能查出是不是空值的。
  • 空值的判断使用=’’或者<>’’来处理。
  • 在通过 count()计算有多少记录数时,如果遇到 NULL 值会自动忽略掉,遇到空值会加入到记录中进行计算。


3.正则表达式

mysql> select * from t1 where name regexp '^zhang';
+------+----------+-------+
| id   | name     | level |
+------+----------+-------+
|  190 | zhangsan |    48 |
+------+----------+-------+
1 row in set (0.00 sec)

语法解读:
在t1表中查询以zhang开头的name字段。

备注:
 

^

以什么开始

$

以什么结尾

.

匹配任何单个字符包括回车换行

[a-z]

匹配在方阔内的任意字符列表

^[a-z]

匹配以什么字符开头的

[^a-z]

匹配不包含方阔内的任意字符列表

p1|p2|p3

匹配任何模式p1,p2,p3

*

0个或多个前面的元素

+

1个或多个前面的元素

0个或1个前面的元素

{n}

前面元素连续出现的n个实例

.{n}

前面元素出现的n个实例

{m,n}

匹配前面元素m到n个实例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/35169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统一视频接入平台LntonCVS视频共享交换平台智慧景区运用方案

随着夏季的到来&#xff0c;各地景区迎来了大量游客&#xff0c;而景区管理面临的挑战也愈加严峻&#xff0c;尤其是安全问题显得格外突出。 视频监控在预防各类安全事故方面发挥着重要作用&#xff0c;不论是自然景区还是人文景区&#xff0c;都潜藏着诸多安全隐患&#xff0…

每日一道算法题 成绩排序

题目 成绩排序_牛客题霸_牛客网 (nowcoder.com) Python nint(input()) flagint(input()) ans[] for _ in range(n):name,scoreinput().split( )ans.append([name,int(score)]) ans.sort(keylambda x:x[1],reverse not flag)for e in ans:print(e[0],e[1],sep )C #include &…

排序之插入排序----直接插入排序和希尔排序(1)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 排序之插入排序----直接插入排序和希尔排序(1) 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记&#xff0c;欢迎大家在评论区交流讨…

图形编辑器基于Paper.js教程04: Paper.js中的基础知识

背景 了解paper.js的基础知识&#xff0c;在往后的开发过程中会让你如履平地。 基础知识 paper.js 提供了两种编写方式&#xff0c;一种是纯粹的JavaScript编写&#xff0c;还有一种是使用官方提供的PaperScript。 区别就是在于&#xff0c;调用paper下的字对象是否需要加pa…

使用Python获取1688商品详情的教程

如何使用Python编程语言来获取1688网站上的商品详情信息。通过本教程&#xff0c;读者将学会使用Python的请求库和解析库来爬取商品数据。 目录 简介环境准备编写爬虫代码处理和存储数据快速获取遵守法律法规和网站政策 1. 简介 1688是中国领先的B2B电子商务平台&#xff0…

Windows server 由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。

问题现象&#xff1a; 解决办法 临时远程方式1: 打开 mstsc 时带上 /admin 等参数&#xff0c;如下图所示&#xff1a; 使用“mstsc /admin /v:目标ip”来强制登录服务器&#xff0c;但只能是管理员身份。 远程方式2&#xff1a; 通过VM远程登陆系统后&#xff0c;运行输入R…

【Python Cookbook】S03E02 执行精确的小数计算 decimal, math.fsum()

目录 问题解决方案讨论 问题 如果我们需要对小数执行精确的计算&#xff0c;并且不希望因为浮点数的误差带来影响&#xff0c;我们该怎么做&#xff1f; 解决方案 关于浮点数&#xff0c;一个人尽皆知的问题就是其无法精确地表达出所有十进制小数位&#xff0c;因此甚至简单…

Python编程编辑器PyCharm 界面介绍

PyCharm 界面介绍 当你打开 PyCharm 后&#xff0c;会看到以下主要界面区域&#xff1a; 1&#xff09;菜单栏&#xff1a; 位于界面最顶端&#xff0c;包含文件&#xff08;File&#xff09;、编辑&#xff08;Edit&#xff09;、查看&#xff08;View&#xff09;、导航&a…

qemu 调试 Linux kernel 基于 x86_64

配置qemu&#xff1a; cd qemu/ mkdir build cd build/ $ ../configure --enable-slirp \ --enable-slirp-smbd --smbd/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00 \ --target-list"riscv32-softmmu riscv64-softmmu x86_64-softmmu" make -j 创建…

ICMAN液位检测——WS003B管道检测模组

ICMAN液位检测之WS003B管道检测模组 体积小&#xff0c;成本低&#xff0c; 液位检测精度高&#xff0c; 有水输出低电平无水高电平&#xff0c; 适用于饮水机、咖啡机、扫地机器人、洗地机等&#xff0c; 有需要朋友快联系我吧&#xff01; AWE展会不容错过的ICMAN检测模组…

[大师C语言(第四十篇)]C语言最危险行为盘点

C语言因其高效和灵活性被广泛应用于系统编程、嵌入式系统、操作系统等领域。然而&#xff0c;这些特性也使得C语言容易产生一些危险行为&#xff0c;可能导致程序错误、安全漏洞甚至系统崩溃。本文将盘点C语言中最危险的行为&#xff0c;并对其背后的技术进行详细解析。 第一部…

PostgreSQL 基本SQL语法(二)

1. SELECT 语句 1.1 基本 SELECT 语法 SELECT 语句用于从数据库中检索数据。基本语法如下&#xff1a; SELECT column1, column2, ... FROM table_name; 例如&#xff0c;从 users 表中检索所有列的数据&#xff1a; SELECT * FROM users; 1.2 使用 WHERE 条件 WHERE 子…

RabbitMQ实践——搭建多人聊天服务

大纲 用户登录创建聊天室监听Stream&#xff08;聊天室&#xff09;发送消息实验登录Tom侧Jerry侧 创建聊天室Jerry侧Tom侧 进入聊天室Jerry侧Tom侧 发送消息Jerry发送消息Jerry侧聊天室Tom侧聊天室 Tom发送消息Jerry侧聊天室Tom侧聊天室 代码工程参考资料 在《RabbitMQ实践——…

Webpack: 前端资深构建工具

概述 如果你是一名前端工程师&#xff0c;相信之前或多或少听过、用过 Webpack 这一构建工具&#xff0c;它能够融合多种工程化工具&#xff0c;将开发阶段的应用代码编译、打包成适合网络分发、客户端运行的应用产物如今&#xff0c;Webpack 已经深深渗入到前端工程的方方面面…

简单了解IoC

IoC 什么是IoC&#xff1f; IoC&#xff08;Inversion of Control&#xff09;&#xff0c;即控制反转&#xff0c;这是一种设计思想&#xff0c;在Spring指将对象的控制权交给Spring容器&#xff0c;由容器来实现对象的创建、管理&#xff0c;程序员只需要从容器获取想要的对…

java设计模式(四)原型模式(Prototype Pattern)

1、模式介绍&#xff1a; 原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;它允许对象在创建新实例时通过复制现有实例而不是通过实例化新对象来完成。这样做可以避免耗费大量的资源和时间来初始化对象。原型模式涉及一个被复制的原型对象…

ES6模板字符串详解

ES6是JavaScript语言的一次重大更新&#xff0c;引入了许多新特性和语法改进&#xff0c;其中模板字符串是一个非常实用和灵活的语法特性。它可以让我们从数组或对象中提取值&#xff0c;并赋给对应的变量&#xff0c;让代码变得更加简洁和易读。 本文将深入探讨ES6解构赋值的语…

域控制器BSP开发工程师面试题

在域控制器BSP(Board Support Package)开发工程师的面试中,可能会遇到以下一些问题。以下是根据参考文章和相关知识整理的面试题及其可能的回答格式: 面试题1:请简要介绍一下您对域控制器BSP的理解。 回答: 域控制器BSP,即板卡支持包,是嵌入式系统开发中的关键组成部…

Nginx开发--动静分离和URLRewrite

05 【动静分离和URLRewrite】 1.动静分离介绍 为了提高网站的响应速度&#xff0c;减轻程序服务器&#xff08;Tomcat&#xff0c;Jboss等&#xff09;的负载&#xff0c;对于静态资源&#xff0c;如图片、js、css等文件&#xff0c;可以在反向代理服务器中进行缓存&#xff…

减少液氮罐内液氮损耗的方法

监测与管理液氮容器的密封性能 液氮容器的密封性能直接影响液氮的损耗情况。一个常见的损耗源是容器本身的密封不良或老化导致的泄漏。为了有效减少液氮损耗&#xff0c;首先应当定期检查液氮容器的密封性能。这可以通过简单的方法如肉眼检查外观&#xff0c;或者更精确的方法…