mysql学习笔记(三)

本文详细介绍了MySQL中的用户管理与权限设置,包括用户创建、密码修改、权限分配及回收等关键操作,帮助读者掌握数据库安全控制的核心技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

19用户管理

权限表

存储账户权限信息表主要有:user、db、host、tables_priv、columns_priv、procs_priv

20账户管理

创建新用户

create user user_name //create user创建的用户没有任何权限

创建用户名Jeffery 主机名是localhost 密码为 mypass

create user 'jeffrey'@'localhost' identified by 'mypass';

密码的哈希值可以用password()函数获取

mysql>select password('mypass');

grant创建用户并赋予权限

创建一个新用户usertest,对数据中的所有表都有select update的权限

mysql>grant select,update on *.* to 'usertest'@'localhost' identified by 'mypass';

User 表中的user和host是区分大小写的,在查询的时候要指定正确得用户名或主机名。

在user表中直接插入一条数据

insert into mysql.user(Host,User,Password) values('host','user',PASSWORD('aaa'));

删除用户

mysql>drop user 'jeffery' @'localhost';

drop user 不能自动关闭任何打开的用户对话。而且,如果用户有打开的对话,此时取消用户,,命令则不会生效,直到用户对话关闭后才生效。一旦对话关闭,用户也就被取消,再次登录会显示实效。

使用delete 删除用户

mysql>delete from MySQL.user where host='localhost' and user='test';

 

(1)root用户修改自己的mysql密码

①使用mysqladmin修改

mysql>mysqladmin -u -root -h localhost -password 'rootpwd';

②使用update修改mysql用户的user表

mysql>update mysql.user Password=password('rootpwd') where User='root' and Host='localhhost';

修改完后需要使用flush privileges语句重新加载

③使用set修改root的密码

mysql>SET PASSWORD=password("rootpwd");

为了使修改生效需要重新启动mysql或者使用flush privileges语句重新加载

(2)root用户修改普通用户密码

①使用update修改普通用户的密码

mysql>update mysql.user Password=password('rootpwd') where User='username' and Host='localhhost';

②使用grant修改普通用户的密码

mysql>grant usage on *.* to 'testuser'@'localhost' identified by 'newpwd';

(3)普通用修改自己的密码

③使用set修改密码

mysql>SET PASSWORD=password("rootpwd");

(4)root用户密码丢失解决方法

①使用--skip-grant-tables选项启动mysql服务

mysqld --skip-grant-tables

mysqld-nt --skip-grant-tables

mysqld-safe --skip-grant-tables

/etc/init.d/mysql start -mysqld --skip-grant-tables(Linux下)

 

21权限管理

(1)授权

①全局层级

限适用于一个给定的服务器中的所有数据库。这些权限都存储在MYSQL.user表中。

grant all on *.* revoke all on *.*

②数据库层级

限适用于一个给定的数据库中的所有目标。这些权限存储在MYSQL.db和MYSQL.host表中。

grant all on db_name.* revoke all on db_name.*

③表层级

限适用于一个给定表中的所有列。这些权限存储在MYSQL.tables_priv表中。

grant all on db_name.table1_name revoke all on db_name.table1_name

④列层级

限适用于一个给定表中的单一列。这些权限存储在MYSQL.columns_priv表中。

当时用revoke时,必须指定与被授权列相同的列。

⑤子程序层级

create routine 、alter routine 、execute和grant适用于已存储的子程序。

除了create routine ,其他的都存储在MYSQL.procs_priv表中。

(2)要使用grant 和 revoke 必须拥有grant option权限。

(3)回收权限

revoke from

mysql>revoke update on *.* from 'testuser'@'localhost';

(4)当mysql从旧版本升到新版本时,execute、create view、show view、create user、create routine和all routine权限,必须首先升级授权表。

(5)查看权限

mysql>show grant for 'user'@'localhost';

22访问控制

用户向mysql发起请求——>mysql检查user表中的权限是否符合(是)——>mysql检查db表中的权限是否符合(是)——>mysql检查tables_priv表中的权限是否符合(是)——>mysql检查columns_prive表中的权限是否符合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值