目录
- 一、用户
- 1.1 用户信息
- 1.2 创建用户
- 1.3 删除用户
- 1.4 修改用户密码
- 1.4.1 用户修改自己密码
- 1.4.2 root用户修改指定用户的密码
- 二、数据库的权限
- 2.1 查看特定用户权限
- 2.2 给用户授权
- 2.3 回收用户权限
- 结尾
一、用户
1.1 用户信息
MySQL中的用户,都存储在系统数据库mysql的user表中。
1.2 创建用户
create user '用户名'@'登陆主机/ip' identified by '密码';
上面这条命令中的登录主机为localhost或ip为127.0.0.1则为本机登录,若登录主机为%则代表该用户在任意主机上登录。
当我运行了下面这条命令以后,发现user表中确实多了一条数据。
create user 'aj'@'localhost' identified by '5201314';
1.3 删除用户
drop user '用户名'@'主机名'
当我执行完下面这条指令后,user表中确实少了一条数据。
drop user 'aj'@'localhost';
1.4 修改用户密码
1.4.1 用户修改自己密码
set password='新的密码';
alter user '用户名'@'登陆主机/ip' identified by '密码';
下面我使用aj这个用户,分别执行了下面两条命令,然后发现user表中aj的密码确实发生了改变。
set password='ABCDEFG';
alter user 'aj'@'%' identified by 'ABCD';
1.4.2 root用户修改指定用户的密码
set password for '用户名'@'主机名'='新的密码';
alter user '用户名'@'登陆主机/ip' identified by '密码';
下面我使用root用户,分别执行了下面两条命令,然后发现user表中aj的密码确实发生了改变。
set password for 'aj'@'%' ='123456789';
alter user 'aj'@'%' identified by '987654321';
二、数据库的权限
MySQL数据库提供的权限列表:
2.1 查看特定用户权限
show grants for '用户名'@'主机名';
2.2 给用户授权
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']
说明:
-
权限列表,多个权限用逗号分开
grant select on ... grant select, delete, create on .... grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限
-
*.*
: 代表本系统中的所有数据库的所有对象 -
库.*
: 表示某个数据库中的所有数据对象 -
identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户
当我在root用户下,创建了一个数据库testDB后,而在aj这个普通用户下却看不到这个库,这就是因为aj没有对应的权限。
当我在root用户下创建了一个表user,然后将表user的select权限给了aj这个用户后,我发现aj这个用户可以看见testDB这个数据库了,并且当aj这个用户进入数据库后,也能够看到user这个表了。
当我在root用户下,在user这个表中插入了一些数据以后,在aj这个普通用户下,可以查询表中的数据,但是不能向表中插入数据,也不能删除这个表,因为aj这个用户没有这些权限。
下面我将所有的权限都给了aj这个用户,从下图来看,aj这个用户确实有了查询和插入的权限,但是好像没有删除权限。实际上aj这个用户是有删除权限的,但是被其他权限限制住了,例如:权限层级问题、存在其他安全机制等,大家可以试一试具体是什么原因。
2.3 回收用户权限
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置'
下面我使用root用户将aj这个普通用户的插入权限回收以后,aj用户就不能够向表user中插入数据了。
当我回收了aj的所有权限,aj就连testDB这个数据库也看不到了。
结尾
如果有什么建议和疑问,或是有什么错误,大家可以在评论区中提出。
希望大家以后也能和我一起进步!!🌹🌹
如果这篇文章对你有用的话,希望大家给一个三连支持一下!!🌹🌹