数据库应用:MySQL数据库用户管理

2023-10-29

目录

一、理论

1.用户管理

2.授权控制

二、实验

1.数据库用户管理

2.数据库用户授权

三、总结


一、理论

1.用户管理

(1)用户信息

MySQL 中的用户信息,都存储在系统数据库 mysql 的 user 表中。

use mysql;
select * from user limit 1\G

select User,Hst,authentication_string from user;

 说明:
 ① user:用户名。
 ② host:表示这个用户可以从哪个主机登录(如果是 localhost,表示只能从本机登录)。
 ③ authentication_string:用户密码通过 password 函数加密后的。
 ④ *_priv:用户拥有的权限。

(2)创建用户

CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];

① '用户名':指定将创建的用户名.
② '来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录,可用通配符%
③ '密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;
若使用加密密码,需要先使用SELECT PASSWORD('密码');获取密文,再在语句中添PASSWORD '密文';
④ 若省略“IDENTIFIED BY"部分,则用户的密码将为空(不建议使用)

(3)删除用户

drop user '用户名'@'登录主机';

(4)修改用户密码

# root用户修改指定用户的密码
set password for '用户名'@'登录主机'=password('新的密码');
或
update user set 密码设置的地方=password('密码') where User='用户名' and Host='登录主机';# 用户自己改自己的密码
set password=password('新的密码');

(5)重命名

RENAME USER '旧用户名'@'localhost' TO '新用户名'@'localhost';

(6)忘记密码

忘记root密码的解决办法:

修改/etc/my.cnf 配置文件,免密登陆mysql
vim /etc/my.cnf
[mysqld]
skip-grant-tables    #添加,使登录mysql不使用授权表

systemctl restart mysqld
mysql    #直接登录

然后使用SQL语句修改密码
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('abc123') where user='root';

FLUSH PRIVILEGES;
quit
mysql -u root -pabc123
PS:最后再把/etc/my.cnf 配置文件里的skip-grant-tables 删除,并重启mysql服务

2.授权控制

 

(1)MySQL 中的权限

在这里插入图片描述

 (2)给用户授权

新创建的用户几乎没有权限,因此在创建用户后需要给用户授权。

grant 权限列表 on 库名.对象名 to '用户名'@'登录主机' [identified by '密码'];

说明:
 ① ‘用户名’@‘登录主机’:表示要给哪个用户赋予权限。
 ② 库名.对象名:表示要给用户赋予在哪个对象上的权限。
 ③ 权限列表:表示要给用户赋予哪种权限(若有多个权限则用逗号分隔开)。
 ④ identified by ‘密码’:可选项。如果该用户存在,则在赋予权限的同时修改该用户的密码;如果该用户不存在,则创建该用户。

如果发现赋予权限后,没有生效,则执行命令flush privileges;,但实际上该命令并没有什么效果。

实际上最有用的方法就是,直接退出重新登录,这样必定会生效。

(3)回收权限

revoke 权限列表 on 库名.对象名 from '用户名'@'登录主机';

(4)授权用户权限 

表1 授权用户权限

序号 权限
1 insert(插入数据)
2 select(查询数据)
3 update(更新表的数据)
4 delete (删除表中的数据)
5 drop     (删除库 和表)
6 cerate  (创建库,表)
7 index    (创建索引)
8 alter     (更改表的属性)
9 create view  (创建视图)
10 create routine  (创建存储过程)
11 alter routine   (修改存存储过程)
12 event        (事件)
13 trigger on    (创建触发器)

二、实验

1.数据库用户管理

(1)新建用户

 

(2)查看用户

 

(3)重命名

 

(4)删除用户

 

(5)修改当前密码

SET PASSWORD = PASSWORD('abc123');

(6)修改其他用户密码

SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('abc123T);
SET PASSWORD FOR 'david'@'localhost' = PASSWORD('abc123T);

2.数据库用户授权

(1)授予权限

 

(2)查看权限

 

(3)撤销权限

 

三、总结

MySQL 中的用户信息,都存储在系统数据库 mysql 的 user 表中。

如果发现赋予权限后,没有生效,则执行命令flush privileges;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库应用:MySQL数据库用户管理 的相关文章

  • 将波斯语字符串发送到mysql

    我正在尝试发送Persian字符串到mysql数据库 但它将数据保存为这样的 D8 AC D8 AF DB 8C D8 AF 英文字符串没有问题 var new this val ajax url url new type GET succ
  • 如何从准备好的语句中获取标量结果?

    是否可以将准备好的语句的结果设置为变量 我正在尝试创建以下存储过程 但失败了 第 31 行出现错误 1064 42000 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在 stmt USING m c a 附
  • 在MySQL中永久设置auto_increment_offset

    我以 root 身份运行命令 set auto increment offset 2 但从其他连接上看不到效果 为什么不 它是全球性的 From http dev mysql com doc refman 5 1 en replicatio
  • 在 LAMP 配置中创建个性化 URL

    在 LAMP 配置下创建用户个性化 URL 的最佳方法是什么 例如 可以按如下方式访问用户个人资料页面 http www website com profile php id 1 http www website com profile p
  • InnoDB vs. MyISAM 插入查询时间

    我有一个大型 MySQL 表 约 1000 万行 6 5G 用于读取和写入 它是MyISAM 由于MyISAM 的所有表写入锁 我获得了很多锁 我决定尝试迁移到 InnoDB 推荐用于读 写表 它只锁定写入时的特定行 转换后 我测试了插入语
  • 我是否应该标准化我的数据库?

    在设计数据库 例如 MySQL 的模式时 会出现是否完全规范化表的问题 一方面 连接 以及外键约束等 非常慢 另一方面 您会获得冗余数据和潜在的不一致 最后优化 是正确的方法吗 即创建一个按书本规范化的数据库 然后查看可以对哪些内容进行非规
  • 使用存储过程并发访问MySQL数据库

    我有一个存储过程 它将读取然后增加数据库中的值 许多程序同时使用这个特定的过程 我担心并发问题 特别是读写器问题 有人可以建议我任何可能的解决方案吗 thanks 首先 正如另一篇文章中所述 使用 InnoDB 从 MySQL 5 5 开始
  • 排除任何字段中具有 NULL 值的行结果?

    我有一个像这样的简单选择 SELECT FROM table WHERE fk id 10020 它可以工作 但有一些字段为 NULL 没有模式所以做了 SELECT FROM table WHERE fk id 10020 AND NOT
  • 在带有 OR 条件的 LEFT JOIN 中使用索引

    考虑以下查询 SELECT FROM table1 LEFT JOIN table2 ON table2 some primary key table1 some primary key LEFT JOIN table3 ON table3
  • 为什么这个 MySQL 更新不起作用?

    有一张桌子叫meterreadings 我需要复制属性meterreading从一排到另一排 这是数据示例 id meterreadingdate meterreading meterreadingtype id created 1 201
  • 用于分页的php示例脚本[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以建议一个好的分页 php 脚本 其中人们想要分页显示数据库中的大量项目 以下链接可以帮助您
  • 为什么在 MAC OSX 上编译简单的 mysql c 应用程序时不断收到未定义的符号?

    我正在使用 MACOS 并尝试编写一个 测试 mysql 应用程序 该应用程序仅测试与本地数据库的连接 include
  • Mysql - 如何比较两个 Json 对象?

    将整个 MySql json 列与 json 对象进行比较的语法是什么 以下不起作用 select count criteria from my alerts where criteria industries 1 locations 1
  • 如何让MySQL数据库完全在内存中运行?

    我注意到我的数据库服务器支持内存数据库引擎 我想让一个已经运行 InnoDB 的数据库完全在内存中运行以提高性能 我怎么做 我探索了 PHPMyAdmin 但找不到 更改引擎 功能 假设您了解注释中提到的使用 MEMORY 引擎的后果 并且
  • SimpleSAMLPHP 重定向循环

    我们正在尝试使用自定义 mysql 数据库设置 sso 但它在以下两个请求之间进入无限循环 POST http 192 168 0 15 simplesaml module php core loginuserpass php 设置Cook
  • 我应该为 MySQL 使用什么 python 3 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 据我所知 MySQLdb 仍然没有移植到 Python 3 pypy 上似乎有另一个名为 PyMySQL
  • 无效的 PDO 查询不会返回错误

    下面的第二条 SQL 语句在 phpMyAdmin 中返回错误 SET num 2000040 INSERT INTO artikel artikel nr lieferant nr bezeichnung 1 bezeichnung 1
  • ON DUPLICATE KEY UPDATE 的自动增量过多

    我有一个包含列的基本表 id 主要是AI 名称 唯一 etc 如果唯一列不存在 则插入该行 否则更新该行 INSERT INTO pages name etc VALUES bob randomness ON DUPLICATE KEY U
  • 从多个选择列表中插入数据到mysql数据库(html形式)

    我制作了一个表格 其中有商店的 ID
  • PHP 中的嵌套 JSON 输出

    我正在为 iOS 应用程序构建 API 并尝试将 mySQL 数据转换为 JSON 字符串进行处理 所需的输出将需要顶级订单详细信息 例如客户名称和地址 然后是订购的产品子数组 我需要的两个表中有相当多的字段 我希望拥有所有字段 我已经构建

随机推荐

  • 数羊

    H题数羊 第八届 图灵杯 NEUQ ACM程序设计竞赛个人赛 题目描述 憨憨小杨晚上睡不着觉 就开始数羊 她觉得一只一只数太慢了 突发奇想出了一种新的数羊方式 羊羊数量A n m 由两个整形变量n和m决定 计算方式如下 现在给出n和m的值
  • c#学习笔记

    1 输入prop 再按两次TAB会自动添加一个属性 set get方法 2 统一命名空间内 类可以跨多个文件 需要用partial e g partial class XXXX 3 类型 ulong 64无符号整数 decimal 有效数字
  • 阿里云服务器安装WordPress网站教程基于CentOS系统

    阿里云百科分享使用阿里云服务器安装WordPress博客网站教程 WordPress是使用PHP语言开发的博客平台 在支持PHP和MySQL数据库的服务器上 您可以用WordPress架设自己的网站 也可以用作内容管理系统 CMS 本教程介
  • linux---我电脑把给ubuntu分区删了开机就是什么grub rescue怎么办

    装了ubuntu后 会默认从Ubuntu的Grub菜单引导系统 Win8的MBR被替换为Grub来引导 于是 你删除了Ubuntu 也就是删除了Grub的文件 但是 你的引导扇区的启动参数还是指向了Grub 于是就grun rescue了
  • QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。

    QT多线程5种用法 第一种 主线程 GUI 第二种 子线程1继承自QThread 头文件 movetothread4 h 源文件 movetothread4 cpp 子线程1对象的创建 第二种 子线程2继承自QThread 头文件 源文件
  • Cannot find QEMU binary /usr/bin/kvm: Permission denied

    kvm报错 信息如下 Cannot find QEMU binary usr bin kvm Permission denied 解决办法 find name qemu kvm 或者 find name qemu 然后加软连接 ln s u
  • emacs verilog-mode方式实现verilog实例化集成

    文章目录 背景介绍 AUTOINST和AUTOWIRE的应用 推荐使用方法 auto template命令总结 中括号 里面没内容 表示auto inst时 会显示 3 0 类似内容 常用于相同module 多次实例化情况 我不常用 这里仅
  • docker:基本架构

    docker是典型的CS架构 包括客户端和服务端两大核心组件 同时通过镜像仓库来存储镜像 客户端和服务器既可以运行在同一个机器上 也可以通过socket或者RESTful API来进行通信 服务端 docker的服务端一般在宿主主机后台运行
  • 将li标签元素内容排在一行

  • esp8266学习

    在网上学习AT指令 学习esp8266的相关内容 正点原子官方AT指令集 https img blog csdnimg cn 50f65a5a0b724815b82b56d7bb57c113 png x oss process image
  • 跟我一起开启 linux 的学习吧

    跟我学 CentOS 的安装 一 安装 VMware 二 创建虚拟机 三 安装 CentOS 7 四 linux 的登录 一 安装 VMware VMware 计算机虚拟化软件 从官网 https www vmware com cn htm
  • 在VMware虚拟机中安装CentOS 7(图文教程)

    一 VMware简介 VMware是一个虚拟PC的软件 可以在现有的操纵系统上虚拟出一个新的硬件环境 相当于模拟出一台新的PC 以此来实现在一台机器上真正同时运行两个独立的操作系统 VMware的主要特点 不需要区分或重新开机就能在同一台P
  • Arm嵌入式开发之USB主机与设备驱动

    Arm嵌入式开发之USB主机与设备驱动 2013 03 05 00 37 25人阅读 评论 0 收藏 举报 USB驱动层次结构 由上到下 USB设备驱动 USB核心 USB主机控制器驱动 USB控制器硬件 USB核心为USB驱动程序提供了一
  • LSTM+Attention+Prediction

    从Github上整理了几个关于时间序列预测的项目 简单记录一下 tensorflow Time series prediction Codebase for Time series prediction with RNN GRU LSTM
  • 电脑数据怎么恢复?三种方法值得一试

    电脑数据怎么恢复 我们大多数时候都会用电脑作为我们的最主要的办公工具 那么作为我们一直在使用的办公工具 我们一定会出现一些问题 如果电脑不小心出现了数据丢失的情况 我们该怎么找回呢 以下几种方法我推荐你尝试 方法一 回收站恢复 一般情况下
  • Python入门(常用内置对象列表和元组)

    Python的常用内置对象 列表和元组 简单数据类型 整型
  • tomcat部署,js中文乱码

    tomcat启动项目 js如果出现乱码 并且试过了网上的方法 发现还是没用 在设置里面清除浏览器缓存 清缓存 清缓存 血的经验
  • Android调用OpenCV配置方法

    文章目录 1 环境 2 准备工作 3 开始构建示例项目 4 集成opencv库 4 1 导入opencv库 4 2 配置CMakeLists txt 4 3 代码声明及实现 4 3 运行效果 5 可能遇到的其他错误及解决方法 5 1 包冲突
  • 关于
  • 数据库应用:MySQL数据库用户管理

    目录 一 理论 1 用户管理 2 授权控制 二 实验 1 数据库用户管理 2 数据库用户授权 三 总结 一 理论 1 用户管理 1 用户信息 MySQL 中的用户信息 都存储在系统数据库 mysql 的 user 表中 use mysql