«

MYSQL8.0新建用户并授予权限流程(mysql为数据库指定登录用户)

时间:2024-2-21 13:25     作者:韩俊     分类: Mysql


登录(这里用的是root账号)

mysql -u root -p

MYSQL8.0新建用户并授予权限流程(mysql为数据库指定登录用户)

进入到mysql数据库

use mysql;

MYSQL8.0新建用户并授予权限流程(mysql为数据库指定登录用户)

查看当前的用户以及可访问的地址是否有授权能力

select user,host,grant_priv from mysql.user;

MYSQL8.0新建用户并授予权限流程(mysql为数据库指定登录用户)

如果root用户无授权能力(grant_priv = 'N'),则可以开起来,及将该字段的值设置为 Y

update mysql.user set Grant_priv='Y' where user='root';

MYSQL8.0新建用户并授予权限流程(mysql为数据库指定登录用户)

创建用户,最后的参数是密码。‘localhost’表示只能本机登录,也可以设置你期望的登录ip,不设置的话默认是‘%’,即不限制登录ip来源

create user 'happytest'@'localhost' identified by '123456';

MYSQL8.0新建用户并授予权限流程(mysql为数据库指定登录用户)

或者:

create user 'happytest' identified by '123456';#不限制登录ip

MYSQL8.0新建用户并授予权限流程(mysql为数据库指定登录用户)

创建完新用户,我们可以通过下面的命令查看该用户当前有哪些权限:

SHOW GRANTS FOR 'chatGPT';

或者:

SHOW GRANTS FOR 'chatGPT'@'%';

或者:

SHOW GRANTS FOR 'chatGPT'@'localhost';

显示的结果将如下:

mysql> SHOW GRANTS FOR 'chatGPT';
+-------------------------------------+
| Grants for chatGPT@%                |
+-------------------------------------+
| GRANT USAGE ON *.* TO `chatGPT`@`%` |
+-------------------------------------+
1 row in set (0.11 sec)

这里 GRANT USAGE ON ...... 的意思是授予 chatGPT 用户在所有数据库和所有表中的所有权限。% 符号表示该用户可以从任何主机连接到 MySQL 服务器。USAGE 权限是最基本的权限,它允许用户连接到 MySQL 服务器,但是不能执行任何操作。

给新用户授权,这里授予的权限是只能操作一个数据库(数据库名为:happy_db,把数据库名变成 *.* 就是给所有数据库的权限)(如果root用户只允许localhost登录,而这里授权的时候又给用户授予不管任何地址都可以登录的能力,则会报无权限的错。此时需要把root用户也改成‘%’的登录限制才行,也就是说,授权者的可登录源ip范围应该 ≥ 被授权者的可登录源ip范围)

grant all privileges on happy_db.* to 'happytest'@'localhost';

如果数据库还未创建可新创建数据库:

create database `travel_db` default character set utf8mb4 collate utf8mb4_unicode_ci;

登录限制超过授权者报错示例

写错被授权用户的名称也是一样的报错

授权成功案例

本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问

flush privileges;

删除对应的用户(且为只能以该方式登录的用户)

drop user happytest@localhost;

删除成功

不指定登录限制ip就是将所有叫这个名的全部删除

标签: mysql

热门推荐