博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql学习笔记(三)
阅读量:4079 次
发布时间:2019-05-25

本文共 2536 字,大约阅读时间需要 8 分钟。

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表中的权限是否符合

转载地址:http://ydsni.baihongyu.com/

你可能感兴趣的文章
大数据框架:Spark 生态实时流计算
查看>>
大数据入门:Hive和Hbase区别对比
查看>>
大数据入门:ZooKeeper工作原理
查看>>
大数据入门:Zookeeper结构体系
查看>>
大数据入门:Spark RDD基础概念
查看>>
大数据入门:SparkCore开发调优原则
查看>>
大数据入门:Java和Scala编程对比
查看>>
大数据入门:Scala函数式编程
查看>>
【数据结构周周练】002顺序表与链表
查看>>
C++报错:C4700:使用了非初始化的局部变量
查看>>
【数据结构周周练】003顺序栈与链栈
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>
C++ goto语句详解
查看>>
【数据结构周周练】008 二叉树的链式创建及测试
查看>>
《软件体系结构》 第九章 软件体系结构评估
查看>>
《软件体系结构》 第十章 软件产品线体系结构
查看>>
《软件过程管理》 第六章 软件过程的项目管理
查看>>
《软件过程管理》 第九章 软件过程的评估和改进
查看>>
分治法 动态规划法 贪心法 回溯法 小结
查看>>
《软件体系结构》 练习题
查看>>