MySQL 中的用户都存储在系统数据库 mysql 的 user 表中,如下所示:

select host,user,authentication_string from user;create user [if not exists] '用户名'@'主机名' identified by '密码';可能实际在设置密码的时候,因为
mysql本身的认证等级比较高,一些简单的密码无法设置,会爆出如下报错:ERROR 1819 (HY000): Your password does not satisfy the current policyrequirements 解决方案:https://blog.csdn.net/zhanaolu4821/article/details/93622812 查看密码设置相关要求:show variables like 'validate_password%';
☠ 注意事项:
'user_name'@'%',% 表示所有主机都可以连接到数据库,但是强烈建议不要这样设置,因为会导致严重的安全问题。198.0.0.0/255.0.0.0:表示 A 段网络中的任意一台主机198.51.0.0/255.255.0.0:198.51:表示 B 段网络中的任意一台主机198.51.100.0/255.255.255.0:198.51.100:表示 C 段网络中的任意一台主机198.51.100.1:只包含特定 IP 地址的主机MySQL8.0.23 开始,指定为 IPv4 地址的主机值可以使用 CIDR 表示法写入,例如 198.51.100.44/24IP 地址中使用 % 通配符,比如主机值 % 匹配任何主机名,198.51.100.% 匹配 198.51.100 表示 C 段网络中的任何主机。但是 MySQL8.0.35 中已弃用,以后可能会删除。# root使用的指令
alter user '用户名'@'主机名' identified BY '新密码';
# 普通用户使用的指令
set password = password('新密码');drop user '用户名'@'主机名';MySQL 内置权限下图是 MySQL 内置支持的权限列表:

show grants for '用户名'@'主机名';
或
select * from information_schema.USER_PRIVILEGES where GRANTEE = "'用户名'@'主机名'";grant 权限类型 on 权限层级 to '用户名'@'主机名' [WITH GRANT OPTION];权限类型:指要授予的具体权限,比如 SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)等,也可以是 ALL PRIVILEGES(所有权限)。ON 权限层级:指定权限的作用范围,可以是:database.*,表示对指定数据库的所有表。database.table,表示对指定数据库中的特定表。database.table(column),表示对指定表的特定列。TO '用户名'@'主机名':'用户名':指定要授予权限的用户。'主机名':指定用户可以从哪些主机连接到数据库。可以是具体的主机名(如localhost)、IP地址(如192.168.1.1),也可以是%(表示任何主机)。[WITH GRANT OPTION](可选部分):WITH GRANT OPTION,表示被授权的用户不仅可以使用这些权限,还可以将这些权限授予其他用户。权限名称 | 描述 |
|---|---|
SELECT | 允许用户从表中检索数据 |
INSERT | 允许用户向表中插入数据 |
UPDATE | 允许用户更新表中的数据 |
DELETE | 允许用户删除表中的数据 |
CREATE | 允许用户创建新的数据库、表、视图等 |
DROP | 允许用户删除数据库、表、视图等 |
ALTER | 允许用户修改表的结构,如添加、删除或修改列 |
INDEX | 允许用户创建或删除索引 |
ALTER ROUTINE | 允许用户修改存储过程或函数 |
CREATE ROUTINE | 允许用户创建存储过程或函数 |
EXECUTE | 允许用户执行存储过程或函数 |
FILE | 允许用户读取或写入服务器上的文件 |
GRANT OPTION | 允许用户将自己拥有的权限授予其他用户 |
REFERENCES | 允许用户创建外键约束 |
RELOAD | 允许用户重新加载MySQL服务器的配置文件 |
SHUTDOWN | 允许用户关闭MySQL服务器 |
PROCESS | 允许用户查看当前运行的线程和查询 |
SUPER | 允许用户执行一些高级操作,如杀死线程、更改全局变量等 |
REPLICATION SLAVE | 允许用户从主服务器复制数据 |
REPLICATION CLIENT | 允许用户查看主从复制的配置信息 |
举个例子:假设有一个数据库叫mydb,一个用户叫user1,主机名是localhost,要授予user1对mydb数据库的所有权限,并且允许他将权限授予其他用户,代码如下所示:
GRANT ALL PRIVILEGES ON mydb.* TO 'user1'@'localhost' WITH GRANT OPTION;这里的权限类型和权限层级和上面是一样的!
revoke 权限类型 on 权限层级 from '用户名'@'主机名';flush privileges;原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。