首页 > 数据库 >MySQL 8用户及权限管理

MySQL 8用户及权限管理

时间:2023-12-27 16:24:49浏览次数:32  
标签:password grant privileges MySQL 用户 user mysql 权限 root

官方链接:
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;
安装后,登录测试
先登录,

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;

————————————————
版权声明:本文为CSDN博主「拾年一剑」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014163312/article/details/120480273

 

标签:password,grant,privileges,MySQL,用户,user,mysql,权限,root
From: https://www.cnblogs.com/qingzhen/p/17930786.html

相关文章

  • MySQL 事务的基础知识
    事务的基础知识1.数据库事务概述事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库中的数据始终保持一致性,同时我们还能通过事务的机制恢复到某个时间地点的数据,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失。1.1存储引擎的支持情况查询当......
  • 麒麟下mysql安装及使用
    1、进入软件商店--搜索mysql--安装mysql服务器和mysql工作台,重新启动系统;2、检测mysql版本:显示mysqlver8.0.33终端命令:mysql--version 3、启动mysql服务进程终端命令:sudosystemctlmysql4、查看服务状态终端命令:sudosystemctlstatusmysql按esc--:q退出vim返回终......
  • 20 mysql 隔离性的底层原理
    隔离性的原理:1.0隔离性是通过锁机制实现的。当一个事务修改数据时,需要先获取锁。其它事务要修改数据,必须等待之前的事务提交或者回滚,然后释放锁操作之后。myisam只支持表锁,innodb支持表锁和行锁。因为表锁比较影响性能,所以通常情况下,使用行锁就可以了。2.0隔离性的另外一个方面,就是......
  • 18-mysql索引
    一、b+树每次查找数据时把磁盘IO次数控制在一个很小的数量级,最好是常数数量级。那么我们就想到如果一个高度可控的多路搜索树是否能满足需求呢?就这样,b+树应运而生(B+树是通过二叉查找树,再由平衡二叉树,B树演化而来)。1.索引字段要尽量的小:通过上面的分析,我们知道IO次数取决于b+数......
  • 权限组件
    权限组件的书写例:书写权限组件(CommonPermission)第一步:新建一个py文件(以permission为例)第二步:书写认证类,并继承继承BasePermission#首先导入模块fromrest_framework.permissionsimportBasePermission#书写权限类,重写has_permission方法classCommonPermission(BasePe......
  • 17--MySQL优化
    MySQL优化一、优化工具:1、系统优化工具1.1 top (1)简介: 实时监控当前操作系统的负载情况的,每秒刷新一次状态,通常会关注三大指标(CPU、MEM、IO) (2)评判标准 (2.1) 整体的负载情况,判断标准,如果值非常高,只能告诉我们操作系统很繁忙 load average: 0.00, 0.00, 0.00 ......
  • 11-MySQL 存储引擎
    MySQL存储引擎可以理解为,MySQL的“文件系统”,(插件形式存在)只不过功能更加强大。mysql提供的存储引擎有InnoDB、MyISAM等TokuDB是第三方的存储引擎moardb,数据压缩比打,写入数据快,如果你的应用是读多写少的情况强烈建议使用此存储引擎innodb存储引擎的功能一、查看存储引擎1......
  • 13-Mysql备份恢复
    一、备份的类型冷备份:关闭数据、停止业务温备份:加锁备份热备份:在先备份,不会影响到也正常运行二、备份方式2.1逻辑备份:基于SQL语句的备份mysqldump建库、建表、数据插入基于二进制日志:数据库的所有变化类的操作基于复制的备份:将二进制日志实时传送到另一台机器并且恢复......
  • 面试官:MySQL 到底是 join 性能好,还是 in 一下更快呢?被问懵逼了…
    来源:https://juejin.cn/post/7169567387527282701先总结:数据量小的时候,用join更划算数据量大的时候,join的成本更高,但相对来说join的速度会更快数据量过大的时候,in的数据量过多,会有无法执行SQL的问题,待解决事情是这样的,去年入职的新公司,之后在代码review的时候被提出说,不要......
  • 12-Mysql的日志管理
    一、mysql常见日志二、错误日志配置方法:[mysqld]log-error=/data/mysql/mysql.log查看配置方式:mysql>showvariableslike'%log%error%';作用:记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志,默认在data目录下三、一般查询......