MySQL 8用户及权限管理

2023-11-06

参考文档

官方链接:
https://dev.mysql.com/doc/refman/8.0/en/create-user.html

The optional WITH clause is used to enable a user to grant privileges to other users. The WITH GRANT OPTION clause gives the user the ability to give to other users any privileges the user has at the specified privilege level.

with grant option的意思是:权限赋予/取消是关联的,如将with grant option用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,不同的是但管理员收回用with grant option授权的用户对象权限时,权限会因传播而失效,如grant select on table with grant option to A,A用户把此权限授予B,但管理员收回A的权限时,B的权限也会失效,但管理员不可以直接收回B的SELECT ON TABLE 权限。

最好的学习文档,还是官方文档!!!

查看权限

用户账户复制权限时必须发布的GRANT语句:

SHOW GRANTS;

显示MySQL服务器支持的系统权限清单:

SHOW PRIVILEGES;

安装后,登录测试

先登录,

1. 
cd /usr/local/mysql8/bin
 ./mysql -u root -p
password:输入临时密码
 
2.无密码时登录
./mysql -u root --skip-password

然后执行修改密码与root用户,主机host ip,并刷新权限:

host ip解释:
1)%允许来自任何ip的连接
2)localhost允许本机的连接

# 1. 查询前,必须要修改密码,如新密码123456:
ALTER USER 'root'@'localhost' IDENTIFIED with mysql_native_password BY '你的新密码';
#刷新权限
flush privileges;
# 首次改密推荐使用本地密码插件 mysql_native_password
 
use mysql;
select user,host,plugin,authentication_string from user;

# 创建用户任意远程访问
CREATE user 'root'@'%';
# 修改密码
alter user 'root'@'%' identified with mysql_native_password by '123456';
 #给用户授权
grant all privileges on *.* to "root"@"%";
#刷新权限
flush privileges;

# 2. 更改具体用户远程访问
# 创建'root'@'127.0.0.1'用户
CREATE USER 'root'@'127.0.0.1' IDENTIFIED with mysql_native_password BY '123456'; 
#===> 记住刷新权限
flush privileges; 

select user,host,plugin,authentication_string from user;
 
===============5.7以后===================
update user set authentication_string=password("test") where user='root';
update mysql.user set host='你要指定的主机ip' where user='root';

============以下5.7以前======================
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
select user,host,plugin,authentication_string from user;
============================================

# 退出mysql>
quit;或者exit;

#关闭mysql
shutdown;

# 修改MySQL用户密码
mysqladmin -u用户名 -p旧密码 password 新密码
 
# 或进入mysql命令行
SET PASSWORD FOR '用户名'@'主机' = PASSWORD(‘密码');
flush privileges;

添加帐户,分配特权和删除帐户

use mysql;

#创建新用户及密码
CREATE USER 'root'@'localhost' IDENTIFIED with mysql_native_password  BY '新密码';
FLUSH PRIVILEGES;
CREATE USER 'root'@'%' IDENTIFIED with mysql_native_password  BY '123456';
FLUSH PRIVILEGES;
CREATE USER 'mysql'@'%' IDENTIFIED with mysql_native_password  BY '123456';
CREATE USER 'test'@'%' IDENTIFIED with mysql_native_password  BY '123456';

#给用户授权
GRANT ALL ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
GRANT ALL ON *.* TO 'mysql'@'%' WITH GRANT OPTION;
GRANT ALL ON *.* TO 'test'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

select user,host,plugin,authentication_string from user;

#撤消test数据库级特权
REVOKE CREATE,DROP ON test.* FROM 'test'@'%';
FLUSH PRIVILEGES;

#删除帐户
DROP USER 'test'@'%';
FLUSH PRIVILEGES;

扩展

注意:
MySQL8.0.4开始,默认身份认证开始改变。
因为之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。
参考:

https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html

当然也支持修改:

编辑my.cnf文件,更改默认的身份认证插件。

vi /etc/my.cnf

在[mysqld]中添加下边的代码
default_authentication_plugin=mysql_native_password

然后重启MySQL
service mysqld restart

创建远程访问新用户并授权

use mysql;
# mysql8 以前:
grant all privileges on *.* to '新用户名'@'%' identified by '密码' with grant option;
grant all privileges on *.* to '新用户名'@'指定ip' identified by '密码' with grant option;
例如:以前使用
grant all privileges on *.* to 'root'@'%' identified by "123456" with grant option;

#mysql8==>不允许<==授权并创建用户了,要分开使用
mysql8分开操作为:
CREATE USER 'root'@'%'; #创建角色CREATE USER 'root'@'%' IDENTIFIED BY '123456';
ALTER USER 'root'@'%' IDENTIFIED with mysql_native_password by '123456'; #修改密码
grant all privileges on *.* to "root"@"%"; #给角色授权
flush privileges; #刷新权限
 
#另外修改主机
update mysql.user set host='具体要指定的主机ip' where user='root';

#重命名
RENAME USER 'jeffrey'@'localhost' TO 'jeff'@'127.0.0.1'; 

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

MySQL 8用户及权限管理 的相关文章

  • 如何比较 Postgresql 中日期时间字段中的日期?

    在比较 postgresql Windows 中的版本 9 2 4 中的日期时 我遇到了一个奇怪的情况 我的表中有一列说update date与类型timestamp without timezone 客户可以仅使用日期搜索此字段 例如 2
  • max()、分组依据和排序依据

    我有以下 SQL 语句 SELECT t client id max t points AS max FROM sessions GROUP BY t client id 它只是列出了客户 ID 以及他们所获得的最大积分 现在我想按 max
  • DBX 错误:驱动程序无法正确初始化

    我在跑步德尔福XE3 终极版 MySQL 数据库 这是我点击时收到的错误Test Connection 作为回应 我在 xampp 目录中找到了 libmysql 库 并将其复制到我的 System32 目录中 但这是行不通的 此消息指的是
  • MyBatis 枚举的使用

    我知道以前有人问过这个问题 但我无法根据迄今为止找到的信息实施解决方案 所以也许有人可以向我解释一下 我有一个表 状态 它有两列 id 和 name id是PK 我不想使用 POJO Status 而是使用枚举 我创建了这样一个枚举 如下所
  • 如何从连接字符串中提取数据库名称,而不考虑 RDBMS?

    我正在研究一个不知道正在使用的 RDBMS 的课程 当然 应用程序的其余部分都清楚这一点 连接字符串是此类的输入 我需要数据库名称 无论 RDBMS 如何 如何从连接字符串中提取数据库名称 我读到以下问题 如何使用 SqlConnectio
  • 级联删除时触发调用

    我在 MySQL 中有表 A 它有一些对其他表 B C D 的级联删除的引用 当从 A 中删除某些内容时 我需要使用触发器 当我直接从 A 删除记录时 此触发器起作用 但它不适用于级联删除 是否存在任何版本的 MySQL 可以让我的触发器与
  • PostgreSQL & regexp_split_to_array + 取消嵌套

    我有这样的绳子 测试1 纽约 X 测试 2 芝加哥 Y 测试 3 宾夕法尼亚州哈里斯堡 Z 我需要的结果是 Column1 Column 2 Column3 Test 1 new york X Test 2 chicago Y Test 3
  • MySQL解释更新

    作为我大学复习的一部分 我试图回答以下问题 至少在表的一个属性上创建索引 employees 数据库 您可以在其中使用 MySQL EXPLAIN 工具 清楚地显示好处 在条款或检索方面 和负面 在 更新条款 创建相关索引的信息 对于第一部
  • 删除前导零

    给定列中的数据 如下所示 00001 00 00026 00 我需要使用 SQL 删除空格后面的所有内容以及值中的所有前导零 以便最终输出为 1 26 我怎样才能最好地做到这一点 顺便说一句 我正在使用 DB2 这已在 DB2 for Li
  • VIEW for 表结合 UNION ALL 的 MySQL 性能

    假设我有 2 张桌子MySQL create table persons id bigint unsigned not null auto increment first name varchar 64 surname varchar 64
  • 了解涉及 3 个或更多表时 JOIN 的工作原理。 [SQL]

    我想知道是否有人可以帮助我提高对 SQL 中 JOIN 的理解 如果它对问题很重要 我会特别考虑 MS SQL Server 取 3 个表 A B A 通过某些 A AId 与 B 相关 和 C B 通过某些 B BId 与 C 相关 如果
  • 将我的 Laravel 连接到外部数据库

    如何将 Laravel 连接到外部数据库 示例 我的本地计算机上有一个 Laravel 它在 xampp 上运行 我希望它连接到云服务器数据库 打开 env文件并编辑它 只需设置正确的外部数据库凭据 DB CONNECTION mysql
  • Chart.js - 使用 mysql 和 php 从数据库获取数据

    我正在尝试将静态数据转换为使用数据库结果 我将使用MySQL and PHP 示例代码 var randomScalingFactor function return Math round Math random 100 var lineC
  • 使用显式值进行 BigQuery 合并

    据我所知 BigQuery 支持合并两个表 目前 INSERT操作允许将显式值插入表中 例如 INSERT dataset Inventory product quantity VALUES top load washer 10 front
  • 如何将此本机 SQL 查询转换为 HQL

    所以我有这个很长的复杂的 Native SQLQuery string hql SELECT FROM SELECT a rownum r FROM select f2 filmid f2 realisateurid f2 titre f2
  • 选择两列中两个日期之间的记录

    如何选择两列中两个日期之间的记录 Select From MyTable Where 2009 09 25 is between ColumnDateFrom to ColumnDateTo 我有一个日期 2009 09 25 我喜欢选择
  • 如何绑定值 INSERT INTO mysql perl

    我有下面的代码可以工作 但我需要知道如何绑定它们以确保安全 如果我只是将 new row 替换为 并将其放入执行中我收到错误 感谢您的帮助 foreach my field account field order new row param
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii
  • 无法将句子插入数据库

    我有一些句子 我必须选择由 6 个以上单词组成的句子 然后它们将被插入到数据库中
  • 如何获取所有mysql元组结果并转换为json

    我能够从表中获取单个数据 但是当我试图获取表上的所有数据时 我只得到一行 cnn execute sql rows cnn fetchall column t 0 for t in cnn description for row in ro

随机推荐

  • 编写shell脚本,判断输入的IP是否正确

    编写shell脚本 判断输入的IP是否正确 IP的规则是 n1 n2 n3 n4 其中1 bin bash checkip if echo 1 egrep q 0 9 1 3 0 9 1 3 0 9 1 3 0 9 1 3 then a e
  • 编程高手是如何炼成的?1024页Python学习教程

    有人说Python入门一个月足矣 但也仅仅是入门 要想精通甚至成为编程高手 一个月显然不够 网络上五花八门的Python教程让编程学习者挑花了眼 但大多都是强调入门和基础 无法满足更进一步的需求 要想加深自身竞争力和增加技能傍身 更高层次的
  • Python实验——tkinter 电子时钟

    实验说明 编写程序 实现如下图所示的电子时钟 要求 1 不显示标题栏 总是顶端显示 不被其他窗口覆盖 2 实时显示日期和时间 3 可以用鼠标左键按住拖动 在电子时钟上右击可以结束程序 4 拖动时透明度变大 鼠标左键抬起时恢复半透明状态 时钟
  • Linux设备驱动程序中常用的ioctl方法和read/write方法的异同点

    ioctl是iocontrol的缩写 就是IO控制 行为上 简单来说 如果你在写驱动程序时zhi候 碰到一些IO操作 在逻辑上不能归类到read 不能归类到write 那就可以认为是ioctl的部分 read和write应该是写入和读出数据
  • 05_1_Qt工程实践_Qt开发串口通讯软件中的数据转换问题:读取时QByteArray转str;发送时格式;int转16进制格式str;string中截取字符;16进制数加法;str转BytAr

    在利用Qt进行串口程序开发过程中 除了与串口通讯的功能实现以外 数据的转换也是比较麻烦的一件事 本篇主要介绍串口通讯中数据转换的问题 关于功能实现大家在网上搜索就能找到相关案例 在完成串口的初始化等功能之后 实现数据的读取转换 参考博文 Q
  • LightGBM学习笔记

    LightGBM简介 LightGBM是GBDT算法地实现框架之一 设计的初衷是并行 高效 特点是训练速度快 内存消耗小 可并行运算 支持类别变量 LightGBM优化点 直方图算法 不同于XGBoost的预排序 LightGBM将区间离散
  • 长时间使用 Python 会降低程序员的编程能力吗?

    在编程领域 Python 是一种流行的语言 它易于学习和使用 也有很多功能强大的库和框架 但是 有些人认为长时间使用 Python 会降低程序员的编程能力 首先 编程能力不是与语言相关的 编程能力是指能够设计和实现高质量的软件解决方案的能力
  • Activiti源码分析

    Activiti是业界很流行的java工作流引擎 关于Activiti与JBPM5的关系和如何选择不是本文要讨论的话题 相关内容可以baidu一下 Activiti从架构角度看是比较优秀的 是很面向对象的 是我所阅读过的代码结构很棒的开源软
  • Element ui table获取当前索引值 index

    使用 scope index来获取当前索引值
  • CSS/HTML静态购物网站项目源码解析(品优购)——该项目包含主页、注册页、列表页三个网页

    注 该项目所涉及的素材文件请QQ联系作者 Etui 3416252112 首先 上图 index html 主页 register html 注册页 list html 列表页 摘要 作为一个前端初学者 这是我学完html和css基础后做的
  • [Rpackage]R无法安装包的终极解决方法,附详细步骤

    作为R的新使用者 我曾经也经常碰上某些R包死活无法安装的问题 例如机器学习调参的caret包等 网上很多方法也都没法解决 除却少数个别包之外 大部分的包都支持最新的R版本 一 下载最新的R包 https cran r project org
  • Hooks API 在 Vue 中的实现分析

    作者 长峰 初次听到 React Hooks 是在其刚发布的那几天 网上铺天盖地的文章介绍它 看字面意思是 React 钩子 就想当然地理解应该是修改 React 组件的钩子吧 React 延伸的概念非常多 高阶组件 函数式 Render
  • BearPi-IoT Std学习笔记9——使用I2C读取BH1750光强度传感器数据

    1 BH1750模块 E53 SC1扩展板 BH1750FV1是两线式串行总线接口 IIC 的16位数字输出型环境光强度传感器 利用它的高分辨率可以探测较大范围内的光照强度变化 1lx 65535lx BH1750的原理图如下 2 配置 首
  • 解决XShell和Xftp远程连接Ubuntu失败,报找不到匹配的key exchange算法的错误

    我下载的linux系统是当前最新的Ubuntu 20 04的 使用的远程连接工具是XShell 5和Xftp 4 XShell可以连上 但是Xftp就一直报下图这个错误 尝试了删除ssh host的各种key 然后重新生成 重启ssh服务
  • 个人wiki搭建资料整理

    个人wiki搭建 一 大型企业级wiki Confluence Confluence是一个专业的企业知识管理与协同软件 也可以用于构建企业wiki 使用简单 但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息 文档协作 集体讨论 信息
  • Java中NIO和IO的比较

    NIO是为了弥补IO操作的不足而诞生的 NIO的一些新特性有 非阻塞I O 选择器 缓冲以及管道 管道 Channel 缓冲 Buffer 选择器 Selector 是其主要特征 概念解释 Channel 管道实际上就像传统IO中的流 到任
  • m3u8格式的视频链接怎么在自己电脑上播放

    本文接上篇文章 网页播放器 CKplayer 的视频怎么下载 m3u8简单探索 上篇文章提到 怎么到视频网站通过浏览器抓包分析 得到视频的源地址 看这篇文章之前 最好可以去先看一看上篇博文的介绍 上篇文章我们介绍到我们能够得到视频的源地址
  • SpringBoot 之数据源配置

    文章目录 市面上的几种数据源比对 SpringBoot自动装配DataSource原理 HiKariCP 数据源配置 Druid 数据源配置 SpringBoot集成Druid连接池 Druid 多数据源配置 不同Mapper操作不同数据源
  • 初等模型---光盘的数据容量

    问题分析 光盘的外观尺寸是由些大公司成立的联盟决定的 如CD DVD等盘片的外径为120mm 并且沿外边缘留有2mm宽的环形区域不存储信息 CLV光盘存储信息的内圈直径为45mm 在内外圈之间的环形区域 经过编码的数字信息 以一定深度和宽度
  • MySQL 8用户及权限管理

    文章目录 参考文档 查看权限 安装后 登录测试 添加帐户 分配特权和删除帐户 扩展 创建远程访问新用户并授权 参考文档 官方链接 https dev mysql com doc refman 8 0 en create user html