头图

  在MySQL数据库中,用户信息、用户的密码、删除用户及分配权限等就是存储在MySQL数据库的"mysql.user"表中。下面展示了该表的部分字段信息:

在这里插入图片描述

  数据库安装配置成功后,MySQL就创建了几个默认的用户。下表列举了这些用户以及他们的作用。
在这里插入图片描述

  视频讲解如下:
https://www.bilibili.com/video/BV1Cs421u7qW/?aid=1855704948&c...

一、创建MySQL的用户

  在MySQL中,我们可以使用"create user"语句创建一个新的MySQL用户。下面通过一个具体的示例来演示如何在MySQL中创建用户。

(1)使用root用户登录MySQL

(2)创建一个新的用户user002。

mysql> create user user002 identified by 'Welcome_1';
  提示:这里的密码使用了明文的形式进行创建。为了更加安全地保护用户的密码,在创建用户时,可以使用密文的形式。在MySQL 8中使用sha1()函数可以生成密码的对应密文。例如:
select sha1('Welcome_1');

  输出的信息如下:

+------------------------------------------+
| sha1('Welcome_1')                        |
+------------------------------------------+
| d809d427528be8821658f2013dedf69dbe0f23de |
+------------------------------------------+

(3)查询"mysql.user"表中的信息。

mysql> use mysql;

mysql> select host,user from user where user='user002';

  输出的信息如下:

+------+---------+
| host | user    |
+------+---------+
| %    | user002 |
+------+---------+
  提示:此时用户user002不具备任何的权限。

(4)使用user002登录MySQL数据库,并查看当前实例上的数据库信息。

mysql -uuser002 -pWelcome_1

mysql> show databases;

  输出的信息如下:

+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
  提示:从上面的输出可以看出,用户user002只能访问information_schema。

二、重命名MySQL用户

  在MySQL中,我们可以使用"rename user"语句修改一个或多个已经存在的MySQL用户。下面通过一个具体的步骤来演示如何使用该语句 。

(1)查看"rename user"的使用帮助信息。

mysql> help rename user;

  输出的信息如下:

Name: 'RENAME USER'
Description:
Syntax:
RENAME USER old_user TO new_user[, old_user TO new_user] ...

  其中:

  • old_user:MySQL中已存在的用户。
  • new_user:新的MySQL用户。

(2)将user002用户重命名为user003。

mysql> rename user user002 to user003;
  提示:若MySQL数据库中的旧用户不存在或者新用户已存在,该语句执行时会出现错误。使用"rename user"语句,必须拥有MySQL数据库的 update权限或全局"create user"权限。

三、删除MySQL用户

  当一个用户不再被使用时,可以使用"drop user"语句将该用户进行删除。例如:

mysql> drop user user003;
  提示:这里也可以直接从"mysql.user"表中进行删除。
mysql> use mysql;
mysql> delete from user where user='user003';

赵渝强老师
33 声望12 粉丝

20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大...