目录
一、理论
1.用户管理
2.授权控制
二、实验
1.数据库用户管理
2.数据库用户授权
三、总结
一、理论
1.用户管理
(1)用户信息
MySQL 中的用户信息,都存储在系统数据库 mysql 的 user 表中。
use mysql;
select * from user limit 1\G
select User,Hst,authentication_string from user;
说明:
① user:用户名。
② host:表示这个用户可以从哪个主机登录(如果是 localhost,表示只能从本机登录)。
③ authentication_string:用户密码通过 password 函数加密后的。
④ *_priv:用户拥有的权限。
(2)创建用户
CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
① '用户名':指定将创建的用户名.
② '来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录,可用通配符%
③ '密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;
若使用加密密码,需要先使用SELECT PASSWORD('密码');获取密文,再在语句中添PASSWORD '密文';
④ 若省略“IDENTIFIED BY"部分,则用户的密码将为空(不建议使用)
(3)删除用户
drop user '用户名'@'登录主机';
(4)修改用户密码
# root用户修改指定用户的密码
set password for '用户名'@'登录主机'=password('新的密码');
或
update user set 密码设置的地方=password('密码') where User='用户名' and Host='登录主机';# 用户自己改自己的密码
set password=password('新的密码');
(5)重命名
RENAME USER '旧用户名'@'localhost' TO '新用户名'@'localhost';
(6)忘记密码
忘记root密码的解决办法:
修改/etc/my.cnf 配置文件,免密登陆mysql
vim /etc/my.cnf
[mysqld]
skip-grant-tables #添加,使登录mysql不使用授权表
systemctl restart mysqld
mysql #直接登录
然后使用SQL语句修改密码
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('abc123') where user='root';
FLUSH PRIVILEGES;
quit
mysql -u root -pabc123
PS:最后再把/etc/my.cnf 配置文件里的skip-grant-tables 删除,并重启mysql服务
2.授权控制
(1)MySQL 中的权限
(2)给用户授权
新创建的用户几乎没有权限,因此在创建用户后需要给用户授权。
grant 权限列表 on 库名.对象名 to '用户名'@'登录主机' [identified by '密码'];
说明:
① ‘用户名’@‘登录主机’:表示要给哪个用户赋予权限。
② 库名.对象名:表示要给用户赋予在哪个对象上的权限。
③ 权限列表:表示要给用户赋予哪种权限(若有多个权限则用逗号分隔开)。
④ identified by ‘密码’:可选项。如果该用户存在,则在赋予权限的同时修改该用户的密码;如果该用户不存在,则创建该用户。
如果发现赋予权限后,没有生效,则执行命令flush privileges;
,但实际上该命令并没有什么效果。
实际上最有用的方法就是,直接退出重新登录,这样必定会生效。
(3)回收权限
revoke 权限列表 on 库名.对象名 from '用户名'@'登录主机';
(4)授权用户权限
表1 授权用户权限
序号 | 权限 |
1 | insert(插入数据) |
2 | select(查询数据) |
3 | update(更新表的数据) |
4 | delete (删除表中的数据) |
5 | drop (删除库 和表) |
6 | cerate (创建库,表) |
7 | index (创建索引) |
8 | alter (更改表的属性) |
9 | create view (创建视图) |
10 | create routine (创建存储过程) |
11 | alter routine (修改存存储过程) |
12 | event (事件) |
13 | trigger on (创建触发器) |
二、实验
1.数据库用户管理
(1)新建用户
(2)查看用户
(3)重命名
(4)删除用户
(5)修改当前密码
SET PASSWORD = PASSWORD('abc123');
(6)修改其他用户密码
SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('abc123T);
SET PASSWORD FOR 'david'@'localhost' = PASSWORD('abc123T);
2.数据库用户授权
(1)授予权限
(2)查看权限
(3)撤销权限
三、总结
MySQL 中的用户信息,都存储在系统数据库 mysql 的 user 表中。
如果发现赋予权限后,没有生效,则执行命令flush privileges;