数据库应用:MySQL数据库用户管理

目录

一、理论

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 授权用户权限

序号权限
1insert(插入数据)
2select(查询数据)
3update(更新表的数据)
4delete (删除表中的数据)
5drop     (删除库 和表)
6cerate  (创建库,表)
7index    (创建索引)
8alter     (更改表的属性)
9create view  (创建视图)
10create routine  (创建存储过程)
11alter routine   (修改存存储过程)
12event        (事件)
13trigger 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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值