【mysql基础系列十一】用户权限管理

2023-11-01

用户权限管理:在不同的项目中给不同的角色(mysql客户端用户,通常为开发者)不同的权限,为了保证数据库的数据安全。

用户管理

mysql需要客户端进行连接认证才能进行服务器操作:需要用户信息。mysql中所有的用户(指mysql客户端用户)信息都是保存在mysql数据库下的user表中。该表采用复合主键(host + user)。

注意:\g 的作用是分号和在sql语句中写’;’是等效的 
            \G 的作用是将查到的结构旋转90度变成纵向

1、创建用户

方式一:直接使用root用户在user表中插入记录。(不推荐)

方式二:使用SQL指令创建用户

create user '用户名'@'主机地址' identified by '明文密码';
create user 用户名;  //创建 谁都可以访问,不需要密码 的用户

注意:主机地址可以使用'%'或者''代替,表示无限制。

2、删除用户

drop user '用户名'@'主机地址';
drop user 用户名; //删除主机地址为'' 或者 '%' 的用户

3、修改用户密码

mysql中提供了多种修改密码的方式,基本上都必须使用对应提供的一个系统函数:password()。需要靠该函数对密码进行加密处理。

方式一:使用专门的SQL指令来修改密码

set password for 用户名 = password('新的明文密码');

方式二:使用更新语句update来修改表

update mysql.user set password = password('新的明文密码') where user = '用户名' and host='主机地址';

MySQL8使用以上方案修改密码后,还是能使用mysql直接登录。
是因为mysql8.0 之前的版本加密规则是 mysql_native_password,mysql8 之后,加密规则是 caching_sha2_password。所以我们需要设置加密规则为mysql_native_password即可。

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
FLUSH PRIVILEGES;

权限管理

1、权限分类

mysql中将权限分3类:数据权限、结构权限、管理权限

数据权限:增删改查(select/update/delete/insert)

结构权限:结构操作(create/drop)

管理权限:用户操作权限(create user/grant/revoke)

2、查询权限

show grants for 登录名@IP;

3、grant:授予权限

将权限分配给指定用户

grant 权限列表/all privileges on 数据库.表名 to 用户;

注:1、权限列表:使用逗号分隔,但是可以使用 all privileges(表示全部权限)。

       2、数据库.表名:可以是单表(数据库名.表名)、可以是某个数据库(数据库名.*)、可以是整库(*.*)

4、revoke:权限回收

revoke 权限列表/all privileges on 数据库.表名 from 用户;

5、flush:刷新权限

将当前对用户的权限操作,进行一个刷新,将操作的具体内容同步到对应的表中。

flush privileges;

密码丢失解决方案

普通用户密码丢失可以通过root账号修改。但是如果忘记root用户密码,就需要去找回或者重置root用户密码。

1、停止服务

net stop mysql

2、重启服务器,但是跳过权限

mysqld.exe --skip-grant-tables

注:当前启动的服务器没有权限概念。即任何客户端,不需要任何用户信息都可以直接登录,而且是root权限(新开客户端,直接使mysql登录即可)。

3、修改root用户密码,需要指定用户名。

4、进程中关闭mysql服务器(命令行关闭服务器有可能会失效),然后正常重启即可。

ubuntu安转MySQL并设置root密码

1、安装成功后,默认登录

mysql -uroot -p -- 直接回车
Enter password:  -- 新安装的MySQL,root账户没有默认密码,直接回车
> mysql  -- 登录成功

2、设置root账户密码为:root 

-- 设置root账户密码为:root
update user set plugin='mysql_native_password' where user='root';
update user set authentication_string=PASSWORD('root') where user='root';

MySQL允许远程访问(ubuntu)

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

 注释掉bind-address = 127.0.0.1即可。

Mysql8报错:ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation

原因:
MySQL8版本中新增了一个system_user帐户类型,由于root用户没有SYSTEM_USER权限,导致错误出现。
为root添加权限系统用户权限即可。

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

【mysql基础系列十一】用户权限管理 的相关文章

  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • MySQL连接字符集问题

    我在 Mac 上使用带有 MySQL 的 velosurf 没有任何编码问题 但是当我切换到 Linux 计算机时 从 velosurf 获得的值未正确编码 我发现这可能是默认连接字符集的问题 在 Mac 上我得到 mysql gt sho
  • 在服务器上找不到本地主机或 phpMyAdmin:如何修复?

    我按照安装说明进行操作PHP MySQL and PHPMyAdmin 但是当我尝试访问时http localhost phpmyadmin 我收到此错误 未找到 在此找不到请求的 URL phpmyadmin 服务器 然后我尝试访问loc
  • gem install mysql:无法构建 gem 本机扩展 (Mac Lion)

    我为 Mac OS X Lion 安装了 MySQL 5 5 27 来自 dmg 现在我尝试安装 mysql gem gem install mysql Building native extensions This could take
  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab
  • 映射 mysql 中同一个表的多个值

    您好 我必须使用另一个表中的值 id 获取文本值 表 1 包含值 ID 表 2 包含名称和值 ID 表 1 SEVERITY OCCURENCE DETECTABILITY 2 3 4 表 2 id name value 1 Very Hi
  • POINT 列上的 MySQL INSERT/UPDATE

    我正在尝试用我国家的地理位置填充我的数据库 我的一张表有 4 个字段 ID PK 纬度 经度和地理点 EDIT SCDBs Punto Geografico SET lat 18 469692 SET lon 63 93212 SET g
  • 在mysql中的单个查询中更新多个表

    我有三个查询 我想要一个 这是我的查询 UPDATE tab1 SET a WHERE id 3 UPDATE tab2 SET b WHERE id 9 UPDATE tab3 SET c WHERE id 5 您可以尝试下面的代码 UP
  • MySql - 复制监控工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个主 从 MySql 复制 我正在寻找一个允许我监视复制的工具 查看它没有错误 检查滞后等 我更喜
  • 如何在mysql中选择具有相同值集的列?

    我的桌子是 patients pid name city disease did dname has disease did pid 我想列出具有相同疾病组的患者 pid 和 did 分别是患者和疾病表中的主键 并且是 has diseas
  • MySQL - 从临时表插入

    这看起来非常简单 但我坚持使用简单的插入语句 见下文 begin work CREATE TEMPORARY TABLE IF NOT EXISTS insert table AS select r resource id fr file
  • 如何在 MySQL 中求和时间?

    正如您在图片中看到的 我有一份停机报告 显示了所选工厂在选定日期的停机时间 现在我想添加所有的值 Time Duration 列并将其显示在附近的单独显示中 TOTAL TIME DURATION 例如 在图像中 所选日期为 2015 年
  • MySQL 通过 current_timestamp 选择上个月的数据

    直到今天 当我使用 MySQL 并需要对日期 时间执行操作时 我使用带有 unix 时间戳的 int 列 没有出现任何问题 但今天在阅读了一些指南后 我决定默认使用 current timestamp 测试时间戳列 所以我感兴趣如何按列选择
  • MySQL 8 用逗号分割字符串并将其转换为JSON ARRAY

    我有以下字符串 a b c d 我想将它转换成一个 json 数组 像这样 a b c d MySQL 8 有什么函数可以实现这个功能吗 Try SELECT CAST CONCAT REPLACE a b c d AS JSON See
  • MySQL“LIKE”搜索不起作用

    我通过 LOAD DATA INFILE 在 MySQL 中导入了一个 txt 数据库 一切似乎都正常 唯一的问题是 如果我使用以下查询在数据库上搜索记录 SELECT FROM hobby WHERE name LIKE Beading
  • 如何在 MySQL 中测试 Select for Update

    我正在表演SELECT FOR UPDATE或 InnoDB 表的行级锁定 我的目的是只有一个请求可以读取同一行 因此 如果两个用户同时请求相同的数据 其中只有一个人获取数据 即第一个触发查询的人 但是我如何测试锁定是否已放置 因为我正在通
  • 慢速自动增量重置

    我有很多表 由于某些原因 我需要在应用程序启动时调整这些表的自动增量值 我尝试这样做 mysql gt select max id from item max id 97972232 1 row in set 0 05 sec mysql
  • mysql 中的二进制、十六进制和八进制值

    我对在 mysql 数据库中使用二进制 十六进制和八进制系统非常感兴趣 首先 请给我一个建议 为什么我们在存储信息时需要它们 因为信息太多 或者为什么 另外 哪种类型的值必须存储在标记系统中 另外这里还有像 这是例子 gt SELECT 5
  • 如何从批量数据中的mysql列中删除所有非数字字符

    我想从列中删除所有非数字字符 我的数据库中有大量数据 目前我正在使用以下链接中描述的方法 http venerableagents wordpress com 2011 01 29 mysql numeric functions http

随机推荐

  • OpenGL ES 2.0编程基础

    http blog csdn net sunqunsunqun article details 7649628http blog csdn net sunqunsunqun article details 7649628 http blog
  • java的double类型比较相等

    当double类型数据当以带小数自增时出现的问题 public class test public static void main String args double a 0 while a lt 100 a 1 2 System ou
  • svn下载以及操作

    目录 第一步下载SVN及SVN汉化包 SVN下载 SVN汉化语言包下载网址 第二步安装SVN及汉化包 使用说明检出项目 导入项目 关于项目的提交 更新 解决冲突有三种选择 如何降低冲突解决的复杂度 查看日志 版本回滚 版本控制 创建分支合并
  • AIX下中文字符集问题

    1 来自IBM网站 http www 01 ibm com support do 82448256d650040768f2 aix中文字符集 如图 3 如何看到已安装的字符集 locale a4 查看当前的语言环境 env grep LAN
  • 关于ubuntu 64位 android studio 运行时,gradle卡住的问题

    主要是因为缺少相关的32位依赖库 可通过一下方法解决 终端输入以下命令 安装完成后 重启as即可 sudo dpkg add architecture i386 sudo apt get update sudo apt get instal
  • mybatis 3.4.5 常用配置标签 02

    1 properties
  • Pycharm 集成python3 的Qt Designer

    第一步 点击 File Settings 第二步 Tools External Tools 点击 号 第三步 设置Qt Designer 修改三个地方 其他地方默认 Name Qt Designer Programs D python3 6
  • 二线制、三线制、四线制,PT100,电桥(转)

    在工业现场 传感器距离控制器往往很长 所以导线电阻就不能忽略了 于是延伸出热敏电阻或远传压力表的二线 三线 四线制接法 li class tool item tool active is like a href a li
  • 15 Python数据可视化_作业

    Author Nimo Ding Seaborn数据集自带了car crashes数据集 这是一个国外车祸的数据集 1 请对这个数据集进行成对关系的探索 2 请用Seaborn画二元变量分布图 scatter kde hex import
  • python中的base64加密解密

    介绍 Base64是网络上最常见的用于传输8Bit 字节码的编码方式之一 Base64就是一种基于64个可打印字符来表示 二进制数据的方法 可查看RFC2045 RFC2049 上面有MIME的详细规范 Base64编码是从二进制到字符的过
  • C语言中的exit与return的区别

    exit 结束当前进程 当前程序 在整个程序中 只要调用 exit 就结束 exit 0 表示进程正常退出 返回 0 exit 1 表示进程非正常退出 返回 1 exit与return的区别 exit 函数与return语句的最大区别在于
  • 【博客689】监控进程的自愿与非自愿上下文切换

    监控进程的自愿与非自愿上下文切换 场景 有时候遇到机器没有性能瓶颈 但是进程出现性能瓶颈 这时候往往需要进程级别的监控 监控手段 process exporter https github com ncabatoff process exp
  • Python工程师常见的30个基础面试题

    一 Python 的特点和优点是什么 Python 是一门动态解释性的强类型定义语言 编写时无需定义变量类型 运行时变量类型强制固定 无需编译 在解释器环境直接运行 优点 1 解释性 Python 语言写的程序 不需要编译成二进制代码 可以
  • 字库制作和烧写

    文章目录 资源获取 一 介绍字库 1 GB2312 2 GBK 二 生成字库 1 打开字库生成软件 2 软件介绍 3 生成bin字库 三 烧录字库 1 打开串口烧录软件 2 配置软件 3 打开字库文件 4 将烧录程序下载到开发板 5 开始烧
  • MacOs 执行命令行报:permission denied:

    当前目录没有可执行权限 解决方案 代表文件目录 sudo chmod R 777
  • docker安装nacos2.0.3并配置mysql

    1 拉取镜像 docker pull nacos nacos server 2 0 3 2 创建数据目录 mkdir p mydata nacos2 0 3 logs mkdir p mydatadata nacos2 0 3 conf 3
  • Java 包(package)

    为了更好地组织类 Java 提供了包机制 用于区别类名的命名空间 包的作用 1 把功能相似或相关的类或接口组织在同一个包中 方便类的查找和使用 2 如同文件夹一样 包也采用了树形目录的存储方式 同一个包中的类名字是不同的 不同的包中的类的名
  • linux安装virtualbox命令,如何在CentOS 7.5上安装VirtualBox

    VirtualBox是一款开源的跨平台虚拟化软件 允许您同时运行多个客户操作系统 虚拟机 在本教程中 我们将向您展示如何从CentOS 7系统上的Oracle存储库安装VirtualBox 前提条件 在继续本教程之前 请确保以具有sudo权
  • 为网站接入前端异常监控系统 Sentry

    背景 众所周知 现在前端异常监控在实际生产环境中越来越重要了 通过给网站接入前端异常监控系统 我们能获得以下几个好处 收集页面的错误信息 辅助定位代码错误位置 在用户报障前发现问题 这对于提升线上系统质量 降低线上故障数量 都具有非常重要的
  • 【mysql基础系列十一】用户权限管理

    用户权限管理 在不同的项目中给不同的角色 mysql客户端用户 通常为开发者 不同的权限 为了保证数据库的数据安全 用户管理 mysql需要客户端进行连接认证才能进行服务器操作 需要用户信息 mysql中所有的用户 指mysql客户端用户