MySQL8.0创建用户和权限控制示例详解

 更新时间:2023年07月28日 10:04:38   作者:Kason  
这篇文章主要为大家介绍了MySQL8.0创建用户和权限控制实现过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一. 创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

username:你将创建的用户名

host:指定该用户在哪个主机上可以登陆,从本地登录填localhost,任意主机登陆填通配符%

password:登陆密码,密码可以为空,如果为空则该用户可以不需要密码也可登陆

例如:

CREATE USER 'one'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'one'@'192.168.1.101' IDENDIFIED BY '123456';
CREATE USER 'one'@'%' IDENTIFIED BY '123456';
CREATE USER 'one'@'%' IDENTIFIED BY '';
CREATE USER 'one'@'%';

二. 授权

GRANT privileges ON databasename.tablename TO 'username'@'host'

说明:

privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL

databasename:数据库名,如果授予整个数据库权限填databasename.*

tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*

例子:

GRANT SELECT, INSERT ON test.user TO 'one'@'%';
GRANT SELECT, INSERT ON test.*TO 'one'@'%';
GRANT ALL ON *.* TO 'one'@'%';

用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

三.设置与更改用户密码

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是当前登陆用户用:

SET PASSWORD = PASSWORD("newpassword");

例子:

SET PASSWORD FOR 'one'@'%' = PASSWORD("123456");

四. 撤销用户权限

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

相关说明:

privilege, databasename, tablename:同授权部分

例子:

REVOKE SELECT ON *.* FROM 'one'@'%';

注意:

假如你在给用户'one'@'%'授权的时候是这样的(或类似的):

GRANT SELECT ON test.user TO 'one'@'%',

则在使用

REVOKE SELECT ON *.* FROM 'one'@'%';

命令并不能撤销该用户对test数据库中user表的SELECT 操作。

相反,如果授权使用的是

GRANT SELECT ON *.* TO 'one'@'%';
则
REVOKE SELECT ON test.user FROM 'one'@'%';

命令也不能撤销该用户对test数据库中user表的Select权限。

具体信息可以用如下查看。

SHOW GRANTS FOR 'one'@'%';

五.删除用户

DROP USER 'username'@'host';

六.遇到的问题

创建完成后用Navicat创建表遇到了报错:

Access denied; you need (at least one of) the PROCESS privilege(s)

根据提示是缺少PROCESS权限,赋予后问题解决

mysql> grant process on MyDB.* to test;
ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES

第一次授予这样的权限,错误原因是process权限是一个全局权限,不可以指定在某一个库上(个人测试库为MyDB),所以,把授权语句更改为如下即可:

mysql> grant process on *.* to test;
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

如果不给拥有授予PROESS权限 ,show processlist命令只能看到当前用户的线程,而授予了PROCESS权限后,使用show processlist就能看到所有用户的线程。官方文档的介绍如下:

SHOW PROCESSLIST shows you which threads are running. 
You can also get this information from the INFORMATION_SCHEMA PROCESSLIST table 
or the mysqladmin processlist command. 
If you have the PROCESS privilege, you can see all threads. Otherwise, 
you can see only your own threads (that is, threads associated with the 
MySQL account that you are using). If you do not use the FULL keyword,
 only the first 100 characters of each statement are shown in the Info field.

七.撤销用户的权限

REVOKE ALL ON test.* FROM 'username'@'host';

以上就是MySQL8.0创建用户和权限控制示例详解的详细内容,更多关于MySQL创建用户权限控制的资料请关注脚本之家其它相关文章!

相关文章

  • 深入探究MySQL事务实现原理

    深入探究MySQL事务实现原理

    数据库事务是指一组数据库操作,这些操作必须被视为一个不可分割的单元,要么全部执行成功,要么全部失败回滚,本文详细的给大家介绍了MySQL事务的实现原理,对我们学习MySQL有一定的帮助,感兴趣的同学可以跟着小编一起来探究
    2023-06-06
  • MySQL用limit方式实现分页的实例方法

    MySQL用limit方式实现分页的实例方法

    在本篇文章中小编给大家整理了一篇关于MySQL用limit方式实现分页的实例方法,有需要的朋友们可以参考学习下。
    2020-01-01
  • mysql时间字段默认设置为当前时间实例代码

    mysql时间字段默认设置为当前时间实例代码

    很多人可能会把日期类型的字段的类型设置为date或者datetime,
    但是这两个类型是无法设置默认值为当前日期的,下面这篇文章主要给大家介绍了关于mysql时间字段默认设置为当前时间的相关资料,需要的朋友可以参考下
    2022-08-08
  • MySQL一些常用高级SQL语句详解

    MySQL一些常用高级SQL语句详解

    对 MySQL 数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。例如只取 10 条数据、对查询结果进行排序或分组等等,今天就给大家分享MySQL一些常用高级SQL语句,感兴趣的朋友一起看看吧
    2022-06-06
  • MySQL如何为字段添加默认时间浅析

    MySQL如何为字段添加默认时间浅析

    这篇文章主要给大家介绍了关于MySQL如何为字段添加默认时间的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • MYSQL日志的正确删除方法详解

    MYSQL日志的正确删除方法详解

    这篇文章主要介绍了MYSQL日志的正确删除方法,详细分析了MySQL日志删除的步骤与相关注意事项,需要的朋友可以参考下
    2016-04-04
  • 用MySQL创建数据库和数据库表代码

    用MySQL创建数据库和数据库表代码

    了解了一些最基本的操作命令后,我们再来学习如何创建一个数据库和数据库表。
    2008-10-10
  • 详解GaussDB for MySQL性能优化

    详解GaussDB for MySQL性能优化

    GaussDB(for MySQL)数据库在写入性能上,在业界同类产品中是最好的,这主要得益于GaussDB(for MySQL)在MySQL内核方面的诸多优化。其中有一项从“送快递”得来灵感的优化——事务异步提交,值得我们分析。
    2021-05-05
  • MySQL 8.0用户和角色管理原理与用法详解

    MySQL 8.0用户和角色管理原理与用法详解

    这篇文章主要介绍了MySQL 8.0用户和角色管理,结合实例形式分析了MySQL 8.0用户和角色管理相关概念、功能、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • 浅析mysql.data.dll驱动各版本介绍

    浅析mysql.data.dll驱动各版本介绍

    本较详细的给大家介绍了mysql.data.dll驱动各版本的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-07-07

最新评论